Docker Compose Deployment

April 5, 2026 · View on GitHub

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.