# Portainer stack for Nox. See docs/design.md §11.3. # # Every variable the app reads MUST be listed under `environment:` here. # A variable set in Portainer's UI but absent from this file silently does # nothing — the trap that bit PLAYERMAP_SHOW_GMS on the Mythica stack. # # Deployed as a Portainer *git* stack: Portainer clones this repo onto Nox and # `docker compose up` builds the image there, so no registry is needed. The # image: tag still pins a real version so a redeploy replaces it predictably # rather than reusing a stale :latest. services: mediashelf: image: ${MEDIASHELF_IMAGE:-mediashelf:0.1.0} build: . container_name: mediashelf restart: unless-stopped ports: - "${MEDIASHELF_PORT:-8086}:8080" volumes: - mediashelf_data:/data environment: - MEDIASHELF_SECRET_KEY=${MEDIASHELF_SECRET_KEY} - LOG_LEVEL=${LOG_LEVEL:-INFO} - TZ=${TZ:-America/Regina} - PLEX_BASE_URL=${PLEX_BASE_URL} - PLEX_TOKEN=${PLEX_TOKEN} - PLEX_VERIFY_SSL=${PLEX_VERIFY_SSL:-true} - PLEX_TIMEOUT_S=${PLEX_TIMEOUT_S:-30} - PLEX_PAGE_SIZE=${PLEX_PAGE_SIZE:-500} - PLEX_REQUEST_DELAY_MS=${PLEX_REQUEST_DELAY_MS:-0} - TAUTULLI_BASE_URL=${TAUTULLI_BASE_URL} - TAUTULLI_API_KEY=${TAUTULLI_API_KEY} - TAUTULLI_TIMEOUT_S=${TAUTULLI_TIMEOUT_S:-30} - TAUTULLI_PAGE_SIZE=${TAUTULLI_PAGE_SIZE:-1000} - HISTORY_SOURCE=${HISTORY_SOURCE:-auto} - SESSION_MERGE_WINDOW_H=${SESSION_MERGE_WINDOW_H:-6} - COMPLETION_THRESHOLD=${COMPLETION_THRESHOLD:-85} - ABANDON_CEILING=${ABANDON_CEILING:-15} - DATABASE_PATH=/data/mediashelf.db - SCAN_SCHEDULE_CRON=${SCAN_SCHEDULE_CRON:-0 4 * * *} - SCAN_FULL_SWEEP_CRON=${SCAN_FULL_SWEEP_CRON:-0 3 * * 0} - SCAN_ON_STARTUP=${SCAN_ON_STARTUP:-false} - SCAN_LOCK_TIMEOUT_S=${SCAN_LOCK_TIMEOUT_S:-7200} - SCHEDULER_ENABLED=${SCHEDULER_ENABLED:-true} - SCORE_STALE_HORIZON_DAYS=${SCORE_STALE_HORIZON_DAYS:-730} - SCORE_AGE_HORIZON_DAYS=${SCORE_AGE_HORIZON_DAYS:-1095} - SCORE_POPULAR_AT=${SCORE_POPULAR_AT:-3} - SCORE_REJECTED_AT=${SCORE_REJECTED_AT:-2} - SCORE_SOLITUDE_AT=${SCORE_SOLITUDE_AT:-3} - SCORE_GRACE_DAYS=${SCORE_GRACE_DAYS:-30} - SCORE_RECENT_DAYS=${SCORE_RECENT_DAYS:-90} # Empty by default. Nothing is ever kept unless someone says so (§6.6). - KEEP_ALL_LIBRARIES=${KEEP_ALL_LIBRARIES:-} volumes: mediashelf_data: