Doku: 15 Troubleshooting-Leichen raus, SAVEPOINT v3.0 + ROADMAP Etappe 11
Ampel / ampel (push) Failing after 29s

ARCAN-*.md, Setup-/Fix-Skripte (u.a. install-rippy.sh fuer ein nie
existentes "LXC 106"), proxmox-add-drive.sh (scsi-Passthrough war der
falsche Weg — richtig ist USB-Passthrough per Vendor-ID, siehe SAVEPOINT)
und die udev-Rules (referenzierten ein nie gebautes udev_daemon.py).
SAVEPOINT dokumentiert Kernumbau + Hardware-Kette + Firmware-Befund (BU40N
1.05 kann kein UHD — Crossflash 1.03-MK ist der dokumentierte Weg).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-07-23 15:02:39 +02:00
parent f2da1ad525
commit cf2f65c567
17 changed files with 54 additions and 538 deletions
+25 -3
View File
@@ -222,10 +222,32 @@
**Ziel:** DVD/Blu-ray-Ripping auf `makemkvcon` umstellen (verlustfrei), wie im
KONZEPT als Muss definiert. HandBrake fliegt aus dem Ripp-Pfad (bleibt ggf. als
optionaler Transcode-Schritt NACH dem verlustfreien Rip).
- [ ] Worker-Dockerfile: makemkv-oss/makemkv-bin bauen + Beta-Key-Handling (Env/Cron)
- [ ] ripping.py: rip_dvd/rip_bluray auf `makemkvcon --all --progress mkv` umstellen
(Fortschritts-Parsing anpassen, Tests zuerst!)
- [x] Worker-Dockerfile: makemkv-oss/makemkv-bin 1.18.4 multi-stage gebaut,
Beta-Key via MAKEMKV_APP_KEY-Env (entrypoint.sh) — 23.07.
- [x] ripping.py: auf `makemkvcon -r --progress=-same mkv dev:… all` umgestellt,
PRGV-Fortschritts-Parsing laut makemkv.com/developers/usage.txt, Tests dabei — 23.07.
- [ ] E2E mit echter Disc verifizieren (Commander, Laufwerk nötig)
**Fertig wenn:** eine echte DVD landet verlustfrei als MKV im Output, Ampel grün.
**Entstanden aus:** Review 22.07. — HandBrake-lossy war eine stille Abweichung vom
Konzept; Entscheid 22.07. abends: Konzept gilt, Umbau als eigene Etappe.
---
## Etappe 11 (23.07.2026): Kernumbau — der Zweck funktioniert erstmals wirklich
**Befund des Komplett-Audits (Claude):** Der Kern „Disc rein → gerippt raus"
hatte NIE einen Code-Pfad: kein POST /jobs, kein udev-Daemon (das referenzierte
udev_daemon.py existierte nirgends), kein Ripping-Tool im Worker-Image,
Disc-Erkennung strukturell tot (`file -L` auf Block-Device), Geräte als
Bind-Mounts statt devices: (EPERM), UI rief hartkodiert localhost:8000 auf.
**Gebaut:**
- [x] POST /jobs (API → Celery → Worker) + Job-Persistenz in Postgres
- [x] Disc-Watcher in der API (ioctl-Poll statt udev — Container-tauglich)
- [x] Disc-Erkennung neu über Kernel-ioctls (detection.py, in API+Worker)
- [x] /logs-Endpoint + echte Logs-Seite (Mock-Daten raus)
- [x] /settings-Endpoints (Settings-Seite sprach vorher ins Leere)
- [x] UI: Vite-Build + nginx mit /api-Proxy statt Dev-Server; relative API-Pfade
- [x] compose: devices: statt Bind-Mounts; Ausgabe aufs media-Volume
- [ ] Jellyfin-Post-Processing an den Worker anbinden (NFO/Poster nach dem Rip)
- [ ] Auth vor die schreibenden Endpoints (JWT existiert, schützt aber nichts)