media-rip/docker-compose.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

43 lines
1.4 KiB
YAML

# media.rip() — Docker Compose
#
# Usage:
# docker compose up
#
# Open http://localhost:8080 and paste a URL.
# On first run, you'll be prompted to set an admin password.
services:
mediarip:
image: ghcr.io/xpltdco/media-rip:latest
# build: . # Uncomment to build from source
ports:
- "8080:8000"
volumes:
- ./downloads:/downloads # Downloaded media — browsable on host
- mediarip-data:/data # Database, sessions, logs (persist this)
# - ./themes:/themes:ro # Custom theme CSS (optional)
# - ./config.yaml:/app/config.yaml:ro # Full config file (optional)
# environment:
## ── Uncomment to customize (all have sane defaults) ──
#
## Session isolation: isolated (default) | shared | open
# - MEDIARIP__SESSION__MODE=isolated
#
## Max parallel downloads (default: 3)
# - MEDIARIP__DOWNLOADS__MAX_CONCURRENT=3
#
## Auto-purge completed downloads after N minutes (default: 1440 = 24h)
# - MEDIARIP__PURGE__MAX_AGE_MINUTES=1440
#
## Pre-set admin password (skip first-run wizard):
# - MEDIARIP__ADMIN__PASSWORD=changeme
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/api/health"]
interval: 30s
timeout: 5s
retries: 3
start_period: 10s
volumes:
mediarip-data: