Both Plausible and Umami replace Google Analytics with cookie-free, privacy-first tracking that you can self-host on your own VPS. Both are actively maintained, both run on Docker Compose, and both score well for GDPR compliance. The difference is operational: they diverge significantly in RAM footprint, database requirements, feature depth, and license terms.
Google Analytics 4 is free, but you pay with your users' data — every pageview ships to Google's servers, GDPR cookie banners become mandatory, and your analytics are subject to GA4's data-retention limits. Self-hosted analytics tools eliminate that tradeoff: your data stays on your VPS, cookie consent banners are often unnecessary, and you own the retention policy.
One docker-compose.yml deploys Authentik (SSO) + Plausible (analytics) + Postal (SMTP) + shared PostgreSQL + MySQL + ClickHouse + RabbitMQ + Redis + Caddy; Coolify installs separately via its own script
Measured idle RAM: ~4.6 GB total across the host (our Compose stack + Coolify's stack)
Minimum Liquid Web tier: 16 GB Managed VPS (~$50/mo) — the 16 GB gives comfortable room for apps you deploy through Coolify
Vercel Pro ($20/mo) + Auth0 Essentials ($23/mo) + Postmark ($15/mo) = $58/mo just for foundations; this stack: ~$50/mo with unlimited apps, SSO, pageviews, and email
This is the "meta stack" — the infrastructure layer you deploy before anything else. Every other self-hosted app you run needs a place to live (Coolify), a way to log users in (Authentik), a way to measure traffic (Plausible), and a way to send email (Postal, the open-source SMTP platform). This guide wires all four together on a single Liquid Web 16 GB VPS as a reusable foundation.
Minimum Liquid Web tier: 8 GB Managed VPS (~$30–$40/mo)
GA4 (free) + Typeform ($50/mo) + ActiveCampaign ($49/mo) = $99/mo; this stack: ~$30/mo on your own server
Most SaaS teams have three separate tools that should talk to each other but don't: an analytics platform, a user feedback tool, and an email automation platform. The data lives in three silos. You see a traffic spike in GA4, you have NPS responses in Typeform, and you have email segments in ActiveCampaign — but you can't close the loop automatically. This stack connects all three: Plausible fires a goal event when a user reaches a key page, Formbricks uses that signal to trigger an NPS survey, and a Formbricks webhook pushes the response straight into Mautic where a campaign branches on score.