Add SYNC_INTERVAL_SECONDS environment variable with default 1800 (30 minutes). Add library_cache global dict with rows/series/updated_at/error/ready fields and library_cache_lock for thread-safe access. Extract refresh_library_cache() function to update Radarr/Sonarr data with error handling that preserves last good snapshot during outages. Add background_library_sync() daemon
45 lines
1.5 KiB
YAML
45 lines
1.5 KiB
YAML
services:
|
|
media-max:
|
|
build: .
|
|
container_name: media-max
|
|
restart: unless-stopped
|
|
gpus: all
|
|
ports:
|
|
- "8099:8099"
|
|
devices:
|
|
- "${RAID_DEVICE:-/dev/md127}:${RAID_DEVICE:-/dev/md127}"
|
|
cap_add:
|
|
- SYS_RAWIO
|
|
device_cgroup_rules:
|
|
- "b 8:* rwm"
|
|
- "b 9:* rwm"
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
NVIDIA_VISIBLE_DEVICES: ${NVIDIA_VISIBLE_DEVICES:-all}
|
|
NVIDIA_DRIVER_CAPABILITIES: ${NVIDIA_DRIVER_CAPABILITIES:-compute,utility}
|
|
# Serverseitiger Bibliotheks-Sync; 1800 = alle 30 Minuten, 0 = nur beim Start.
|
|
SYNC_INTERVAL_SECONDS: ${SYNC_INTERVAL_SECONDS:-1800}
|
|
volumes:
|
|
# Host-Pfad deiner Film-Library -> interner Dashboard-Pfad
|
|
- ${FILM_MEDIA_VOLUME}:/media/filme:ro
|
|
# Falls Sonarr verwendet wird, muss SERIES_MEDIA_VOLUME auf die Serien-Library zeigen.
|
|
- ${SERIES_MEDIA_VOLUME:-/nesflix/serien}:/media/serien:ro
|
|
# Read-only Datastore für Größen-/Kategorie-Scans.
|
|
- ${DATASTORE_HOST_PATH:-/nesflix}:/nesflix:ro
|
|
# Read-only Host-Devices für lsblk/smartctl; Media Max führt keine RAID-Schreiboperationen aus.
|
|
- /dev:/host-dev:ro
|
|
# Read-only Hardware-Metadaten für Seriennummern und SMART-Zuordnung.
|
|
- /sys:/host-sys:ro
|
|
- /run/udev:/host-run-udev:ro
|
|
- ./data:/data
|
|
networks:
|
|
- media
|
|
|
|
networks:
|
|
media:
|
|
external: true
|
|
name: media-stack_default
|