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
This commit is contained in:
Homelab Cursor 2026-04-06 16:57:43 +02:00
parent 634a7e8277
commit c4454e1c4d

View file

@ -7,49 +7,136 @@
| 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 | Pfad |
|------|-----|------|
| Filme | movies | `/media/Recorded TV` |
| Name | Typ | Quellpfad (auf Jellyfin-Server) |
|------|-----|-------------------------------|
| Filme | movies | `/srv/media/Recorded TV/` |
Aktuell **732 Filme** im Bestand.
Aktuell ~718 Filme im Bestand.
## API-Nutzung
```bash
# Schnelltest
curl "http://192.168.178.149:8096/Items/Counts?api_key=7285b4a8793541648bf156599ae05b43"
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
# Filme auflisten
curl "http://192.168.178.149:8096/Items?api_key=API_KEY&IncludeItemTypes=Movie&Recursive=true&Fields=Overview,Genres,People&Limit=20"
# 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 "http://192.168.178.149:8096/Items?api_key=API_KEY&SearchTerm=Matrix&IncludeItemTypes=Movie&Recursive=true"
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 | Notiz |
|------|-------|-------|
| admin | ja | Hauptadmin |
| Hans | ja | Alter Admin |
| karsten | nein | |
| Holger | nein | |
| Peter | nein | |
| Klemens | nein | |
| michael ec | nein | |
| Ralf | nein | |
| rolf | nein | |
| wilfrid | nein | |
## Netzwerk
- Erreichbar vom Hetzner-Server über Fritz!Box-Netz (192.168.178.x)
- Tailscale-IP: 100.77.105.3
- Kein SSH-Zugang (nur HTTP API)
| Name | Admin |
|------|-------|
| admin | ja |
| Hans | ja (alt) |
| karsten | nein |
| Holger | nein |
| Peter | nein |
| Klemens | nein |
| michael ec | nein |
| Ralf | nein |
| rolf | nein |
| wilfrid | nein |