Best VPS for Plausible Analytics 2026: Self-Host Privacy-First Analytics
REVIEW 12 min read fordnox

Best VPS for Plausible Analytics 2026: Self-Host Privacy-First Analytics

Find the best VPS for self-hosting Plausible Analytics. Complete setup guide with Docker, ClickHouse, PostgreSQL, and reverse proxy configuration.


Best VPS for Plausible Analytics in 2026

Plausible is a lightweight, open-source, privacy-friendly alternative to Google Analytics. No cookies, no personal data collection, and a dashboard that fits on one screen. Self-hosting it costs a fraction of Plausible Cloud — and you own every byte of data.

Why Self-Host Plausible?

Why Self-Host Plausible?

Why Self-Host Plausible?

FactorGoogle AnalyticsPlausible (Self-Hosted)
CostFree (you pay with data)~$5-10/mo (VPS only)
PrivacyTracks everythingNo cookies, no PII
GDPRConsent banner requiredNo consent needed
Data OwnershipGoogle’s serversYour server
Script Size~45KB~1KB
DashboardComplex, overwhelmingSimple, one page
SetupMinutes30 minutes (Docker)

Plausible gives you pageviews, referrers, countries, devices, and goals — without the surveillance capitalism.

VPS Requirements

Plausible runs two databases — PostgreSQL for configuration and ClickHouse for analytics data. This makes it hungrier than simpler tools like Umami.

Minimum:

Recommended (up to 500K pageviews/month):

High Traffic (1M+ pageviews/month):

ClickHouse is the main resource consumer. It’s fast, but it likes RAM.

Best VPS for Plausible

1. Hetzner CX22 (Best Value)

€4.35/mo | 2 vCPU, 4GB RAM, 40GB NVMe

The sweet spot. Enough RAM for both PostgreSQL and ClickHouse, with plenty of storage for analytics data. European data centers keep your data GDPR-friendly by default.

2. Hostinger KVM2 (Best Budget)

$6.99/mo | 2 vCPU, 8GB RAM, 100GB NVMe

More RAM and storage than you’ll need for most sites. Great headroom for growth without upgrading.

3. Vultr (Best Global Coverage)

$12/mo | 2 vCPU, 2GB RAM, 50GB

32 data center locations worldwide. Host analytics close to your audience for faster script loading. Tight on RAM at 2GB — monitor ClickHouse usage.

4. DigitalOcean (Best Ecosystem)

$12/mo | 2 vCPU, 2GB RAM, 50GB

Solid docs, managed databases available if you want to offload PostgreSQL. One-click backups built in.

5. Contabo (Best for High Traffic)

€6.99/mo | 4 vCPU, 8GB RAM, 100GB SSD

If you’re tracking millions of pageviews, Contabo’s generous specs make sense. Slightly slower disks than NVMe competitors.

Complete Setup Guide

Step 1: Create Your VPS

Using Hetzner as example:

  1. Sign up at Hetzner Cloud
  2. Create server → Ubuntu 24.04 → CX22
  3. Add SSH key
  4. Note the IP address

Step 2: DNS Setup

Point your domain:

A    analytics.yourdomain.com → your-server-ip

Step 3: Initial Server Setup

ssh root@your-server-ip

# Update system
apt update && apt upgrade -y

# Install Docker
curl -fsSL https://get.docker.com | sh

# Create user
adduser plausible
usermod -aG docker plausible

# Setup firewall
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

Step 4: Clone Plausible Hosting Repo

Plausible provides an official self-hosting repository:

su - plausible
git clone https://github.com/plausible/community-edition plausible-ce
cd plausible-ce

Step 5: Configure Environment

Create a plausible-conf.env file:

# Generate a secret key
SECRET_KEY_BASE=$(openssl rand -base64 48)

cat > plausible-conf.env << EOF
BASE_URL=https://analytics.yourdomain.com
SECRET_KEY_BASE=$SECRET_KEY_BASE
TOTP_VAULT_KEY=$(openssl rand -base64 32)
EOF

Step 6: Add Reverse Proxy

Create a docker-compose.override.yml to add Caddy:

services:
  caddy:
    image: caddy:alpine
    restart: unless-stopped
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data
      - caddy_config:/config

  plausible:
    ports: !override
      - 127.0.0.1:8000:8000

volumes:
  caddy_data:
  caddy_config:

Create Caddyfile:

analytics.yourdomain.com {
    reverse_proxy plausible:8000

    encode gzip

    header {
        Strict-Transport-Security "max-age=31536000; includeSubDomains"
        X-Content-Type-Options "nosniff"
        X-Frame-Options "DENY"
    }
}

Step 7: Launch

docker compose -f docker-compose.yml -f docker-compose.override.yml up -d

Wait 60 seconds for ClickHouse and PostgreSQL to initialize.

Step 8: Create Your Account

  1. Open https://analytics.yourdomain.com
  2. Register with your email
  3. Add your first website
  4. Copy the tracking snippet

Step 9: Add Tracking Script

Add to your site’s <head>:

<script defer data-domain="yourdomain.com"
  src="https://analytics.yourdomain.com/js/script.js"></script>

Done. No cookie consent popup needed.

Tracking Script Extensions

Plausible offers script variants for extra features:

<!-- Track outbound link clicks -->
<script defer data-domain="yourdomain.com"
  src="https://analytics.yourdomain.com/js/script.outbound-links.js"></script>

<!-- Track file downloads -->
<script defer data-domain="yourdomain.com"
  src="https://analytics.yourdomain.com/js/script.file-downloads.js"></script>

<!-- Track 404 pages -->
<script defer data-domain="yourdomain.com"
  src="https://analytics.yourdomain.com/js/script.tagged-events.js"></script>

<!-- Combine multiple extensions -->
<script defer data-domain="yourdomain.com"
  src="https://analytics.yourdomain.com/js/script.outbound-links.file-downloads.js"></script>

Custom Goal Tracking

Set up conversion goals in the Plausible dashboard:

// Track a custom event
plausible('Signup');

// Track with custom properties
plausible('Purchase', { props: { plan: 'Pro', price: '29' } });

// Track form submissions
document.getElementById('contact-form').addEventListener('submit', function() {
  plausible('Contact Form');
});

Then create a matching goal in Settings → Goals.

Google Analytics Import

Migrating from Google Analytics? Plausible can import your historical data:

  1. Go to Settings → Imports & Exports
  2. Click “Import from Google Analytics”
  3. Authenticate with Google
  4. Select the property to import

Your historical data appears alongside new Plausible data — no gaps in your charts.

Performance Tuning

ClickHouse Optimization

For high-traffic sites, tune ClickHouse memory limits in clickhouse/clickhouse-config.xml:

<clickhouse>
    <profiles>
        <default>
            <max_memory_usage>1000000000</max_memory_usage>
            <max_bytes_before_external_group_by>500000000</max_bytes_before_external_group_by>
        </default>
    </profiles>
</clickhouse>

PostgreSQL Tuning

Add to your Docker Compose override:

plausible_db:
  command:
    - "postgres"
    - "-c"
    - "shared_buffers=256MB"
    - "-c"
    - "effective_cache_size=512MB"

Backup Strategy

Back up both databases. Losing ClickHouse data means losing all your analytics.

Automated Backup Script

Create backup.sh:

#!/bin/bash
BACKUP_DIR="/home/plausible/backups"
DATE=$(date +%Y%m%d_%H%M%S)

mkdir -p $BACKUP_DIR

# Backup PostgreSQL
docker exec plausible-ce-plausible_db-1 pg_dump -U postgres plausible \
  | gzip > $BACKUP_DIR/postgres_$DATE.sql.gz

# Backup ClickHouse
docker exec plausible-ce-plausible_events_db-1 \
  clickhouse-client --query "SELECT * FROM plausible_events_db.events_v2 FORMAT Native" \
  | gzip > $BACKUP_DIR/clickhouse_events_$DATE.gz

# Keep last 14 backups
ls -t $BACKUP_DIR/postgres_*.gz | tail -n +15 | xargs -r rm
ls -t $BACKUP_DIR/clickhouse_*.gz | tail -n +15 | xargs -r rm

Schedule with cron:

crontab -e
# Add:
0 3 * * * /home/plausible/backup.sh

Plausible vs Alternatives

FeaturePlausibleUmamiMatomo
Script Size~1KB~2KB~22KB
RAM Usage~500MB~200MB~1GB+
DatabaseClickHouse + PostgreSQLPostgreSQLMySQL
Cookie-freeOptional
GA Import
Revenue Tracking
Custom Props
Self-host DifficultyMediumEasyMedium
Free Self-host✅ (Community Ed.)

Plausible offers more features than Umami — GA import, revenue tracking, funnel analysis — at the cost of higher resource usage.

Multiple Sites

Track multiple domains from a single Plausible installation:

  1. Settings → Sites → Add Site
  2. Each site gets its own tracking snippet
  3. All data stays separated in the dashboard

A single 4GB VPS can handle 5-10 low-traffic sites comfortably.

API Access

Plausible has a comprehensive stats API:

# Get visitors for today
curl "https://analytics.yourdomain.com/api/v1/stats/realtime/visitors?site_id=yourdomain.com" \
  -H "Authorization: Bearer your-api-key"

# Get aggregate stats
curl "https://analytics.yourdomain.com/api/v1/stats/aggregate?site_id=yourdomain.com&period=30d&metrics=visitors,pageviews,bounce_rate" \
  -H "Authorization: Bearer your-api-key"

# Get top pages
curl "https://analytics.yourdomain.com/api/v1/stats/breakdown?site_id=yourdomain.com&period=30d&property=event:page&limit=10" \
  -H "Authorization: Bearer your-api-key"

Generate API keys in Settings → API Keys.

Updating Plausible

cd /home/plausible/plausible-ce

# Pull latest
git pull
docker compose pull

# Restart
docker compose up -d

# Clean old images
docker image prune -f

Plausible runs database migrations automatically on startup.

Security Tips

1. Disable Public Registration

After creating your account, add to plausible-conf.env:

DISABLE_REGISTRATION=true

2. Use HTTPS Only

The Caddy setup handles this with automatic Let’s Encrypt certificates.

3. Restrict Admin Access

Use Tailscale or a WireGuard VPN for admin panel access.

4. Keep Updated

Pull new images at least monthly. Plausible gets regular security and feature updates.

Resource Usage

Typical Plausible footprint:

ComponentRAMCPU
Plausible (Elixir)~150MBLow
PostgreSQL~100MBLow
ClickHouse~250MBSpiky on queries
Total~500MB~5% idle

Heavier than Umami but lighter than Matomo. You can still share the VPS with lightweight services like Vaultwarden.

FAQ

Does Plausible use cookies?

No. Plausible is 100% cookie-free. No GDPR consent banner needed.

How does it count unique visitors without cookies?

A daily-rotating hash of IP address + User-Agent. No cross-day or cross-site tracking is possible.

Can I use Plausible with a CDN?

Yes. The tracking script works fine behind Cloudflare or any CDN. You can also proxy the script through your own domain to avoid ad blockers.

Is the Community Edition the same as Plausible Cloud?

Almost. The Community Edition has all core features. Some enterprise features like Funnels and custom properties are available in both.

How much disk space does ClickHouse use?

ClickHouse compresses data aggressively. Expect roughly 1GB per 10 million pageviews stored.

Use CaseVPSMonthly Cost
Personal / Small SiteHetzner CX22€4.35
Multiple SitesHostinger KVM2$6.99
High TrafficContabo VPS M€6.99

Start with Hetzner CX22 — €4.35/month for privacy-first analytics. Cheaper than Plausible Cloud ($9/mo for 10K pageviews) and you own the data completely.

~/best-vps-for-plausible/get-started

Ready to get started?

Get the best VPS hosting deal today. Hostinger offers 4GB RAM VPS starting at just $4.99/mo.

Get Hostinger VPS — $4.99/mo

// up to 75% off + free domain included

// related topics

best vps for plausible plausible analytics hosting self-hosted plausible plausible vps setup privacy analytics vps

// related guides

Andrius Putna

Andrius Putna

I am Andrius Putna. Geek. Since early 2000 in love tinkering with web technologies. Now AI. Bridging business and technology to drive meaningful impact. Combining expertise in customer experience, technology, and business strategy to deliver valuable insights. Father, open-source contributor, investor, 2xIronman, MBA graduate.

// last updated: March 8, 2026. Disclosure: This article may contain affiliate links.