homelab-brain/homelab-ai-bot/JELLYFIN.md
Homelab Cursor c4454e1c4d docs: Jellyfin Infrastruktur vollständig dokumentiert
- SSH-Zugang (michael@192.168.178.149 via lokalem Netz)
- NAS-Struktur: 192.168.178.170/Medien mit allen Mount-Punkten
- Save.TV → Jellyfin Workflow
- Synology NAS Shares und Zugang
- Staging-Ordner Filme zum nachbearbeiten erklaert
- Duplikat-Check Prozess dokumentiert
2026-04-06 16:57:43 +02:00

142 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Jellyfin Server
## Zugang
| Feld | Wert |
|------|------|
| Host | `192.168.178.149` (lokal) / `100.77.105.3` (Tailscale) |
| Port | `8096` |
| Hostname | `debian-jellyfin-homeassistent` |
| OS-User | `michael` / PW: `astral66` |
| Version | 10.9.11 |
| API-Key | `7285b4a8793541648bf156599ae05b43` (App: `homelab-ai`) |
| Admin-User | `admin` |
| Admin-PW | `astral66` |
**SSH-Zugang** (nur aus dem lokalen 192.168.178.x Netz, z.B. via pve3):
```bash
sshpass -p 'astral66' ssh -o StrictHostKeyChecking=no michael@192.168.178.149
```
Von außen via Tailscale nur HTTP API erreichbar (Tailscale SSH erfordert Browser-Authentifizierung).
## Netzwerk / Infrastruktur
```
Internet
└── Fritz!Box (192.168.178.1)
├── Jellyfin-Server 192.168.178.149 (debian-jellyfin-homeassistent)
├── NAS/Windows 192.168.178.170 (Share: "Medien")
├── Synology NAS 192.168.178.94 (Share: "Filme" = Jellyfin Quelle, Share: "Michael")
└── pve3 192.168.178.250 (= pve-mu-3, Tailscale: 100.109.101.12)
```
### NAS-Zugriff auf dem Jellyfin-Server
Der Jellyfin-Server mountet den Share `Medien` von **192.168.178.170** (Windows-Maschine) an drei Stellen:
| Mount-Punkt | Zweck |
|-------------|-------|
| `/mnt/nas/` | Haupt-NAS-Zugriff (user michael) |
| `/mnt/nas_filme/` | Gleicher Share, als root gemountet (automount) |
| `/srv/media/` | Gleicher Share, als root gemountet |
**Wichtige Ordner auf dem NAS (192.168.178.170/Medien):**
| Pfad | Inhalt |
|------|--------|
| `/mnt/nas/Recorded TV/` | ~700+ Jellyfin-Quelldateien (`.mp4`) |
| `/mnt/nas/Filme zum nachbearbeiten/` | Staging-Ordner: neue SaveTV-Filme warten hier auf Umbenennung/Einpflege |
| `/mnt/nas/Filme umbenennen Eigangsordner/` | Eingangs-Ordner für Batch-Umbenennung |
| `/mnt/nas/Heimatfilme/` | Private Heimvideos |
### Synology NAS (192.168.178.94)
Auf pve3 (192.168.178.250 / Tailscale 100.109.101.12) gemountet:
```bash
# Zugriff von pve3 (100.109.101.12):
ls /mnt/synology/ # Michael-Share (Michas Datenspeicher)
# enthält u.a.: Filme/, Heimatfilme/, Backups/, Musik/, ...
```
SMB-Shares auf der Synology:
- `Filme` Jellyfin Quelle (benötigt eigene Credentials)
- `Michael` Michas Datenspeicher (User: Orbitalo, PW: astral66)
- `Mila` Milas Datenspeicher
## Bibliotheken
| Name | Typ | Quellpfad (auf Jellyfin-Server) |
|------|-----|-------------------------------|
| Filme | movies | `/srv/media/Recorded TV/` |
Aktuell ~718 Filme im Bestand.
## API-Nutzung
```bash
API_KEY="7285b4a8793541648bf156599ae05b43"
JF="http://100.77.105.3:8096" # via Tailscale (von pve-hetzner aus)
# oder: JF="http://192.168.178.149:8096" # lokal
# Anzahl Filme
curl -s "$JF/Items/Counts?api_key=$API_KEY"
# Alle Filme (Name + Pfad)
curl -s "$JF/Items?api_key=$API_KEY&IncludeItemTypes=Movie&Recursive=true&Fields=Name,Path&Limit=1000"
# Film suchen
curl -s "$JF/Items?api_key=$API_KEY&SearchTerm=Matrix&IncludeItemTypes=Movie&Recursive=true"
```
**Erreichbarkeit:** Tailscale-IP `100.77.105.3` ist von pve-hetzner aus direkt nutzbar (kein Hop nötig).
## Save.TV → Jellyfin Workflow
```
Save.TV (Cloud-Recorder)
└── CT 116 auf pve-hetzner
└── savetv_auto_download.py (Cron */30 * * * *)
→ lädt Kinofilme nach /mnt/savetv/ (auf pve-hetzner)
→ 1 Film gleichzeitig, 48h + TID-Jitter nach Aufnahme
└── savetv_sync.py
→ kopiert Dateien von Hetzner via HTTP-API
→ Ziel: /mnt/nas/Filme zum nachbearbeiten/ (auf NAS 192.168.178.170)
→ Wartezeit: 24h nach Download
└── Manuell: Umbenennen + in "Recorded TV" verschieben
→ Jellyfin scannt automatisch und nimmt Film auf
```
## Staging-Ordner „Filme zum nachbearbeiten"
**Zugriff:**
```bash
# Von pve3 (100.109.101.12) via pve-hetzner:
sshpass -p 'astral66' ssh michael@192.168.178.149 'ls "/mnt/nas/Filme zum nachbearbeiten/"'
# Vergleich mit Jellyfin (Duplikat-Check):
# 1. JF-Filme holen:
curl -s "http://100.77.105.3:8096/Items?api_key=7285b4a8793541648bf156599ae05b43&IncludeItemTypes=Movie&Recursive=true&Fields=Name&Limit=1000"
# 2. Liste "Filme zum nachbearbeiten" holen (via michael@192.168.178.149)
# 3. Titelnamen normieren (Jahreszahl entfernen, Kleinschreibung) und vergleichen
```
**Stand 06.04.2026:** 53 Filme im Staging-Ordner, davon **17 bereits in Jellyfin** (Duplikate):
- 12 Monkeys, Angel Has Fallen, Bullet Train, Children of Men, Der mit dem Wolf tanzt,
Die Frau in Blau (2023+2025), Die Spezialistin, Kill the Boss, Mile 22,
No Turning Back, No Way Up, On the Line, Parker, Salt,
Stirb langsam, Stirb langsam 2
## Benutzer
| Name | Admin |
|------|-------|
| admin | ja |
| Hans | ja (alt) |
| karsten | nein |
| Holger | nein |
| Peter | nein |
| Klemens | nein |
| michael ec | nein |
| Ralf | nein |
| rolf | nein |
| wilfrid | nein |