# Flowplan with Docker Compose. # # cp .env.example .env # then set APP_URL (OIDC and SMTP optional) # docker compose up -d # # Uses the prebuilt image from GitHub. To build from this checkout instead: # docker compose up -d --build # Put a reverse proxy with HTTPS in front (Caddy, Traefik, nginx, Coolify …): # the port is bound to 127.0.0.1 only. Run exactly one instance (SQLite). services: flowplan: image: ghcr.io/yannicschuller/flowplan:${FLOWPLAN_VERSION:-latest} build: . pull_policy: missing env_file: .env environment: FLOWPLAN_DATA_DIR: /app/data ports: - "127.0.0.1:3000:3000" volumes: - flowplan-data:/app/data restart: unless-stopped healthcheck: test: [ "CMD", "node", "-e", "fetch('http://127.0.0.1:3000/api/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))", ] interval: 30s timeout: 5s start_period: 20s retries: 3 # Optional: speech-to-text for voice notes. Uncomment and set # WHISPER_URL=http://whisper:8000 in .env (see the docs on configuration). # whisper: # image: ghcr.io/speaches-ai/speaches:latest-cpu # volumes: # - whisper-models:/home/ubuntu/.cache/huggingface/hub # restart: unless-stopped volumes: flowplan-data: # whisper-models: