Layer 5 · self-hosting reality check
What it actually takes to self-host PostHog
The docs say 16 GB. PostHog's stated floor is the equivalent of a Hetzner VM with 4 vCPU, 16 GB RAM and more than 30 GB of storage.. In practice you want 16 GB, and that number is not padded. ClickHouse, Kafka, Zookeeper, PostgreSQL, Redis/Valkey, Temporal with Elasticsearch, a headless Chromium and a few dozen PostHog services all share it (about 38 services in the hobby compose file).. Here is the honest version — real requirements, real monthly cost, what you will be maintaining, and the one thing that catches people out.
Usually reached from Amplitude alternatives, where PostHog is one of the picks.
Wondering whether you need to at all? Is Amplitude free? — what the free tier actually allows, and where the wall is.
| RAM — documented minimum | 16 GB. PostHog's stated floor is the equivalent of a Hetzner VM with 4 vCPU, 16 GB RAM and more than 30 GB of storage. |
|---|---|
| RAM — what it really needs | 16 GB, and that number is not padded. ClickHouse, Kafka, Zookeeper, PostgreSQL, Redis/Valkey, Temporal with Elasticsearch, a headless Chromium and a few dozen PostHog services all share it (about 38 services in the hobby compose file). |
| CPU | 4 vCPU |
| Disk | More than 30 GB to start (the vendor's figure). ClickHouse event data and session-recording blobs grow from there. |
| Monthly cost | $19–25/mo for a 16 GB Hetzner cloud server in the EU (the CX43 is $18.49 before VAT and IPv4, at June 2026 prices), or about $96/mo for 16 GB at DigitalOcean. ClickHouse, Kafka, Zookeeper, Postgres, Redis and object storage all run on that one box, so there is no separate bill, but they are why it needs 16 GB. |
| Setup time | 30 minutes for the script, then 5–10 minutes for migrations and TLS. Give it a week before you trust it. |
| How you install it | Run the `deploy-hobby` script on a fresh Ubuntu VM with a domain's A record pointed at it. It writes the Docker Compose stack and gets a Let's Encrypt certificate. A beta TUI installer also exists. |
| Ongoing maintenance | Run `upgrade-hobby` often, because PostHog ships continuously from master with no tagged releases. Take a full backup before every upgrade, as the docs instruct. PostHog offers no customer support for self-hosted instances. |
| Where it stops scaling | One box. The docs' decision chart treats more than about 300k events, 1k recordings or 300k /flags calls a month as the point to reconsider, and the Kubernetes/Helm path for scaling out has been sunset. |
The thing that catches people out
Self-hosted PostHog has no versions. The docs say PostHog publishes no CVEs and does no tagged releases for self-hosted, and security fixes ship continuously from master to the latest Docker image. The docs also call self-hosted deployments officially unsupported. You can't stay on a known-good release and take only patches: staying secure means taking every upstream change to a roughly 38-container stack, with a backup each time. Schedule `upgrade-hobby` weekly and snapshot the VM first. If something breaks, check the recent commits to docker-compose.hobby.yml.
When not to self-host PostHog
You send fewer than 1M events and 5k session recordings a month. PostHog Cloud's free tier covers that, and the self-host page's own decision chart sends you there. Skip it too if you need a paid feature: the docs say all paid-plan features are Cloud-only.
Every guide here carries this section. A site that only ever tells you to self-host is selling something — the useful answer is sometimes no.
Other Layer 5 self-hosting guides
- Self-hosting LibreOffice2 GB with a large spreadsheet open
- Self-hosting ONLYOFFICE6 GB for the Document Server with a handful of concurrent editors
- Self-hosting Collabora Online4 GB, and roughly 1 GB per 20 concurrent documents
- Self-hosting CryptPad2 GB for a small instance
- Self-hosting Mattermost4 GB for a team of 50 with PostgreSQL on the same box
- Self-hosting Rocket.Chat6 GB with MongoDB on the same machine
Common questions
- How much RAM does PostHog actually need?
- 16 GB, and that number is not padded. ClickHouse, Kafka, Zookeeper, PostgreSQL, Redis/Valkey, Temporal with Elasticsearch, a headless Chromium and a few dozen PostHog services all share it (about 38 services in the hobby compose file). in practice. The documented minimum is 16 GB. PostHog's stated floor is the equivalent of a Hetzner VM with 4 vCPU, 16 GB RAM and more than 30 GB of storage., which is the figure at which the process starts rather than the figure at which it works under real use. 4 vCPU alongside it.
- What does self-hosting PostHog cost per month?
- $19–25/mo for a 16 GB Hetzner cloud server in the EU (the CX43 is $18.49 before VAT and IPv4, at June 2026 prices), or about $96/mo for 16 GB at DigitalOcean. ClickHouse, Kafka, Zookeeper, Postgres, Redis and object storage all run on that one box, so there is no separate bill, but they are why it needs 16 GB. This is commodity VPS pricing and excludes your time, which is the larger cost for most people — budget for run `upgrade-hobby` often, because PostHog ships continuously from master with no tagged releases. Take a full backup before every upgrade, as the docs instruct. PostHog offers no customer support for self-hosted instances.
- How long does it take to set up PostHog?
- 30 minutes for the script, then 5–10 minutes for migrations and TLS. Give it a week before you trust it., via Run the `deploy-hobby` script on a fresh Ubuntu VM with a domain's A record pointed at it. It writes the Docker Compose stack and gets a Let's Encrypt certificate. A beta TUI installer also exists..
- When should I NOT self-host PostHog?
- You send fewer than 1M events and 5k session recordings a month. PostHog Cloud's free tier covers that, and the self-host page's own decision chart sends you there. Skip it too if you need a paid feature: the docs say all paid-plan features are Cloud-only.
- What is the most common mistake when self-hosting PostHog?
- Self-hosted PostHog has no versions. The docs say PostHog publishes no CVEs and does no tagged releases for self-hosted, and security fixes ship continuously from master to the latest Docker image. The docs also call self-hosted deployments officially unsupported. You can't stay on a known-good release and take only patches: staying secure means taking every upstream change to a roughly 38-container stack, with a backup each time. Schedule `upgrade-hobby` weekly and snapshot the VM first. If something breaks, check the recent commits to docker-compose.hobby.yml.