6.8 KiB
6.8 KiB
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):
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:
# 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
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:
# 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 |
Troubleshooting: Details fehlen / Remote-Zugriff wirkt kaputt
Stand: 2026-05-16
Symptom:
- Filmübersicht ist erreichbar, aber Detailseiten/Filmdetails werden im Client nicht angezeigt.
- Zugriff über Tailscale-IP
100.77.105.3:8096hängt oder läuft in Timeouts.
Befund vom 2026-05-16:
- Jellyfin selbst war lokal gesund:
http://192.168.178.149:8096/health->Healthy- API
/Items/Countslieferte897Filme. - Beispiel-Film
2 Gunshatte Beschreibung, Genres, TMDB/IMDB IDs und Bilder.
- Medien-Mounts waren aktiv:
/mnt/nas/srv/media
- Docker-Container
jellyfinwarhealthy. - Ursache war Tailscale auf dem Jellyfin-Host:
tailscale ip -4meldete zuerstno current Tailscale IPs; state: NeedsLogintailscale statusmeldeteLogged out.
- Nach Re-Login war
100.77.105.3wieder aktiv undhttp://100.77.105.3:8096/healthantwortete wiederHealthy. - Danach waren die Filmdetails im Client wieder sichtbar.
Schnelltest:
# Von pve3 lokal im LAN:
curl -sS http://192.168.178.149:8096/health
# Von CT 116 / Hausmeister oder einem Tailscale-Host:
curl -sS http://100.77.105.3:8096/health
curl -sS "http://100.77.105.3:8096/Items/Counts?api_key=7285b4a8793541648bf156599ae05b43"
Fix:
- Auf dem Jellyfin-Host Tailscale-Status prüfen:
tailscale ip -4 tailscale status --self - Wenn
NeedsLoginoderLogged out: Tailscale neu anmelden. - Danach erneut prüfen:
curl -sS http://100.77.105.3:8096/health - Im Browser Jellyfin hart neu laden oder neu einloggen, falls der Webclient alte kaputte API-Antworten gecacht hat.
Wichtig:
- Fehlende Details bedeuten nicht automatisch kaputte Jellyfin-Datenbank oder fehlende Metadaten.
- Erst lokale API gegen
192.168.178.149:8096prüfen, dann Tailscale/Cloudflare-Zugriff. systemctl is-active jellyfinkann irreführend sein, weil Jellyfin hier im Docker-Container läuft. Aussagekräftiger ist:docker ps | grep jellyfin curl -sS http://127.0.0.1:8096/health