Google Analytics collects data about your visitors and sends it to Google's servers. It requires cookie consent banners under GDPR. It loads a 45KB tracking script that affects page performance. And since July 2023, it operates under a framework (GA4) that many privacy regulators in the EU have found non-compliant with European data protection law.
Plausible Analytics takes the opposite approach. It's a lightweight, open-source analytics platform that collects no personal data, sets no cookies, and generates a tracking script under 1KB. Because it doesn't track individuals, Plausible doesn't require cookie consent banners — a significant UX improvement and a compliance simplification for any website serving EU visitors.
The catch with Plausible's managed cloud service is cost. Plausible Cloud starts at $9/month for up to 10K monthly pageviews and scales to $199/month for 10M pageviews. For a growing website, these costs add up quickly. Self-hosting Plausible on your own VPS eliminates the recurring fee entirely — you pay only for the server, and you own the data.
This guide walks through deploying Plausible Analytics on a MassiveGRID VPS using Coolify, from initial setup through production configuration. If you haven't installed Coolify yet, start with our installation guide.
Why Self-Host Plausible
GDPR compliance without the complexity
Plausible was designed from the ground up to be GDPR-compliant. It doesn't use cookies, doesn't collect IP addresses (they're discarded after generating a salted hash), and doesn't track users across sessions or sites. This means:
- No cookie consent banner required — Plausible doesn't set any cookies
- No personal data processing — no Data Processing Agreement needed with third parties
- No cross-site tracking — each site's data is isolated
- No data transfers outside the EU — when you host it on a European server
That last point is critical. Even though Plausible's software is privacy-first, hosting it on Plausible Cloud means your analytics data transits through their infrastructure. Self-hosting on a VPS in Frankfurt or London keeps every byte of analytics data within the EU, providing the strongest possible compliance posture under GDPR, NIS2, and the evolving European data sovereignty regulations.
Cost comparison at scale
Plausible Cloud pricing is based on monthly pageviews:
| Monthly Pageviews | Plausible Cloud | Self-Hosted (MassiveGRID VPS) |
|---|---|---|
| Up to 10K | $9/mo | $4.99/mo (Dedicated VPS) Unlimited pageviews |
| Up to 100K | $19/mo | |
| Up to 1M | $69/mo | |
| Up to 5M | $129/mo | |
| Up to 10M | $199/mo |
Self-hosted Plausible has no pageview limits. A Dedicated VPS starting at $4.99/month can handle millions of pageviews with proper resource allocation. The economics become compelling the moment you cross 10K monthly pageviews — and they become overwhelming at scale.
Lightweight tracking script
Plausible's tracking script is under 1KB — roughly 45x smaller than Google Analytics. When self-hosted, this script loads from your own domain, eliminating the third-party request that ad blockers and privacy extensions target. Self-hosted Plausible typically achieves higher tracking accuracy than any cloud-hosted analytics solution because the script isn't flagged by browser extensions or DNS-level blocking lists.
Prerequisites
Before deploying Plausible, ensure you have:
- A working Coolify installation on your VPS (setup guide)
- A domain or subdomain for your Plausible dashboard (e.g.,
analytics.yourdomain.com) - DNS access to create an A record pointing to your server IP
- SMTP credentials for email functionality (password resets, weekly reports)
Resource requirements
Plausible's resource footprint depends on traffic volume. The application itself is an Elixir/Phoenix application that's efficient with memory. The heavier component is ClickHouse, the columnar database that stores analytics events.
| Traffic Level | RAM Required | Storage (annual) | Recommended VPS |
|---|---|---|---|
| Up to 100K pageviews/mo | 1–2 GB | 5–10 GB | 2 vCPU / 4 GB RAM |
| 100K–1M pageviews/mo | 2–4 GB | 10–30 GB | 4 vCPU / 8 GB RAM |
| 1M+ pageviews/mo | 4–8 GB | 30–100 GB | 4 vCPU / 16 GB RAM |
If you're running Plausible alongside Coolify and other applications on the same server, factor in Coolify's own overhead (~500–700MB RAM) plus your other workloads. See our resource planning guide for detailed sizing across different application stacks.
Deploying Plausible via Coolify
Plausible is available as a one-click service in Coolify's service catalog, which simplifies the deployment process significantly. Coolify handles the Docker Compose orchestration, networking between services, and persistent volume management.
Step 1: Create the Plausible service
In your Coolify dashboard, navigate to your project and select Add New Resource → Service. Search for "Plausible" in the one-click service catalog. Coolify will present the Plausible service template, which includes:
- Plausible application — the Elixir/Phoenix web application and API
- ClickHouse — the columnar database for event storage and fast aggregation queries
- PostgreSQL — stores user accounts, site configurations, and application metadata
Click to deploy. Coolify generates the required environment variables, creates persistent volumes for both databases, and sets up internal networking between the three containers.
Step 2: Configure environment variables
After creation, navigate to the service's environment configuration. The critical variables to set:
BASE_URL— your Plausible dashboard URL (e.g.,https://analytics.yourdomain.com)SECRET_KEY_BASE— Coolify generates this automatically; a 64+ character random string used for session encryptionTOTP_VAULT_KEY— encryption key for TOTP two-factor authentication secretsDISABLE_REGISTRATION— set toinvite_onlyafter creating your admin account to prevent unauthorized signups
SMTP configuration (optional but recommended)
To enable email functionality (account verification, password resets, weekly traffic reports), configure these variables:
MAILER_EMAIL=analytics@yourdomain.com
SMTP_HOST_ADDR=smtp.yourdomain.com
SMTP_HOST_PORT=587
SMTP_USER_NAME=analytics@yourdomain.com
SMTP_USER_PWD=your_smtp_password
SMTP_HOST_SSL_ENABLED=true
Without SMTP, Plausible works fine — you just won't receive email reports or be able to reset passwords via email.
Step 3: Configure domain and SSL
In the service settings, assign your domain (e.g., analytics.yourdomain.com) to the Plausible application container. Create a DNS A record pointing this subdomain to your VPS IP address. Coolify's Traefik reverse proxy automatically provisions an SSL certificate via Let's Encrypt and routes traffic to the Plausible container.
After DNS propagation (typically 1–5 minutes), access your Plausible dashboard at https://analytics.yourdomain.com.
Step 4: Create your admin account
Navigate to your Plausible URL and create the initial admin account. This is the account you'll use to manage sites, view analytics, and configure settings. After creating your account, immediately set DISABLE_REGISTRATION=invite_only in the environment variables and redeploy — this prevents anyone else from creating accounts on your instance.
Step 5: Add your first site
In the Plausible dashboard, click Add a website and enter your site's domain. Plausible generates a tracking snippet:
<script defer data-domain="yourdomain.com"
src="https://analytics.yourdomain.com/js/script.js">
</script>
Add this snippet to the <head> of every page on your website. Because the script loads from your own domain rather than a third-party server, it's less likely to be blocked by ad blockers or privacy extensions — resulting in more accurate analytics data.
Enhanced tracking options
Plausible supports several script variants for additional tracking capabilities:
script.hash.js— tracks hash-based routing (common in SPAs)script.outbound-links.js— tracks clicks on external linksscript.file-downloads.js— tracks file download clicksscript.tagged-events.js— enables custom event tracking via CSS classes
You can combine these by using the compound script name, such as script.hash.outbound-links.file-downloads.js. Even with all extensions enabled, the script remains under 2KB — a fraction of Google Analytics.
Understanding the ClickHouse Backend
Plausible uses ClickHouse as its analytics database — a columnar database designed for real-time analytical queries over large datasets. Understanding a few ClickHouse basics helps you manage your self-hosted Plausible instance effectively.
Why ClickHouse for analytics
Traditional row-based databases like PostgreSQL store all columns of a row together on disk. When you query "total pageviews by country for the last 30 days," PostgreSQL reads every column of every matching row, even though you only need two columns. ClickHouse stores each column separately and compresses them independently, so the same query reads only the data it needs. For analytics workloads — aggregating millions of events across a few dimensions — ClickHouse is orders of magnitude faster.
Storage efficiency
ClickHouse's columnar compression is remarkably efficient. A site tracking 1 million pageviews per month typically consumes only 1–3 GB of disk space per year in ClickHouse. This means even modest VPS storage allocations can hold years of analytics history. MassiveGRID's independent storage scaling lets you add disk space as your data grows without changing your CPU or RAM allocation — you pay only for what the data actually needs.
Memory management
ClickHouse uses memory aggressively for query performance. During complex dashboard queries (large date ranges, multiple filters), ClickHouse may temporarily spike to 1–2 GB of RAM. This is normal behavior — the memory is released after the query completes. If you're running Plausible alongside other applications, ensure your VPS has enough headroom for these spikes.
EU Data Residency with MassiveGRID
For organizations subject to GDPR, NIS2, or other European data protection regulations, where your analytics data is physically stored matters. Self-hosting Plausible gives you full control over data location — but only if you choose the right infrastructure provider.
Frankfurt and London datacenters
MassiveGRID operates datacenters in Frankfurt, Germany and London, United Kingdom. Deploying your Plausible instance in Frankfurt places your analytics data within the EU, satisfying the most stringent interpretations of GDPR data residency requirements. London provides a UK-based option for organizations operating under the UK's Data Protection Act 2018, which mirrors GDPR's requirements post-Brexit.
When provisioning your VPS through MassiveGRID's configurator, simply select Frankfurt or London as your datacenter location. Your Plausible instance — including the ClickHouse database containing all analytics events — runs entirely within that datacenter. No analytics data leaves the jurisdiction.
Data sovereignty beyond GDPR
EU data residency addresses more than just GDPR. The NIS2 Directive and DORA (Digital Operational Resilience Act) introduce additional requirements for critical infrastructure and financial services organizations. Hosting analytics within the EU, on infrastructure operated by a provider with ISO 9001 certification and transparent data handling practices, strengthens your compliance posture across multiple regulatory frameworks simultaneously.
For organizations with broader data sovereignty needs, see MassiveGRID's Digital & Data Sovereignty solutions and GDPR Compliance documentation.
Production Configuration and Optimization
Disable registration
After creating your admin account, set DISABLE_REGISTRATION=invite_only and redeploy. This prevents unauthorized signups while still allowing you to invite team members via email.
Google Search Console integration
Plausible can import search query data from Google Search Console, giving you keyword-level insights without running Google Analytics. Configure the integration in Plausible's site settings — you'll need to authorize Plausible to access your Search Console data via OAuth. This is one of the few external integrations and is entirely optional.
Custom goals and events
Define conversion goals in Plausible's dashboard — page visits, custom events, or outbound link clicks. Custom events require the script.tagged-events.js variant and use CSS classes or JavaScript API calls to fire events:
// JavaScript API for custom events
plausible('Signup', {props: {plan: 'premium'}});
// CSS class-based tracking (no JS needed)
// Add class="plausible-event-name=CTA+Click" to any element
<button class="plausible-event-name=CTA+Click">Get Started</button>
Data backups
Plausible stores data in two databases: PostgreSQL (user accounts, site config) and ClickHouse (analytics events). Both run as Docker containers with persistent volumes managed by Coolify. For backup strategy:
- PostgreSQL — use Coolify's built-in S3 backup for automated daily dumps
- ClickHouse — the persistent volume captures all data; ensure your VPS backup strategy includes Docker volumes
- Infrastructure layer — MassiveGRID's Ceph 3x replication protects the underlying storage blocks, providing hardware-level redundancy beneath your application-level backups
See our Coolify backup strategy guide for comprehensive backup and disaster recovery planning.
Monitoring your Plausible instance
Use Coolify's built-in Sentinel monitoring to track resource consumption across the Plausible, ClickHouse, and PostgreSQL containers. Key metrics to watch:
- ClickHouse memory usage — should stay below 70% of allocated RAM during normal operation
- Disk growth — monitor the ClickHouse volume to anticipate storage scaling needs
- Response time — dashboard load times above 2–3 seconds indicate ClickHouse needs more resources
For external uptime monitoring, deploy Uptime Kuma alongside Coolify to verify your Plausible dashboard remains accessible from outside your server.
Why MassiveGRID for Plausible Analytics
Self-hosted Plausible requires infrastructure that's reliable, fast, and available in the right geographic location. MassiveGRID delivers on all three requirements.
Frankfurt and London datacenters provide EU and UK data residency for organizations with regulatory requirements. Ceph 3x-replicated storage ensures your ClickHouse analytics data survives hardware failures without intervention. Independent resource scaling means you can add storage as your analytics history grows without paying for CPU or RAM you don't need. And 12 Tbps DDoS protection ensures your analytics endpoint remains available even during attack traffic — important since your tracking script makes requests to your server on every pageview.
Host Privacy-First Analytics on MassiveGRID
- Cloud VPS — From $1.99/mo. Ideal for Plausible instances serving up to 100K monthly pageviews.
- Dedicated VPS — From $4.99/mo. Dedicated CPU ensures fast ClickHouse queries for high-traffic analytics.
- Managed Cloud Dedicated — HA failover and Ceph 3x-replicated storage for mission-critical analytics infrastructure.
What's Next
Your self-hosted Plausible instance is running on infrastructure you control, in a datacenter you chose, with no third-party access to your visitors' data. From here, explore these related guides:
- How to install Coolify on a VPS — the foundational setup guide
- Resource planning for multiple apps — sizing your VPS when running Plausible alongside other services
- Coolify backup strategy — protecting your ClickHouse analytics data and PostgreSQL configuration
- Security hardening your Coolify server — production firewall rules, SSH hardening, and Docker security
- Self-host Uptime Kuma with Coolify — monitor your Plausible instance uptime externally
- Dokploy VPS Hosting — explore an alternative PaaS platform on MassiveGRID infrastructure