Docker Compose Deployment
The recommended way to run Fluidify Regen in production is with Docker Compose. A single command builds and starts everything.
Quick start
git clone https://github.com/fluidifyai/regen.git
cd regen
cp .env.example .env
# Edit .env with your values
make start
Open http://your-server-ip:8080
What runs
| Container | Image | Purpose |
|---|---|---|
fluidify-regen |
Built from repo | Go binary with embedded React frontend |
fluidify-regen-db |
postgres:15-alpine |
Primary datastore |
fluidify-regen-redis |
redis:7-alpine |
Queue and cache |
The app container starts only after PostgreSQL and Redis pass their health checks. Migrations run automatically at startup.
Commands
| Command | Description |
|---|---|
make start |
Build image and start all services (detached) |
make stop |
Stop all services |
make logs |
Tail logs from all containers |
make health |
Check /health and /ready |
make down |
Stop and remove containers (data volumes preserved) |
make clean |
Remove containers, volumes, and build artifacts |
Updating
git pull
make start # rebuilds the image automatically
Migrations run on startup — no separate migration step needed.
Persisting data
Data is stored in named Docker volumes:
| Volume | Contents |
|---|---|
postgres_data |
All application data |
redis_data |
Queue state and cache |
Volumes persist across make stop / make start cycles. Only make clean removes them.
Backup PostgreSQL:
docker exec fluidify-regen-db pg_dump -U regen regen > backup-$(date +%Y%m%d).sql
Restore:
docker exec -i fluidify-regen-db psql -U regen regen < backup-20240115.sql
Running behind a reverse proxy
For production, put Regen behind nginx or Caddy for TLS termination.
Caddy (recommended — automatic HTTPS)
incidents.yourcompany.com {
reverse_proxy localhost:8080
}
nginx
server {
listen 443 ssl;
server_name incidents.yourcompany.com;
ssl_certificate /etc/ssl/certs/yourcompany.crt;
ssl_certificate_key /etc/ssl/private/yourcompany.key;
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
The X-Forwarded-Proto: https header is required for Slack OAuth and SAML SSO to construct the correct redirect URIs.
Custom port
PORT=9000
Update your reverse proxy accordingly.
Environment variables
See Environment Variables for the full reference.