services: plex: image: lscr.io/linuxserver/plex:latest logging: driver: "json-file" options: max-size: "10m" max-file: "3" container_name: plex network_mode: host environment: - PUID=1000 - PGID=1000 - TZ=Europe/Berlin - VERSION=public devices: - /dev/dri:/dev/dri volumes: - /srv/docker/plex:/config - /mnt/datengrab:/Datengrab - /srv/docker/plex/tmp-transcode/:/transcode - /srv/docker/plex/plex-tmp-downloads:/plex-tmp-downloads - /mnt/usb1-2:/Datengrab_USB restart: unless-stopped plex-db-backup: container_name: plex_db_backup image: keinos/sqlite3:latest restart: always user: "1000:100" volumes: - "/volume1/docker/plex/Library/Application Support/Plex Media Server/Plug-in Support/Databases:/db_source:ro" - "/volume1/docker/backups/plex:/backup" # WICHTIG: Wir überschreiben den Entrypoint, damit wir eine Endlosschleife nutzen können entrypoint: ["/bin/sh", "-c"] command: > "sleep 10; while true; do TIMESTAMP=$(date +%Y%m%d-%H%M); BACKUP_FILE=/backup/plex_backup_$$TIMESTAMP.sql; echo \"$(date): Starte Plex-Sicherung nach $$BACKUP_FILE...\"; # Nutzung des -readonly Flags statt URI sqlite3 -readonly /db_source/com.plexapp.plugins.library.db \".backup $$BACKUP_FILE\"; if [ $? -eq 0 ]; then echo \"$(date): Sicherung erfolgreich abgeschlossen.\"; find /backup -name 'plex_backup_*.sql' -mmin +10080 -delete; else echo \"$(date): FEHLER beim Backup!\"; # Falls eine leere Datei entstanden ist, löschen wir sie [ -f \"$$BACKUP_FILE\" ] && [ ! -s \"$$BACKUP_FILE\" ] && rm \"$$BACKUP_FILE\"; fi; echo \"$(date): Nächster Run in 24 Stunden.\"; sleep 86400; done"