Files
anouma/docker-compose.yml
T

83 lines
2.6 KiB
YAML

networks:
anouma-network:
name: ${DOCKER_NETWORK:-anouma-network}
volumes:
pgdata:
services:
postgres:
image: postgres:16-alpine
restart: unless-stopped
networks:
- anouma-network
environment:
POSTGRES_USER: ${POSTGRES_USER:-postgres}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres}
POSTGRES_DB: ${POSTGRES_DB:-anouma}
volumes:
- pgdata:/var/lib/postgresql/data
# Not published to the host by default — only reachable from other
# containers on anouma-network. Uncomment to reach it from the host too
# (e.g. with a GUI DB client) during development:
# ports:
# - "127.0.0.1:5432:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres}"]
interval: 5s
timeout: 5s
retries: 20
app:
# Production never builds from source — the image is built once by
# GitHub Actions on release and pushed to GHCR; this host only
# ever pulls a specific, already-tested tag (see deploy.sh, which is the
# only thing that ever changes ANOUMA_IMAGE in .env).
image: ${ANOUMA_IMAGE:-ghcr.io/whitehai11/anouma:latest}
restart: unless-stopped
networks:
- anouma-network
env_file:
- .env
# DATABASE_URI in .env must point at the "postgres" service name, e.g.
# postgresql://postgres:<password>@postgres:5432/anouma — setup.sh sets
# this up for you automatically.
ports:
- "127.0.0.1:${APP_PORT:-3000}:3000"
volumes:
- ./media:/app/media
depends_on:
postgres:
condition: service_healthy
# Container-level healthcheck is inherited from the image's own
# HEALTHCHECK instruction (GET /api/health, which itself checks Postgres
# connectivity) — nothing to duplicate here.
# Self-hosted LiveKit SFU. Host networking is intentional: WebRTC media
# needs the UDP port range below to be reachable directly from the internet.
livekit:
image: livekit/livekit-server:latest
restart: unless-stopped
network_mode: host
env_file:
- .env
environment:
LIVEKIT_CONFIG: |
port: 7880
log_level: info
rtc:
tcp_port: 7881
port_range_start: 50000
port_range_end: 60000
use_external_ip: true
keys:
${LIVEKIT_API_KEY}: ${LIVEKIT_API_SECRET}
turn:
enabled: true
udp_port: 3478
# Optional external network to a reverse proxy (e.g. Nginx Proxy Manager)
# is attached via docker-compose.override.yml, generated by setup.sh only
# when such a network is actually detected — see DEPLOYMENT.md. Nothing
# here assumes NPM (or any reverse proxy) exists.