quorlasocial/docker-compose.yml
metatroncubeswdev ca42c781fa Admin: audit log and system health
- Every successful change in the dashboard is logged (who, what, when) with passwords, secrets and tokens masked;
  shown with the publish log in plain English, filter by period, client, person, search
- System health: publishing/scheduler switches, overdue or failed posts, stale numbers refreshes,
  connections needing reconnect or expiring, email, AI runs and API key, last backup, data size
- docker-compose mounts ./backups read-only so health can see the last backup

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 10:24:33 -04:00

45 lines
1.2 KiB
YAML

# Quorla on one server: docker compose up -d --build
# - app: the dashboard + publishing queue (port 4310 inside the Docker network only)
# - caddy: HTTPS for APP_DOMAIN with automatic Let's Encrypt certificates
# Live data stays in the folders next to this file, so rebuilding the image never touches it.
services:
app:
build: .
image: quorla:latest
restart: unless-stopped
env_file: .env
environment:
DASHBOARD_HOST: 0.0.0.0
DASHBOARD_COOKIE_SECURE: "true"
TRUST_PROXY: uniquelocal
SCHEDULER_ENABLED: "true"
volumes:
- ./data:/app/data
- ./clients:/app/clients
- ./team:/app/team
- ./reports:/app/reports
- ./branding:/app/branding
- ./backups:/app/backups:ro
expose:
- "4310"
caddy:
image: caddy:2.8
restart: unless-stopped
depends_on: [app]
environment:
APP_DOMAIN: ${APP_DOMAIN:?Set APP_DOMAIN in .env, e.g. app.quorlasocial.com}
ACME_EMAIL: ${ACME_EMAIL:?Set ACME_EMAIL in .env (certificate expiry notices go here)}
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./deploy/Caddyfile:/etc/caddy/Caddyfile:ro
- caddy_data:/data
- caddy_config:/config
volumes:
caddy_data:
caddy_config: