docker-compose.yml
Rama main · réplica de lectura del repositorio original.
services:
stoa-backend:
image: ghcr.io/the-d-b/stoa-backend:latest
container_name: stoa-backend
volumes:
- stoa-data:/data
# Docker control panel — mount WITHOUT :ro (start/stop/restart need write access)
# - /var/run/docker.sock:/var/run/docker.sock
# Private CA certificates — avoids needing "Skip TLS verify" on internal services
# - /usr/local/share/ca-certificates:/usr/local/share/ca-certificates:ro
environment:
# ── Required ──────────────────────────────────────────────────────────────
# Signs JWTs and derives the AES-256 key for encrypting stored secrets.
# Generate with: openssl rand -hex 32
STOA_SESSION_SECRET: "change-me-use-openssl-rand-hex-32"
# ── Optional: paths ───────────────────────────────────────────────────────
# STOA_DB_PATH: /data/db/stoa.db # default
# STOA_PORT: "8080" # default
# STOA_ICONS_DIR: /data/icons # default
# STOA_CSS_DIR: /data/css # default
# ── Optional: CORS ────────────────────────────────────────────────────────
# Required if your reverse proxy rewrites the Host header or if you access
# the API from a different origin than the frontend.
# STOA_ALLOWED_ORIGINS: "https://stoa.example.com"
# ── Optional: OAuth / OIDC ───────────────────────────────────────────────
# See docs/oauth.md for full setup instructions.
# STOA_OAUTH_CLIENT_ID: ""
# STOA_OAUTH_CLIENT_SECRET: ""
# STOA_OAUTH_ISSUER_URL: "https://auth.example.com/application/o/stoa/"
# STOA_OAUTH_REDIRECT_URL: "https://stoa.example.com/api/auth/callback"
restart: unless-stopped
networks:
- stoa-net
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://localhost:8080/api/health"]
interval: 30s
timeout: 5s
retries: 3
start_period: 10s
stoa-frontend:
image: ghcr.io/the-d-b/stoa-frontend:latest
container_name: stoa-frontend
ports:
- "8080:80"
depends_on:
- stoa-backend
restart: unless-stopped
networks:
- stoa-net
networks:
stoa-net:
driver: bridge
volumes:
stoa-data:
driver: local