Skip to main content

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​

ContainerImagePurpose
fluidify-regenBuilt from repoGo binary with embedded React frontend
fluidify-regen-dbpostgres:15-alpinePrimary datastore
fluidify-regen-redisredis:7-alpineQueue and cache

The app container starts only after PostgreSQL and Redis pass their health checks. Migrations run automatically at startup.

Commands​

CommandDescription
make startBuild image and start all services (detached)
make stopStop all services
make logsTail logs from all containers
make healthCheck /health and /ready
make downStop and remove containers (data volumes preserved)
make cleanRemove 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:

VolumeContents
postgres_dataAll application data
redis_dataQueue 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.

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.