# Pull pre-built image from GHCR # Usage: docker compose -f deploy/docker-compose.yml up -d name: zpan services: zpan: image: ghcr.io/saltbo/zpan:latest ports: - "8222:8222" environment: - PORT=8222 - BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET:-} - BETTER_AUTH_URL=${BETTER_AUTH_URL:-http://localhost:8222} - DATABASE_URL=/data/zpan.db volumes: - zpan-data:/data healthcheck: test: ["CMD", "node", "-e", "fetch('http://127.0.0.1:8222/api/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"] interval: 5s timeout: 3s retries: 12 start_period: 10s restart: unless-stopped downloader: image: ghcr.io/saltbo/zpan:latest-cli hostname: zpan-downloader command: ["--config", "/data/config.yaml", "downloader", "up"] ports: - "${ZPAN_BT_PORT:-6881}:${ZPAN_DOWNLOADER_BT_LISTEN_PORT:-6881}/tcp" - "${ZPAN_BT_PORT:-6881}:${ZPAN_DOWNLOADER_BT_LISTEN_PORT:-6881}/udp" environment: - ZPAN_SERVER_URL=http://zpan:8222 - ZPAN_DOWNLOADER_ENGINE=${ZPAN_DOWNLOADER_ENGINE:-auto} - ZPAN_DOWNLOADER_DOWNLOAD_DIR=/data/downloads - ZPAN_DOWNLOADER_STATE_DIR=/data/state - ZPAN_DOWNLOADER_BT_LISTEN_PORT=${ZPAN_DOWNLOADER_BT_LISTEN_PORT:-6881} - ZPAN_DOWNLOADER_SEED_CACHE_LIMIT=${ZPAN_DOWNLOADER_SEED_CACHE_LIMIT:-10GB} volumes: - downloader-data:/data - /etc/hostname:/host/etc/hostname:ro depends_on: zpan: condition: service_healthy restart: unless-stopped volumes: zpan-data: downloader-data: