Self-hosting
How an Open Chat Interface deployment fits together, and where to start.
OCI is two container images and three services you provide:
web — ghcr.io/ncecere/open-chat-interface/web (Caddy: the browser app, and /api forwarded to the API)
api — ghcr.io/ncecere/open-chat-interface/api (Node.js: everything else, including background jobs and migrations)
PostgreSQL 17 (pgvector optional)
Redis (recommended)
File storage: a local volume, or S3-compatible
- Same origin. People reach the web container. It serves the app and forwards
/api/*to the API, so session cookies need no CORS or cross-site settings. Put your TLS-terminating reverse proxy or load balancer in front of the web container. - The API applies database migrations on start (under a lock, so replicas can start together), runs the background jobs on every replica (each job runs on one at a time), and talks to model providers, search providers, connectors, SMTP and S3.
- State lives in PostgreSQL (everything durable), file storage (uploads) and your secret manager (
AUTH_SECRET,ENCRYPTION_KEY). Redis holds only rebuildable state: replies in progress, rate limits. - Configuration is almost all in the admin dashboard; environment variables cover connection strings, secrets, the first administrator, a few defaults and observability.
Start here
Requirements
What you need, and how big.
Configuration
Every environment variable.
Deploy with Docker Compose
The supported deployment.
Reverse proxy
TLS, headers, and the artifact frame.
Kubernetes
What exists today.
Upgrades
The procedure, and notes per version.
Backups and restore
What to back up and how to restore it.
Health and monitoring
Probes, metrics, traces and logs.
Security
Secrets, the network, and hardening.
To look around first, try it locally.