Jellyfin mit einem Klick deployen
Ein Medienserver, der deine Filme, Serien und Musik auf jedes Gerät streamt
Eine selbst gehostete Alternative zu Plex und Emby.
Was ist Jellyfin?
Jellyfin ist ein kostenloser Open-Source-Medienserver, den Leute statt Plex oder Emby betreiben. Er sortiert die Filme, Serien und Musik, die du besitzt, in Bibliotheken mit Postern, Beschreibungen und Besetzung aus Online-Metadaten und streamt sie an Browser, Handys, Tablets und Fernseher. Offizielle Apps gibt es für Android, iOS, Android TV und Fire TV, Roku, Fernseher von LG und Samsung, Xbox und Kodi, und Jellyfin Media Player läuft auf Desktop-Rechnern. Jede Person bekommt ein eigenes Konto mit eigenem Wiedergabefortschritt und eigener Kindersicherung.
Viele hosten Jellyfin selbst, um ihre eigenen Medien von überall zu schauen, ohne Konto bei einem Unternehmen und ohne Abo: Es gibt keine Premium-Stufe, kein Tracking und keine zentralen Server. Diese Vorlage richtet Jellyfin mit dem Admin aus den Feldern ein, dazu drei Bibliotheken, Movies, Shows und Music, die auf die Ordner eines Medien-Volumes zeigen. Der Haken ist das Transcodieren. Kann ein Gerät eine Datei nicht so abspielen, wie sie ist, wandelt Jellyfin sie beim Abspielen um, hier auf der CPU, und das ist rechenintensiv. Leicht sind daher Dateien, die deine Geräte direkt abspielen, etwa H.264-Video in MP4.
Jellyfin-Hosting auf Pethost
- Du meldest dich bei Pethost an, mit Passkey, GitHub oder Google. Noch keine Maschine? Du wählst einen Tarif, und der Link wartet, bis sie bereit ist.
- „Neues Projekt“ öffnet sich bei Jellyfin. Du füllst aus, was die App braucht, und klickst auf „Projekt erstellen“: Benutzername, Admin-Passwort.
- In ein, zwei Minuten läuft Jellyfin unter eigener Adresse mit HTTPS. Die Secrets werden zufällig erzeugt, und die Daten sind im nächtlichen Backup.
- Es ist ein Projekt wie jedes andere: Du oder dein Agent könnt es ändern, zurückrollen oder wiederherstellen.
Fragen zu Jellyfin
Ist Jellyfin wirklich kostenlos?
Ja. Jellyfin ist freie Software unter der GNU GPL, und der Server und die offiziellen Apps kosten nichts: Es gibt weder eine Premium-Stufe noch kostenpflichtige Funktionen. Entwickelt wird Jellyfin von Freiwilligen.
Jellyfin vs. Plex: Was ist der Unterschied?
Jellyfin und Plex streamen beide deine eigenen Medien auf deine Geräte. Der Server von Plex ist Closed Source, die Konten laufen über plex.tv, und seit April 2025 brauchst du einen Plex Pass oder einen Remote Watch Pass, um deine Medien von unterwegs zu schauen. Jellyfin ist Open Source, braucht kein externes Konto und verlangt für nichts Geld.
Auf welchen Geräten kann ich Jellyfin schauen?
In jedem modernen Browser und mit den offiziellen Apps für Android, iOS, Android TV und Fire TV, Roku, LG webOS, Samsung Tizen und Xbox. Jellyfin Media Player läuft unter Windows, macOS und Linux, und das Add-on JellyCon bringt Jellyfin in Kodi.
Wie benenne ich Filme und Serien für Jellyfin?
Gib jedem Film einen Ordner mit Titel und Jahr, etwa Big Buck Bunny (2008), und leg das Video unter demselben Namen hinein. Eine Serie bekommt einen eigenen Ordner mit Season 01, Season 02 und so weiter darin, und die Folgen heißen etwa Show Name S01E01.mkv. Dann findet Jellyfin die richtigen Poster und Beschreibungen.
Braucht Jellyfin eine Grafikkarte?
Nein. Eine GPU beschleunigt nur das Transcodieren, also die Umwandlung, die ein Gerät braucht, wenn es eine Datei nicht so abspielen kann, wie sie ist; ohne GPU transcodiert Jellyfin auf der CPU. Schwierig ist HDR-Video: Laut der Doku von Jellyfin schafft keine aktuelle Consumer-CPU das Tone-Mapping in Echtzeit. Dateien, die deine Geräte direkt abspielen, müssen gar nicht transcodiert werden.
Wie viel RAM und Speicherplatz braucht Jellyfin?
Jellyfin braucht im Leerlauf etwa 250 MB RAM, und die Disk ist deine Bibliothek; das Transcodieren eines Videos läuft auf der CPU und ist rechenintensiv. Auf Pethost reicht dafür der Tarif Starter, mit Platz für weitere Apps daneben.
Jellyfin: die Docker-Compose-Datei
Die Vorlage ist diese compose.yaml und die Variablen, die beim Erstellen in die .env des Projekts geschrieben werden. Pethost führt die Datei so aus, wie sie geschrieben ist.
Container: jellyfin (jellyfin/jellyfin:12).
Volumes, im nächtlichen Backup: config, cache, media.
services:
jellyfin:
image: jellyfin/jellyfin:12
restart: unless-stopped
environment:
ADMIN_USERNAME: ${ADMIN_USERNAME}
ADMIN_PASSWORD: ${ADMIN_PASSWORD}
# A new server's startup wizard is open to whoever comes first. So until the wizard is done,
# Jellyfin runs on port 8097, which nobody reaches: there it is given the administrator from
# the fields and a library for each folder of /media, and only then answers on 8096.
entrypoint: ["/bin/sh", "-c"]
command:
- |
set -e
config=/config/config
if ! grep -qs '<IsStartupWizardCompleted>true<' "$$config/system.xml"; then
mkdir -p "$$config" /media/movies /media/shows /media/music
if [ -f "$$config/network.xml" ]; then
sed -i 's|<InternalHttpPort>[0-9]*<|<InternalHttpPort>8097<|' "$$config/network.xml"
else
printf '<?xml version="1.0" encoding="utf-8"?>\n<NetworkConfiguration>\n <InternalHttpPort>8097</InternalHttpPort>\n</NetworkConfiguration>\n' > "$$config/network.xml"
fi
/jellyfin/jellyfin &
setup=$$!
api() { curl -fsS -H 'Content-Type: application/json' "$$@"; }
# 401: an administrator with a password exists already, from a first start cut short,
# and Jellyfin has marked its wizard done by itself.
until wizard=$$(curl -sS -o /dev/null -w '%{http_code}' http://127.0.0.1:8097/Startup/Configuration) &&
{ [ "$$wizard" = 200 ] || [ "$$wizard" = 401 ]; }; do sleep 2; done
if [ "$$wizard" = 200 ]; then
api -d '{"ServerName":"Jellyfin","UICulture":"en-US","MetadataCountryCode":"US","PreferredMetadataLanguage":"en"}' http://127.0.0.1:8097/Startup/Configuration
library() {
api http://127.0.0.1:8097/Library/VirtualFolders | grep -q "\"Name\":\"$$1\"" ||
api -d '{"LibraryOptions":{"EnableRealtimeMonitor":true}}' "http://127.0.0.1:8097/Library/VirtualFolders?name=$$1&collectionType=$$2&paths=/media/$$3"
}
library Movies movies movies
library Shows tvshows shows
library Music music music
api -o /dev/null http://127.0.0.1:8097/Startup/User
json() { printf '%s' "$$1" | sed 's/\\/\\\\/g; s/"/\\"/g'; }
api -d "{\"Name\":\"$$(json "$$ADMIN_USERNAME")\",\"Password\":\"$$(json "$$ADMIN_PASSWORD")\"}" http://127.0.0.1:8097/Startup/User
api -d '{"EnableRemoteAccess":true,"EnableAutomaticPortMapping":false}' http://127.0.0.1:8097/Startup/RemoteAccess
api -X POST http://127.0.0.1:8097/Startup/Complete
fi
kill $$setup
wait $$setup || true
sed -i 's|<InternalHttpPort>8097<|<InternalHttpPort>8096<|' "$$config/network.xml"
fi
exec /jellyfin/jellyfin
volumes:
- config:/config
- cache:/cache
# Writable, so that films, shows and music can be copied in over SFTP.
- media:/media
volumes:
config:
cache:
media:
Mehr in Medien
- OwncastLive-Video und Chat auf deiner eigenen Seite
- NavidromeEin Musikserver, der deine eigene Sammlung streamt
- RomMEine Bibliothek und ein Player im Browser für deine Retro-Spiele
- KomgaEin Server und Web-Reader für deine Comics, Mangas und E-Books
- LycheeEine Fotogalerie, um deine Fotos hochzuladen, zu ordnen und zu teilen
- AudiobookshelfDein eigener Server für Hörbücher und Podcasts: im Browser oder in den Apps hören, mit Fortschritt über alle Geräte