#!/bin/sh # Bereitet MakeMKVs Datenverzeichnis vor, BEVOR der Worker startet. # # Wichtig (Befund 25.07.2026): Dieses Verzeichnis ist jetzt ein persistenter # Mount vom Host (docker-compose.yml). Darin liegen KEYDB.cfg (die einzige # heute funktionierende Schlüsselquelle für 4K-UHD), die AACS-Dumps # fehlgeschlagener Discs und MakeMKVs settings.conf. Deshalb wird die # settings.conf hier ERGÄNZT statt überschrieben — vorher hat dieses Skript # sie bei jedem Start plattgemacht und dabei alles außer app_Key gelöscht. # # Ohne Beta-Key: DVD-Ripping geht immer, Blu-ray läuft im 30-Tage-Testmodus. set -e DATEN_DIR="${MAKEMKV_DATA_DIR:-/root/.MakeMKV}" CONF="${DATEN_DIR}/settings.conf" # Die ganze Vorbereitung ist BEST EFFORT und läuft deshalb in einer Subshell # ohne set -e. Grund: Das Datenverzeichnis kommt jetzt vom Host und kann # schreibgeschützt sein oder einer fremden UID gehören (Freigabe, root_squash). # Vorher war das unmöglich — geschrieben wurde containerintern. Bräche der # Start daran ab, ergäbe "restart: unless-stopped" eine Endlosschleife, in der # auch reines DVD-Rippen tot wäre, obwohl das die Datei gar nicht braucht. # Denselben Weg geht tasks.py: OSError wird zur Warnung, der Job läuft weiter. if ! ( set +e mkdir -p "${DATEN_DIR}" || exit 1 [ -f "${CONF}" ] || touch "${CONF}" || exit 1 # app_Key aus der Umgebung setzen: alte Zeile raus, neue ans Ende. Alles # andere in der Datei bleibt stehen. (grep -v liefert Exit 1, wenn nichts # übrig bleibt — das ist hier kein Fehler.) if [ -n "${MAKEMKV_APP_KEY}" ]; then grep -v '^app_Key' "${CONF}" > "${CONF}.neu" 2>/dev/null printf 'app_Key = "%s"\n' "${MAKEMKV_APP_KEY}" >> "${CONF}.neu" || exit 1 mv "${CONF}.neu" "${CONF}" || exit 1 fi # Web-Kontakt explizit einschalten. MakeMKV hat das per Default ohnehin an # (Meldung 5074, am 25.07. im Worker verifiziert) — explizit steht es hier, # damit die Einstellung nachvollziehbar ist und nicht versehentlich kippt. # Quelle: forum.makemkv.com/forum/viewtopic.php?t=20364 (headless settings.conf) grep -q '^app_UpdateEnable' "${CONF}" || printf 'app_UpdateEnable = "1"\n' >> "${CONF}" || exit 1 exit 0 ); then echo "WARNUNG: ${DATEN_DIR} ist nicht beschreibbar." >&2 echo " MakeMKV-Beta-Key und app_UpdateEnable wurden NICHT gesetzt." >&2 echo " Der Worker startet trotzdem. Prüfe Rechte und Eigentümer des" >&2 echo " Host-Verzeichnisses (Standard: /srv/rippy/makemkv)." >&2 fi exec "$@"