Self-host Plausible vs Plausible Cloud: which path makes sense

TL;DR

Self-hosting Plausible CE gives you full data ownership and no monthly fee, but you are trading roughly two to four hours of setup time and ongoing server maintenance for that freedom. Plausible Cloud costs $9/month for up to 10k pageviews and takes about ten minutes to go live. You need either a Linux VPS with 1 GB RAM (for self-hosting) or a credit card (for Cloud), plus a domain you control.


What You Need Before You Start

Before you touch any config file or billing page, gather these:

  • A domain or subdomain you control — e.g. stats.yourdomain.com. You will point this at your Plausible instance.
  • For Cloud path: a Plausible Cloud account (free trial available at plausible.io, no credit card required for trial).
  • For self-host path:
  • A VPS running Ubuntu 22.04 or 24.04 LTS — Hetzner CX22 (2 vCPU, 2 GB RAM) is the most common choice and costs about $4/month.
  • Docker Engine 25.x or later and Docker Compose v2.24 or later installed on that server.
  • A registered domain with DNS you can edit (Cloudflare free tier works fine).
  • An SMTP service for email confirmations — Resend free tier (3,000 emails/month) or Postmark work well.
  • Optional: Terraform or Ansible if you want reproducible infra. Not required for a single site.
  • Your current analytics snippet (Google Analytics, Fathom, whatever) so you know where to swap it out.

Step 1: Decide Which Path Actually Fits You

This is the step most guides skip, and skipping it causes the most regret.

Plausible Cloud is right for you if: you run one to three sites, you do not want to manage servers, your traffic is under 1 million pageviews per month, and you are fine paying $9 to $69/month depending on volume. You get automatic updates, daily backups, and zero ops work.

Self-hosting Plausible CE is right for you if: you have multiple sites and the Cloud pricing would stack up past $30/month, you operate in a jurisdiction where sending analytics data to a third-party server is legally awkward (think healthcare or finance in the EU), or you already run a VPS for other things and the marginal cost is near zero.

Write your answer down before continuing. Picking a path and then second-guessing it halfway through setup wastes more time than either option costs.

Sanity check: you should now have a clear one-sentence answer: “I’m going Cloud” or “I’m self-hosting.”


Step 2: Set Up Plausible Cloud (Cloud Path Only)

If you chose Cloud, this is the bulk of your work.

Go to plausible.io and register. After email confirmation, click “Add website” in the top nav. Enter your domain name exactly as it appears in your browser bar — no trailing slash, no https:// prefix. Set your reporting timezone.

Plausible generates a tracking snippet that looks like this:

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

Copy that snippet. You will paste it into your site in Step 7.

No server configuration, no firewall rules, no SSL certificate to manage. Plausible Cloud handles all of that. Your 30-day free trial starts now, so you have time to verify traffic is flowing before entering payment details.

Sanity check: the Plausible dashboard should show your site listed with a “Waiting for first pageview” status.


Step 3: Provision a VPS (Self-Host Path Only)

Spin up an Ubuntu 24.04 server with at least 2 GB RAM. Hetzner, DigitalOcean, and Vultr all have one-click Ubuntu images. Assign a static IP to your server.

Create a non-root user and add it to the sudo group:

adduser plausible
usermod -aG sudo plausible
su - plausible

Open ports 80 and 443 in your firewall. On Ubuntu with ufw:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 22/tcp
sudo ufw enable

Write down your server’s public IP address. You will need it in the next step.

Sanity check: running ufw status should show ports 22, 80, and 443 as ALLOW.


Step 4: Install Docker and Docker Compose (Self-Host Only)

SSH into your server as your non-root user. Install Docker using the official convenience script:

curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
newgrp docker

Verify Docker Compose v2 is available:

docker compose version
# should print: Docker Compose version v2.24.x or higher

If your VPS image ships with the older docker-compose (with a hyphen), that is v1 and it will break the Plausible config. Uninstall it and use the plugin version bundled with Docker Engine 25+.

Sanity check: docker run hello-world should complete without errors and print “Hello from Docker!”


Step 5: Clone and Configure Plausible CE (Self-Host Only)

Clone the official hosting repo:

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

Copy the sample env file and open it:

cp plausible-conf.env.example plausible-conf.env
nano plausible-conf.env

Set these three values at minimum:

BASE_URL=https://stats.yourdomain.com
SECRET_KEY_BASE=<output of: openssl rand -base64 48>
TOTP_VAULT_KEY=<output of: openssl rand -base64 32>

If you have SMTP, also fill in MAILER_EMAIL, SMTP_HOST_ADDR, SMTP_HOST_PORT, SMTP_USER_NAME, and SMTP_USER_PWD. Without SMTP you can still create accounts, but password resets will not work.

Do not expose this file publicly. Add it to .gitignore if you version-control your server config.

Sanity check: cat plausible-conf.env should show your real domain and a long random string for SECRET_KEY_BASE, not the placeholder text.


Step 6: Point DNS and Launch the Stack (Self-Host Only)

In your DNS provider (Cloudflare, Route 53, Namecheap, wherever), add an A record:

stats.yourdomain.com  →  <your server IP>  TTL 300

With Cloudflare, set the proxy to DNS-only (grey cloud) for now. Plausible’s bundled Caddy web server handles TLS automatically and it needs a direct connection to Let’s Encrypt for the certificate challenge.

Once DNS propagates (check with dig stats.yourdomain.com), start the stack:

docker compose up -d

Caddy will provision a TLS certificate automatically on first startup. Watch the logs:

docker compose logs -f caddy

You should see a line like certificate obtained successfully within 60 seconds.

Sanity check: visiting https://stats.yourdomain.com in your browser should load the Plausible login page with a valid HTTPS padlock.


Step 7: Create Your Account and Add Your First Site

Whether you are on Cloud or self-hosted, this step is the same.

Open your Plausible URL and register. On self-hosted CE, the first registration becomes the admin. On Cloud, you already did this in Step 2.

Click “+ Add website” and enter your site’s domain. Plausible generates your tracking snippet. Copy it.

Paste the snippet into the <head> of every page you want to track. In WordPress, use a plugin like Insert Headers and Footers. In Next.js, add it to your _document.tsx <Head>. In Webflow, paste it under Project Settings > Custom Code > Head Code.

<!-- Self-hosted version points to your own domain -->
<script defer data-domain="yourdomain.com"
  src="https://stats.yourdomain.com/js/script.js"></script>

Visit your own site once in a private browser window to fire the first event.

Sanity check: the Plausible dashboard should flip from “Waiting for first pageview” to showing 1 unique visitor within about 30 seconds.


Step 8: Set Up Backups and Updates (Self-Host Only)

Cloud users skip this. Self-hosters own their data, which means they also own their backup plan.

Plausible CE stores data in ClickHouse. The Docker volume is at /var/lib/docker/volumes/plausible_event-data. Back it up daily with a cron job that copies the volume to object storage:

# Add to crontab: crontab -e
0 3 * * * docker run --rm -v plausible_event-data:/data \
  -v /home/plausible/backups:/backup \
  ubuntu tar czf /backup/plausible-$(date +%Y%m%d).tar.gz /data

To update Plausible CE, pull new images and restart:

cd ~/plausible
docker compose pull
docker compose up -d

Plausible CE releases roughly every six to eight weeks. Set a calendar reminder to check the GitHub releases page monthly.

Sanity check: /home/plausible/backups/ should contain a .tar.gz file after the first cron run.


Step 9: Compare Ongoing Cost and Complexity

Run this quick comparison once you are live.

For Cloud, your monthly bill scales with pageviews: $9 for up to 10k, $19 for up to 100k, $69 for up to 1M. If you run three sites, you pay one bill for the combined total.

For self-hosting, your cost is the VPS ($4 to $12/month on Hetzner or DigitalOcean), plus your time for updates and backups (roughly 30 minutes per month). At three or more high-traffic sites, self-hosting almost always wins on price.

Plot this in a spreadsheet. Multiply your current monthly pageviews by 12 to get annual Cloud cost. Compare that to $48 to $144/year for a small VPS.

Sanity check: you should have a written number for both annual costs. If Cloud is cheaper by less than $50/year, the saved maintenance time usually tilts the decision toward Cloud.


Common Mistakes To Avoid

  • Using 1 GB RAM on the VPS. ClickHouse and PostgreSQL together need at least 1.5 GB at idle. 1 GB instances will OOM-kill the containers under moderate traffic. Start with 2 GB.
  • Leaving Cloudflare proxy enabled during TLS provisioning. The orange cloud mode intercepts ACME challenges and breaks Caddy’s certificate request. Turn it to grey-cloud first, let the cert issue, then re-enable proxy if you want.
  • Setting BASE_URL with a trailing slash. https://stats.yourdomain.com/ breaks internal redirects. The URL must have no trailing slash.
  • Not versioning your plausible-conf.env. One VPS rebuild and you lose your secret keys. That breaks existing sessions. Store the file in a private git repo or a secrets manager like Doppler.
  • Skipping email setup and then losing admin access. Without SMTP, password reset emails never arrive. Set up SMTP before you forget your password.
  • Comparing self-host to Google Analytics instead of to Plausible Cloud. The privacy and cookie-consent savings apply to both Plausible options. The only real comparison is ops effort vs money.

When To Level Up

Self-hosted Plausible CE works well for one person or a small team managing a handful of sites. The point where it starts to strain is around 50 million pageviews per month on a single ClickHouse node, or when you need multi-region data residency for compliance reasons.

If you grow into enterprise territory, you will want a managed ClickHouse cluster (ClickHouse Cloud has a $0 free tier up to 1M rows per month, then scales), a proper secrets manager, and potentially a CDN in front of Plausible to absorb traffic spikes.

For teams that need SOC 2 compliance, data processing agreements, or HIPAA-adjacent coverage, Plausible Cloud’s business tier includes a DPA out of the box. Self-hosted CE does not come with any vendor DPA since you are the vendor.

You can find more tools that fit EU data residency requirements and privacy-first analytics at /category/privacy-compliance/. For a broader look at how Plausible stacks up against Fathom and Umami, check out /plausible-vs-fathom-vs-umami-analytics/ and our guide on cookie-free analytics tools for GDPR.


Frequently Asked Questions

Does self-hosted Plausible CE have all the same features as Cloud?
Community Edition is the open-source version and lacks a few Cloud-only features like email reports and Slack notifications as of 2026. The core stats dashboard, goals, funnels, and custom events are identical. Check the CE changelog on GitHub before assuming a feature is missing.

Can I migrate data from Cloud to self-hosted later?
Yes. Plausible Cloud lets you export all your stats as CSV. You cannot import that CSV directly into a self-hosted instance right now, but the export preserves your historical data for reference. Plan your hosting decision early if long historical continuity matters to you.

Does self-hosting Plausible make you fully GDPR compliant?
Self-hosting means your data never leaves your server, which removes one compliance risk. But GDPR compliance also depends on your privacy policy, your data retention settings, and how you handle user rights requests. Hosting location is one piece, not the whole picture.

What happens to my self-hosted instance if the VPS goes down?
Pageview tracking stops until the server is back up. Plausible does not buffer events client-side, so pageviews during downtime are lost permanently. For high-uptime needs, add a health check and auto-restart policy, or consider Cloud.

Is Plausible CE free forever?
Plausible CE is MIT licensed and free to self-host. Plausible the company maintains it, but the license does not require you to pay anything. Commercial support or Cloud hosting is how they fund development.


Bottom Line

The right choice comes down to two things: how many sites you run and how much you value not managing a server. If you have one or two sites and under 100k monthly pageviews, Plausible Cloud at $19/month is genuinely the simpler path. If you run multiple sites, already have a VPS, or operate in a strict data-residency environment, self-hosting CE on a $4-a-month Hetzner box pays for itself fast. Either way, setup is measured in hours not days, and you end up with privacy-respecting analytics that needs no cookie banner. For more tools that fit the same privacy-first approach to site analytics and compliance, browse the full privacy and compliance tool guide at /category/privacy-compliance/.