self hosting
Docker Compose
Run Tone on a single host with Docker Compose.
Docker Compose is the fastest way to get Tone running on a single host — your laptop, a staging server, or a small production deployment.
Files
The repo ships with two files:
docker-compose.yml— the canonical stack (api, worker, postgres, redis, clickhouse).docker-compose.override.yml.example— copy todocker-compose.override.ymland edit to add secrets, mount custom configs, or change ports.
Configuration
All configuration is via environment variables. The most important ones:
# .env
TONE_PUBLIC_URL=https://tone.example.com
TONE_DATABASE_URL=postgres://tone:tone@postgres:5432/tone
TONE_REDIS_URL=redis://redis:6379
TONE_CLICKHOUSE_URL=http://clickhouse:8123
# Telephony
TWILIO_ACCOUNT_SID=...
TWILIO_AUTH_TOKEN=...
# Models
OPENAI_API_KEY=...
DEEPGRAM_API_KEY=...A full list is in .env.example.
TLS
For production deployments, terminate TLS with a reverse proxy in front of
the api service. The repo includes example configs for Caddy, nginx, and
Traefik in the deploy/ folder.
Backups
Postgres and ClickHouse are stateful. The Compose file mounts named volumes
by default; back them up the way you back up any other Docker volumes
(docker run --rm -v tone_postgres_data:/data ...).
When to graduate to Kubernetes
Compose works fine up to ~50 concurrent calls. Beyond that, you'll want the worker autoscaling and pod-level isolation that the Helm chart provides.