Why replace self-hosted PostHog now
PostHog ended support for its Kubernetes/Helm deployment and now recommends PostHog Cloud as the primary option for high-volume setups. The Docker Compose version remains available without active support guarantees — prompting many teams to seek a better-maintained alternative. Rybbit, under the Apache-2.0 license, is now the most active solution in this segment: over 13 000 GitHub stars in under 18 months since its launch in April 2025, with a lightweight architecture focused on essential product events without PostHog's complexity.
What Rybbit brings over PostHog Community
- Apache-2.0 license — no SSPL clause, no commercial restriction, usable in enterprise without a special agreement
- Reduced memory footprint — 512 MB is enough to start; PostHog Community required a minimum of 4 GB RAM in basic configuration
- Simplified stack — PostgreSQL + Redis + a single Go binary, without mandatory Kafka or ClickHouse for typical volumes
- GDPR by design — data stored on your infrastructure, no transfer to third parties, built-in IP anonymization
- Cookie-free tracking — identification based on fingerprint and sessions, compatible with strict consent policies
- Funnels, retention, and heatmaps — essential product analytics functions available without a paid tier
- Compatible events API — the event schema is close to PostHog, making migration of existing collectors easier
Prerequisites before installation
Rybbit runs comfortably on a machine with 1 vCPU and 2 GB RAM for volumes up to several million events per month. For higher volumes (tens of millions of events), plan for 2 vCPU and 4 GB. Storage depends on the chosen retention: count approximately 1 GB for 500,000 events with a 90-day retention.
On the software side, you need Docker Engine 24+ and Docker Compose v2. A domain name pointing to your VPS is required for the TLS certificate. Ports 80 and 443 must be open on the firewall.
Install Rybbit on a VPS in under 30 minutes
Update the system and install Docker
Connect to your VPS as root, then run:
apt update && apt upgrade -y curl -fsSL https://get.docker.com | sh systemctl enable --now dockerVerify Docker Compose v2 is available:
docker compose version.Create the working directory
mkdir -p /opt/rybbit && cd /opt/rybbitDownload the official Docker Compose file
curl -fsSL https://raw.githubusercontent.com/rybbit-io/rybbit/main/docker-compose.yml -o docker-compose.yml curl -fsSL https://raw.githubusercontent.com/rybbit-io/rybbit/main/.env.example -o .envConfigure environment variables
Edit the
.envfile and set at minimum:BASE_URL=https://analytics.your-domain.com POSTGRES_PASSWORD=a_strong_password JWT_SECRET=a_long_random_stringGenerate
JWT_SECRETwith:openssl rand -hex 32.Start the containers
docker compose pull docker compose up -dVerify all services are
healthy:docker compose ps.Configure the nginx reverse proxy with TLS
Install nginx and certbot, then create
/etc/nginx/sites-available/rybbit:server { server_name analytics.your-domain.com; location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }Enable the site and obtain the certificate:
certbot --nginx -d analytics.your-domain.com.Create the first admin account
Go to
https://analytics.your-domain.comin your browser. The initialization wizard lets you create the admin account and add your first site. Note the Site ID — you will need it for the tracking snippet.Integrate the tracking snippet
Copy the snippet from the dashboard and add it before
</head>in your pages:<script src="https://analytics.your-domain.com/script.js" data-site-id="YOUR_SITE_ID" defer> </script>The first events appear in the dashboard in real time.
Migration from PostHog: exporting historical events
Rybbit does not offer a native import from PostHog. The simplest migration is to run both trackers in parallel for 30 days, then cut PostHog once Rybbit has accumulated enough history for your retention and funnel analyses. To export your PostHog data, use the events export API (/api/event) with pagination, and keep the JSON files as an archive — Rybbit will not consume them, but you retain traceability. Regarding GDPR compliance, Rybbit stores data only on your VPS: no transfer outside your infrastructure, and IP address anonymization can be enabled in the .env file via ANONYMIZE_IPS=true.
PostHog self-hosted vs Plausible vs Rybbit
Scroll the table
| Criterion | PostHog Community (deprecated) | Plausible CE | Rybbit |
|---|---|---|---|
| License | MIT (archived, unsupported) | AGPL-3.0 | Apache-2.0 |
| Minimum recommended RAM | 4 GB | 512 MB | 512 MB |
| Stack | Kafka + ClickHouse + PostgreSQL + Redis | PostgreSQL + ClickHouse | PostgreSQL + Redis |
| Active support | No (Kubernetes/Helm support ended, Docker Compose without active SLA) | Yes | Yes (actively growing project) |
| Funnels and retention | Yes | No (traffic analytics only) | Yes |
| Heatmaps | Yes | Yes (Clarity fork) | Yes (in beta) |
| Cookie-free tracking | No (cookies by default) | Yes (designed without cookies) | Yes |
| Events API | Yes (rich schema) | Yes (simplified schema) | Yes (schema close to PostHog) |
| GitHub stars | ~25,000 (archived repo) | ~20,000 | ~12,000 (in 21 months) |
Backup and maintain Rybbit in production
The PostgreSQL database contains all your analytics data. Schedule a daily backup with pg_dump:
docker exec rybbit-postgres-1 pg_dump -U postgres rybbit | gzip > /opt/backups/rybbit-$(date +%Y%m%d).sql.gzFor updates, Rybbit publishes versioned Docker images. The procedure is:
cd /opt/rybbit
docker compose pull
docker compose up -dCheck releases on GitHub for release notes before each update. Rybbit follows semantic versioning — minor and patch updates are safe without breaking changes.
Is Rybbit ready for production in 2025
The maturity question is legitimate for a 21-month-old project. Rybbit is used in production by several thousand teams, according to public Docker Hub image download data. Points of caution remain real: the event ingestion API is stable, but some advanced features like feature flags and A/B tests — present in PostHog — are not yet available. Heatmaps are in public beta.
For teams whose usage is limited to understanding the user journey — conversion funnels, retention rates, page and session analysis — Rybbit covers the essentials today. For teams that rely heavily on feature flags or advanced hypothesis testing, a 30 to 60-day parallel run period is recommended before the full switch. The project accepts contributions and GitHub issues are addressed quickly, which is a favorable health signal for a tool you will operate autonomously.
Rybbit fits into a broader trend: lightweight open source product observability tools have matured as cloud solutions raised their prices. With PostHog abandoning self-hosting, Plausible remaining focused on web traffic, and Umami targeting simple analytics, Rybbit occupies a precise niche: self-hosted product analytics for teams that want to keep control of their data without operating Kafka infrastructure. A ServOrbit entry-level VPS starting at 99 DH/month comfortably covers the needs of a medium-sized application.