media-rip/docker-compose.example.yml
xpltd 2bb97a0b30 Accept plaintext admin password — hash on startup, clear from memory
- New MEDIARIP__ADMIN__PASSWORD env var accepts plaintext password
- Hashed via bcrypt on startup, plaintext cleared from memory immediately
- PASSWORD_HASH still works for backward compatibility (takes precedence)
- Removes the 'docker run python bcrypt' ceremony from setup flow
- Updated README, docker-compose, .env.example to use plaintext
2026-03-21 22:40:34 -05:00

55 lines
1.6 KiB
YAML

# 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: