Overview
Run Observal entirely on your own infrastructure. No SaaS, no egress, every byte of telemetry stays inside your network.
For a packaged single-node install, install-server.sh generates restricted credential files under secrets/, records their NAME_FILE paths in .env, and binds host ports to loopback. It prompts when a terminal is available and applies the same safe defaults automatically in headless CI or agent environments. The source Compose path remains available for development and accepts direct .env values.
Architecture at a glance
Seven services:
observal-api
built from docker/Dockerfile.api
8000
FastAPI backend
observal-web
built from docker/Dockerfile.web
3000
Next.js web UI
observal-db
postgres:16
5432
Registry, users, config
observal-clickhouse
clickhouse/clickhouse-server:26.3
8123
Session and audit events
observal-redis
redis:7-alpine
6379
Job queue (arq) + pub/sub
observal-worker
built from docker/Dockerfile.api
(internal)
Background async jobs
observal-grafana
grafana/grafana-oss:11.6.5
3001
Dashboards (optional)
All services run on a private observal-net bridge network. Named volumes (pgdata, chdata, redisdata, grafanadata, apidata) hold persistent data.
Deployment tiers
Choose the deployment model that fits your team:
How
Docker Compose on one VM
Official Helm chart
Terraform on AWS or GCP
Best for
≤50 users, internal tools, POCs
Cloud-native teams, existing K8s infra
Enterprise, SLA-bound, 50+ users
Cost
$20 to $150/mo
Variable
~$180 to $255/mo
HA
No
Pod resilience & horizontal scaling
Yes (Multi-AZ databases, autoscaling)
Time to deploy
10 minutes
10 to 15 minutes
20 to 30 minutes
Start here:
Deploy on a single VM (simplest)
Deploy on Kubernetes with Helm
Deploy a production HA stack
Deploy on AWS specifically
Deploy on GCP specifically
Then configure and operate:
Confirm your machine can run Observal
Get the stack running locally for dev
Know every env var that matters
See every port and volume at a glance
Understand the DBs and retention
Set up SSO, JWT keys, demo accounts
Understand session delivery
Upgrade safely
Back up and restore
Fix something that's broken
Production checklist
Before putting Observal in front of real users:
Protect
SECRET_KEY: server-package setup generates it insecrets/; source deployments must set a strong direct value orSECRET_KEY_FILE.Protect database passwords: server-package setup generates restricted PostgreSQL and ClickHouse credential files; source deployments must replace the
.env.exampledefaults.Scope
CORS_ALLOWED_ORIGINSto your real frontend host.Configure SSO in Admin → SSO, including
deployment.sso_onlyif you want SSO-only login.Tune rate limits (
RATE_LIMIT_AUTH,RATE_LIMIT_AUTH_STRICT).Set
DATA_RETENTION_DAYSto match your retention policy (default 90 days).Back up the JWT key volume (
apidata): losing it invalidates every session.Remove demo accounts: remove
DEMO_*variables and generated demo password files before a real deployment, then delete any already-seeded demo users.
Each of these is covered in the linked deep-dive below. Start with Requirements.
Last updated
Was this helpful?