Replace Google Analytics 4 / Mixpanel with Self-Hosted PostHog
All-in-one open-source product analytics, session replay, feature flags, and A/B testing Stop paying Growth Analytics ($89/mo) ($89/mo for a 10-person team) and run PostHog on a $8.50/mo Linux VPS with full data sovereignty.
1-to-100 Seat Total Cost of Ownership (TCO) Table
Comparing Google Analytics 4 / Mixpanel (Growth Analytics ($89/mo)) vs PostHog on Hetzner CX32 (8GB RAM / 4 vCPU).
| Team Size | Google Analytics 4 / Mixpanel Cost | PostHog VPS | Net Annual Savings |
|---|---|---|---|
| 1 Seat (Solo) | $89.00/mo ($1,068/yr) | $8.50/mo (CX32) | +$966 / year |
| 5 Seats | $89.00/mo ($1,068/yr) | $8.50/mo (CX32) | +$966 / year |
| 10 Seats | $89.00/mo ($1,068/yr) | $8.50/mo (CX32) | +$966 / year |
| 25 Seats | $89.00/mo ($1,068/yr) | $8.50/mo (CX32) | +$966 / year |
| 50 Seats | $89.00/mo ($1,068/yr) | $8.50/mo (CX32) | +$966 / year |
| 100 Seats | $89.00/mo ($1,068/yr) | $8.50/mo (CX32) | +$966 / year |
Production Docker Compose + Caddy Auto-SSL
Copy and run docker compose up -d on any Ubuntu 24.04 server.
# Production Docker Compose: PostHog (Replaces Google Analytics 4 / Mixpanel)
services:
caddy:
image: caddy:2-alpine
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy_data:/data
networks:
- stack_net
posthog:
image: posthog/posthog:latest
container_name: stack-posthog
restart: unless-stopped
environment:
- "SITE_URL=https://posthog.${DOMAIN:-yourdomain.com}"
- "SECRET_KEY=${POSTHOG_SECRET:-super_secret_posthog_key}"
volumes:
- posthog_data:/data
networks:
- stack_net
postgres:
image: pgvector/pgvector:pg16
container_name: stack-postgres
restart: unless-stopped
environment:
- "POSTGRES_USER=postgres"
- "POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-strongpassword}"
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- stack_net
redis:
image: redis:7-alpine
container_name: stack-redis
restart: unless-stopped
volumes:
- redis_data:/data
networks:
- stack_net
networks:
stack_net:
driver: bridge
volumes:
caddy_data:
posthog_data:
postgres_data:
redis_data:
# Automatic Let's Encrypt HTTPS for PostHog
posthog.{$DOMAIN:yourdomain.com} {
encode zstd gzip
reverse_proxy posthog:8000
}
Why Teams Switch to PostHog
- ✓Replaces Mixpanel + Hotjar + LaunchDarkly
- ✓Session recordings & heatmaps
- ✓SQL insights directly on events
posthog/posthog:latest
Deploy PostHog in 60 Seconds
Sized automatically for PostHog (4096MB container RAM + OS overhead).
Get All 16 Pre-Built Production Stacks + Encrypted S3 Backups
Includes pre-tuned docker-compose.yml, Caddy Auto-SSL, AES-256 encrypted nightly S3/R2 Postgres backups, and Ubuntu 24.04 UFW/Fail2ban hardening scripts.