Files
project-kino/runtime-current/kino/app-src/docs/deployment.md

1.3 KiB

Deployment

  1. .env auf dem Zielhost aus .env.example erstellen; JELLYFIN_API_KEY, KINOPROJEKT_ADMIN_PASSWORD_HASH und KINOPROJEKT_SESSION_SECRET nur dort oder in Vaultwarden speichern.
  2. Medien- und Datenverzeichnisse als Volumes mounten.
  3. Dienst nur Mesh-only veröffentlichen und den App-Login aktivieren.
  4. Nach Start prüfen:
curl http://127.0.0.1:8080/health
curl -X POST http://127.0.0.1:8080/api/probe \
  -H 'content-type: application/json' \
  --data '{"url":"http://localhost/video.mp4"}'
# Erwartet: HTTP 400, weil private/loopback Ziele abgelehnt werden.
  1. Login prüfen: Ohne Session antworten geschützte API-Routen mit 401; nach POST /api/auth/login setzt die App ein HttpOnly; Secure; SameSite=Lax Session-Cookie.
  2. Zielprofile prüfen: Ein Import mit target_profile=film|serie|clip muss unter /jellyfin/Filme, /jellyfin/Serien/.../Staffel<N> oder /jellyfin/YouTube-Mediathek landen. Der Ordner /jellyfin/YouTube-Mediathek sollte auf dem Zielhost jellyfinuser:media gehören und setgid wie die vorhandenen Bibliotheken nutzen.
  3. Für echte Importe muss yt-dlp im Container/Host verfügbar sein; das Dockerfile installiert es.
  4. Jellyfin-Refresh wird über POST <JELLYFIN_URL>/Library/Refresh mit X-Emby-Token ausgelöst, wenn JELLYFIN_API_KEY gesetzt ist.