docker-compose.yml
Rama main · réplica de lectura del repositorio original.
version: "3.9"
services:
# ─── Torrent Scraper ──────────────────────────────────────────────────────
scraper:
build:
context: ./scraper
dockerfile: Dockerfile
image: magnetio-scraper:latest
container_name: magnetio_scraper
restart: unless-stopped
environment:
- PORT=8080
- REDIS_URI=redis://:${REDIS_PASSWORD:-magnetio-redis-secret}@redis:6379
- CACHE_TTL_STREAMS=${CACHE_TTL_STREAMS:-86400}
- LOG_LEVEL=${LOG_LEVEL:-info}
- PREWARM_ENABLED=${PREWARM_ENABLED:-true}
- PREWARM_SCHEDULE=${PREWARM_SCHEDULE:-0 3 * * *}
- PREWARM_MOVIE_LIMIT=${PREWARM_MOVIE_LIMIT:-500}
- PREWARM_SERIES_LIMIT=${PREWARM_SERIES_LIMIT:-200}
- PREWARM_CACHE_TTL=${PREWARM_CACHE_TTL:-86400}
# Server-wide fallback for the localized-title lookup used by
# non-English audio requests. Optional; users may supply their own key.
- TMDB_API_KEY=${TMDB_API_KEY:-}
deploy:
resources:
limits:
memory: 512M
cpus: "1.0"
depends_on:
redis:
condition: service_healthy
networks:
- magnetio_net
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:8080/health"]
interval: 30s
timeout: 5s
retries: 3
# ─── Stremio Addon ────────────────────────────────────────────────────────
addon:
build:
context: ./addon
dockerfile: Dockerfile
image: magnetio-addon:latest
container_name: magnetio_addon
restart: unless-stopped
ports:
- "${PORT:-7000}:7000"
environment:
- PORT=7000
- REDIS_URI=redis://:${REDIS_PASSWORD:-magnetio-redis-secret}@redis:6379
- SCRAPER_URL=http://scraper:8080
- METRICS_USER=${METRICS_USER:-admin}
- METRICS_PASSWORD=${METRICS_PASSWORD:-magnetio}
- LOG_LEVEL=${LOG_LEVEL:-info}
- ADDON_PUBLIC_URL=${ADDON_PUBLIC_URL:-}
- OPENSUBTITLES_API_KEY=${OPENSUBTITLES_API_KEY:-}
- OPENSUBTITLES_USERNAME=${OPENSUBTITLES_USERNAME:-}
- OPENSUBTITLES_PASSWORD=${OPENSUBTITLES_PASSWORD:-}
- OPENSUBTITLES_USER_AGENT=${OPENSUBTITLES_USER_AGENT:-Magnetio v1.0.0}
- FFSUBSYNC_PATH=${FFSUBSYNC_PATH:-}
- ALASS_PATH=${ALASS_PATH:-}
- SUBTITLE_SYNC_MAX_OFFSET_SECONDS=${SUBTITLE_SYNC_MAX_OFFSET_SECONDS:-300}
- ALASS_SPLIT_PENALTY=${ALASS_SPLIT_PENALTY:-10}
deploy:
resources:
limits:
memory: 768M
cpus: "1.5"
depends_on:
redis:
condition: service_healthy
scraper:
condition: service_healthy
networks:
- magnetio_net
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:7000/health"]
interval: 30s
timeout: 5s
retries: 3
# ─── Redis Cache ──────────────────────────────────────────────────────────
redis:
image: redis:7-alpine
container_name: magnetio_redis
restart: unless-stopped
command: redis-server --save 60 1 --loglevel warning --maxmemory 512mb --maxmemory-policy allkeys-lru --requirepass ${REDIS_PASSWORD:-magnetio-redis-secret}
deploy:
resources:
limits:
memory: 256M
cpus: "0.5"
volumes:
- ${REDIS_DATA_PATH:-redis_data}:/data
networks:
- magnetio_net
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
# ─── Jackett (Optional) ───────────────────────────────────────────────────
jackett:
image: lscr.io/linuxserver/jackett:latest
container_name: magnetio_jackett
restart: unless-stopped
profiles:
- jackett
environment:
- PUID=1000
- PGID=1000
- TZ=${TZ:-Etc/UTC}
- AUTO_UPDATE=true
volumes:
- jackett_config:/config
- jackett_downloads:/downloads
ports:
- "${JACKETT_PORT:-9117}:9117"
networks:
- magnetio_net
# ─── Prowlarr (Optional) ─────────────────────────────────────────────────
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: magnetio_prowlarr
restart: unless-stopped
profiles:
- prowlarr
environment:
- PUID=1000
- PGID=1000
- TZ=${TZ:-Etc/UTC}
volumes:
- prowlarr_config:/config
ports:
- "${PROWLARR_PORT:-9696}:9696"
networks:
- magnetio_net
volumes:
redis_data:
jackett_config:
jackett_downloads:
prowlarr_config:
networks:
magnetio_net:
driver: bridge