# Minimal Gitea Mirror deployment # Only includes what CANNOT be configured via the Web UI # Everything else can be set up through the web interface after deployment services: gitea-mirror: image: ghcr.io/raylabshq/gitea-mirror:latest container_name: gitea-mirror restart: unless-stopped ports: - "${PORT:-4321}:4321" user: ${PUID:-1000}:${PGID:-1000} volumes: - ./data:/app/data environment: # === ABSOLUTELY REQUIRED === # This MUST be set and CANNOT be changed via UI - BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET} # Min 32 chars, required for sessions - BETTER_AUTH_URL=${BETTER_AUTH_URL:-http://localhost:4321} - BETTER_AUTH_TRUSTED_ORIGINS=${BETTER_AUTH_TRUSTED_ORIGINS:-http://localhost:4321} # === CORE SETTINGS === # These are technically required but have working defaults - NODE_ENV=production - DATABASE_URL=file:data/gitea-mirror.db - HOST=0.0.0.0 - PORT=4321 - PUBLIC_BETTER_AUTH_URL=${PUBLIC_BETTER_AUTH_URL:-http://localhost:4321} # Optional concurrency controls (defaults match in-app defaults) # If you want perfect ordering of issues and PRs, set these at 1 - MIRROR_ISSUE_CONCURRENCY=${MIRROR_ISSUE_CONCURRENCY:-3} - MIRROR_PULL_REQUEST_CONCURRENCY=${MIRROR_PULL_REQUEST_CONCURRENCY:-5} healthcheck: test: ["CMD", "wget", "--no-verbose", "--tries=3", "--spider", "http://localhost:4321/api/health"] interval: 30s timeout: 10s retries: 5 start_period: 15s # === QUICK START === # # 1. Create a .env file with only ONE required variable: # BETTER_AUTH_SECRET=your-32-character-minimum-secret-key-here # # 2. Run: # docker-compose -f docker-compose.alt.yml up -d # # 3. Access at http://localhost:4321 # # 4. Sign up for an account (first user becomes admin) # # 5. Configure everything else through the web UI: # - GitHub credentials # - Gitea credentials # - Mirror settings # - Scheduling options # - Auto-import settings # - Cleanup preferences # # That's it! Everything else can be configured via the web interface.