← all SaaS
Self-host FullStory
Session replay + product analytics ·
Category: observability & analytics
FullStory records user sessions in your web app — pixel-perfect replay, click heatmaps, frustration signals (rage clicks, dead clicks), funnel analytics. The self-hostable replacements all do the session-record + replay + heatmap triangle; FullStory's frustration-signal taxonomy and AI-assisted summaries are the parts that take work to recover.
FullStory pricing anchor: Custom pricing — typically $200-400/mo for small SMB; rises to thousands at scale.
- GitHub
- ★ 12.0k · last commit today · 162 open issues
- License
-
Elastic-2.0 Elastic License v2 allows self-host; restricts offering OpenReplay as a managed service.
- Setup time
- 1h docker-compose or k8s (multi-service: backend + Postgres + Redis + ClickHouse + MinIO)
- Monthly cost
- $30-80/mo VPS — ClickHouse + MinIO for session blobs are the cost line.
Migration sketch. Use the official k8s helm chart at docs.openreplay.com (docker-compose available for dev/small). Replace the FullStory snippet with OpenReplay's tracker (`<script>` install, then `OpenReplay.start()`). Heatmaps, session replay, and event tracking are first-class; co-browse for live support sessions. FullStory historical data doesn't transfer (no public export).
Good fit forProduct teams that want pixel-perfect session replay + user analytics under their own infrastructure for privacy or cost reasons.
Weak atHeavy stack — at least 4 services to run; not a 'docker run' replacement.
- GitHub
- ★ 34.4k · last commit today · 3966 open issues
- License
-
MIT Core is MIT; PostHog Cloud's commercial license adds some enterprise add-ons but unrestricted on self-host.
- Setup time
- 20min docker-compose (`hobby` deploy is one command)
- Monthly cost
- $20-40 VPS — ClickHouse + Postgres + Kafka + Redis stack.
Migration sketch. Pull the `hobby` compose from posthog.com/docs/self-host. Add PostHog's session-replay snippet (`posthog.init(KEY, { autocapture: true, session_recording: { ... } })`). PostHog bundles session replay, product analytics, feature flags, and surveys — broader than FullStory. Frustration-click detection is built in; AI summaries via OpenAI key.
Good fit forTeams that want one tool covering session replay + product analytics + feature flags rather than three separate vendors.
Weak atReplay polish is solid but UI is denser than FullStory's; learning curve for the whole product surface.
- GitHub
- ★ 19.5k · last commit 7w ago · 405 open issues
- License
-
MIT - Setup time
- 2h — script install + ingest endpoint + storage + replay UI
- Monthly cost
- $5+ VPS plus storage — variable based on traffic.
Migration sketch. rrweb is the recording library at the heart of OpenReplay/PostHog/Hotjar. Install via `npm install rrweb`, hook `rrweb.record({ emit: events => POST(events) })` in your app, store the event stream (S3, Postgres JSONB), and replay via `new rrweb.Replayer(events)`. You build your own UI on top.
Good fit forEngineering teams that want session replay as a primitive they own end-to-end and don't need a fancy product UI.
Weak atBring your own everything — no analytics, no heatmaps, no admin UI; this is a library, not a product.
In a terminal? npx os-alt fullstory prints this table —
how the CLI works →