# media.rip() — Docker Compose with Caddy reverse proxy (recommended for production) # # Caddy automatically provisions TLS certificates via Let's Encrypt. # # Setup: # 1. Copy .env.example to .env and fill in your values # 2. Run: docker compose -f docker-compose.example.yml up -d services: media-rip: image: ghcr.io/xpltdco/media-rip:latest container_name: media-rip restart: unless-stopped volumes: - downloads:/downloads # Downloaded media files - data:/data # Database, sessions, error logs # Optional: # - ./themes:/themes:ro # Custom theme CSS overrides # - ./config.yaml:/app/config.yaml:ro # YAML config file environment: # Admin panel MEDIARIP__ADMIN__ENABLED: "true" MEDIARIP__ADMIN__USERNAME: "${ADMIN_USERNAME:-admin}" MEDIARIP__ADMIN__PASSWORD: "${ADMIN_PASSWORD}" # Session mode: isolated (default), shared, or open MEDIARIP__SESSION__MODE: "${SESSION_MODE:-isolated}" expose: - "8000" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/api/health"] interval: 30s timeout: 5s retries: 3 start_period: 10s caddy: image: caddy:2-alpine container_name: media-rip-caddy restart: unless-stopped ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile:ro - caddy_data:/data - caddy_config:/config depends_on: media-rip: condition: service_healthy volumes: downloads: data: caddy_data: caddy_config: