Self-Hosting
DaoFlow is designed to run on your own infrastructure. This section covers the current production stack, staging rehearsal, environment configuration, SSL, and incident recovery.
Quick Start (CLI Installer)
The recommended way to deploy DaoFlow in production:
# Interactive — prompts for domain, admin email, password
curl -fsSL https://raw.githubusercontent.com/DaoFlow-dev/DaoFlow/main/scripts/install.sh | sh
# Non-interactive — fully automated
curl -fsSL https://raw.githubusercontent.com/DaoFlow-dev/DaoFlow/main/scripts/install.sh | sh -s -- \
--dir /opt/daoflow \
--domain deploy.example.com \
--email admin@example.com \
--password 'SecureP@ss123' \
--yes
The installer defaults to the lean workflow profile. To include the durable Temporal services,
pass --workflow-profile temporal explicitly.
See Installation for full details.
Or deploy manually with Docker Compose (see Docker Compose Setup).
Contents
| Guide | Description |
|---|---|
| Requirements | Hardware and software prerequisites |
| Docker Compose | Production Docker Compose deployment |
| Staging Runbook | Rehearse releases or local source safely |
| Incident Recovery | Recover from common operator failures |
| Environment Variables | All configurable env vars |
| SSL & Domains | HTTPS and domain configuration |
| Upgrading | Upgrading to new versions |
Current Production Topology
The repository production stack is a normal Docker Compose project built from:
daoflow— web UI, API, and worker entrypointpostgres— DaoFlow application databaseredis— streaming and transient coordinationtemporal-postgresql,temporal— optional services in thetemporalCompose profiletemporal-ui— optional dashboard in its separatetemporal-uiCompose profile
The default lean install starts only the first three services. The explicit temporal profile adds
the Temporal services and persists DAOFLOW_WORKFLOW_PROFILE=temporal, COMPOSE_PROFILES=temporal,
and DAOFLOW_ENABLE_TEMPORAL=true. Lean persists DAOFLOW_WORKFLOW_PROFILE=lean, has no active
Compose profiles, and sets DAOFLOW_ENABLE_TEMPORAL=false.
When an existing install is rerun without a profile option, the installer preserves or infers its
current choice. A temporal-to-lean switch explains its plan before mutation, removes the Temporal
containers, and preserves the temporal-pgdata named volume. Temporal UI remains separately opt-in.
Recommended Operator Path
- Install or copy the reference compose stack
- Follow the staging runbook on a non-production host
- Verify deploy, rollback, backup, and log flows end to end
- Promote the same operational pattern to production
- Keep the incident recovery guide nearby for break-glass situations