Commit Graph

11 Commits

Author SHA1 Message Date
Hitonabi 96c6e1fe42 Compose: /dev/sg1 fuer den Worker — MakeMKV geht ueber SCSI-Generic
Ampel / ampel (push) Successful in 33s
Befund: mit nur /dev/sr0 meldet makemkvcon "can't find any usable optical
drives" — es nutzt die sg-Schicht (libdriveio), nicht den Block-Knoten.
sg1 = BD-Laufwerk in der VM (sg0 = Systemplatte).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 15:16:07 +02:00
Hitonabi eee3a83d0e Compose: Laufwerk als devices: statt Bind-Mount, Ausgabe aufs media-Volume
Bind-Mounts unter volumes: geben dem Container den Geräteknoten, aber keine
Device-Cgroup-Erlaubnis — jedes open() scheiterte mit EPERM. Totes
disc:-Volume raus (kein udevd legt dort je Symlinks an), depends_on wartet
jetzt auf healthy, Worker-read_only bis zur Härtung ausgesetzt (MakeMKV
braucht HOME).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 15:02:13 +02:00
Hitonabi 977da015fb fix: remove read_only for API container to allow device mounts
Ampel / ampel (push) Successful in 30s
2026-07-23 13:37:51 +02:00
Hitonabi 0ae9378fca fix: add device mounts to API container for /devices endpoint
Ampel / ampel (push) Successful in 35s
2026-07-23 13:36:44 +02:00
Hitonabi 524d2e570e fix(docker-compose): simplify device mounts, remove redundant volumes
Ampel / ampel (push) Failing after 29s
- Remove cdrom/dvd anonymous volumes (not needed with direct mounts)
- Remove redundant devices/cap_add (mounts are sufficient)
2026-07-23 12:20:56 +02:00
Hitonabi 61af353559 fix(worker): mount host devices for disc detection
Ampel / ampel (push) Failing after 30s
- Add direct device mounts (cdrom, dvd, sr0) to worker
- Add SYS_ADMIN capability for udev access
- Install isoinfo and udev in worker container
- Add pyudev for device monitoring
- Update udev rules with correct paths
2026-07-23 12:15:55 +02:00
Hitonabi 95c1f9b105 feat(ui): SoC Refactoring & Config Validation
- Theme Context ausgelagert (ThemeContext.tsx + useDarkMode.ts)
- Config Validation mit TMDB-API-Key Pflicht (config_validation.py)
- Cache Key Centralization (cache/keys.py)
- CD-Ripping mit abcde implementiert (Worker)
- Docker Compose mit Healthchecks & LOG_LEVEL
- ROADMAP.md & SAVEPOINT.md aktualisiert
2026-07-22 16:38:19 +02:00
Hitonabi ba2429612a rippy-ui-modern: API UI Modernisiert & Import-Fixes
- Doppelte Arcane-Einträge behoben (rippy statt Rippy) - Import-Fixes: relative → absolute imports in main.py, cache/__init__.py, prescan/__init__.py, clients/__init__.py - Neue Dateien: cache.py, prescan.py, Settings.tsx - API-Port 8000 in docker-compose.yml gemappt - UI mit Sidebar, Dark Mode, Einstellungen-Tabs

Fixes: #2978 (doppelte Einträge), #2888 (Import-Fehler)
2026-07-21 22:08:03 +02:00
Hitonabi efa642e676 Etappe 6: Sicherheit
- docker-compose.yml mit read_only: true, tmpfs, healthchecks
- API- und Worker-Dockerfiles mit minimalem Image
- requirements.txt für Python-Abhängigkeiten
2026-07-21 17:26:01 +02:00
Hitonabi 9e73d065f9 Etappe 2: Ripping-Pipeline — Erste Implementierung
- DockerfileWorker: abcde, flac, ffmpeg, handbrake-cli installiert
- ripping.py: Ripping-Module für DVD/Blu-ray mit HandBrake
- tasks.py: Disc-Typ-Erkennung + passendes Ripping-Modul
- docker-compose.yml: Output-Verzeichnis /output hinzugefügt
- output/ Verzeichnis erstellt

WIP: CD-Ripping mit abcde noch nicht implementiert
2026-07-21 16:47:50 +02:00
Hitonabi 5d23b1e6c8 Etappe 1: Container-Infrastruktur + udev-Erkennung
- Docker Compose mit 5 Containern (api, worker, ui, postgres, redis)
- Basis-Dockerfiles für FastAPI, Celery, React/Vite, PostgreSQL, Redis
- udev-Regel + Python-Daemon für Disc-Einwurf-Erkennung
- Device-Resolver (UUID/Serial → /dev/disc/<uuid>)
- Celery-Worker mit Dummy-Job-Task (Disc-Erkennung)
- .env.example mit Umgebungsvariablen
- .gitignore für Docker, .env, node_modules
- README, SAVEPOINT, ROADMAP aktualisiert
2026-07-21 14:59:09 +02:00