Jeder Jellyfin-Admin kennt das Ritual: Ein Freund fragt nach einem Konto, du legst eines von Hand an, rätst, welche Mediatheken er sehen soll, schickst ihm ein Passwort über irgendeinen Chat und eine Woche später merkst du, dass die Hälfte davon deine ganze Bibliothek herunterladen kann. Das Admin-Konto zu teilen ist schlimmer, aber alles manuell zu erledigen skaliert eben auch nicht.
Das Registration-Plugin für Jellyfin ersetzt dieses Ritual durch eine öffentliche Seite unter deiner eigenen Serveradresse. Besucher füllen ein Formular aus, du entscheidest, wer reinkommt, und jedes Konto wird deaktiviert, auf dem Anmeldebildschirm versteckt und mit den minimalen Rechten angelegt, die du einmal festlegst. Dieses Tutorial zeigt ein Setup, bei dem Einladungscodes steuern, wer ein Konto anfragen kann, der Freigabemodus dich im Loop hält und die Standardzugriffs-Einstellungen sicherstellen, dass neue Nutzer nie mit mehr starten als nötig.
Voraussetzungen
- Jellyfin Server 12.2 oder neuer, unter Linux, Windows oder Docker.
- Dein Server ist über HTTPS erreichbar für die Personen, die sich registrieren, direkt oder über einen Reverse Proxy.
- Ein MediaLab Works Konto mit einer Lizenz, die das Plugin abdeckt: ein aktives Abo, eine Lifetime-Lizenz innerhalb ihres Update-Fensters, das Jellyfin-Bundle oder die kostenlose 30-Tage-Testversion.
- Optional, aber empfohlen: ein im Plugin konfigurierter SMTP-Server, wenn du E-Mail-Bestätigungen und Entscheidungsnachrichten willst, sowie ein Telegram-Bot für Benachrichtigungen dort.
Schritt 1 — Plugin installieren
Der bequeme Weg ist dein privates Plugin-Repository, denn dann installiert und aktualisiert Jellyfin das Plugin selbst.
- Öffne in deinem MediaLab Works Konto Licenses → Jellyfin plugin repository und klicke auf Create address. Die Adresse enthält ein Token, behandle sie also wie ein Geheimnis.
- Gehe in Jellyfin zu Dashboard → Plugins → Repositories, klicke auf +, gib einen Namen ein (zum Beispiel MediaLab Works), füge die Adresse ein und speichere.
- Öffne Dashboard → Plugins → Catalog, suche Registration by MediaLab, klicke auf Install und starte Jellyfin neu.
Wenn du lieber manuell installierst, lade das Zip unter Account → Licenses herunter, entpacke es in einen neuen Ordner Registration by MediaLab_x.y.z.0 im Plugins-Ordner (/var/lib/jellyfin/plugins/ bei einer Linux-Paketinstallation, /config/plugins/ im offiziellen Docker-Image, %ProgramData%\Jellyfin\Server\plugins\ unter Windows) und starte Jellyfin neu.
Schritt 2 — Lizenz aktivieren
Öffne die Plugin-Seite unter Dashboard → Plugins → Registration by MediaLab und klicke auf Open License page. Füge deinen Key ein und klicke auf Activate with key; die Lizenz wird an diesen Server gebunden und als Active angezeigt. Ohne Key kannst du auf derselben Seite die 30-Tage-Testversion starten. Die Lizenz wird einmal täglich und bei jedem Jellyfin-Start geprüft, und ohne Internet funktioniert das Plugin nach der letzten erfolgreichen Prüfung noch 7 Tage weiter.
Schritt 3 — Registrierungsseite öffnen
Gehe zu Dashboard → Registration. Nach der Installation ist die Registrierung geschlossen, es öffnet sich also nichts von selbst. Im Tab General:
- Wähle den Modus: manuelle Freigabe (der Standard), nur Einladungscode oder automatisch.
- Schalte Registration open ein.
- Optional kannst du ein Öffnungs- und Schließdatum setzen, damit sich die Seite nach deiner Einladungsrunde selbst schließt.
- Trage die öffentliche Adresse deines Servers ein; sie wird für die Links in E-Mails verwendet.
Die öffentliche Seite liegt unter https://<your server>/Registration/Page und ist auf Englisch und Rumänisch verfügbar, von vornherein für Handys gedacht: Benutzername wird beim Tippen geprüft, Name, E-Mail, Telefonnummer im internationalen Format und ein Passwort mit Stärkeanzeige. Der Tab Send access liefert dir den Link und einen QR-Code zum Versenden.
Solange du im selben Browser als Administrator bei Jellyfin angemeldet bist, zeigt dir das Öffnen der Seite direkt das Formular, ohne Code, und die Anfrage wird als Test markiert. Nutze das, um den Ablauf zu prüfen, bevor du den Link an jemanden schickst.
Schritt 4 — Mit Einladungscodes arbeiten
Im Tab Invitations findest du den aktuellen invite code und einen optionalen family code.
- Der Einladungscode ist einmalig und erneuert sich nach der Nutzung: Jede neue Person bekommt einen frischen Code, ein geleakter Code öffnet also nicht allen die Tür.
- Der family code ist für Personen im selben Haushalt gedacht, damit ein Haushalt sich registrieren kann, ohne dass du pro Person einen Code ausgibst.
Stelle den Modus auf invite code only, wenn ohne Code gar nichts passieren soll, oder behalte den Freigabemodus und nutze Codes als zusätzlichen Filter. In beiden Fällen schickst du den Seitenlink zusammen mit dem Code; im Tab Send access liegen beide zum Kopieren bereit.
Schritt 5 — Freigabemodus wählen
Mit manueller Freigabe (der Standard) wartet jede Anfrage unter Dashboard → Registration → Requests auf dich. Du siehst ausstehende und bearbeitete Anfragen, kannst sie durchsuchen, einzeln oder gesammelt freigeben oder ablehnen und die Liste als CSV exportieren.
Das ist der sichere Standard: Selbst wenn ein Bot die Anti-Bot-Prüfungen umgeht, wird ohne dich kein Konto daraus. Das Konto selbst wird zum Zeitpunkt der Anfrage deaktiviert angelegt, die Freigabe aktiviert es also nur. Die E-Mail-Bestätigung lässt sich im selben Bereich separat einschalten, wenn Antragsteller ihre Adresse nachweisen sollen.
Schritt 6 — Standardzugriff für neue Konten festlegen
Das ist der Teil, der dir später die meiste Arbeit spart. Im Tab Default access legst du fest, was jedes freigegebene Konto bekommt:
- Mediatheken: alle oder nur die von dir gewählten. Bei einem gemischten Server gib nur die Mediatheken frei, die eine neue Person sehen soll.
- Gleichzeitige Streams und Remote-Bitrate-Limits, wenn du sie willst.
- Automatisches Deaktivieren nach einer Anzahl von Tagen, nützlich für Testzugänge.
Neue Konten werden mit minimalen Rechten angelegt: keine Administration, keine Downloads, kein Sync, kein Löschen, und sie erscheinen nicht auf dem Anmeldebildschirm. Denk an einen Template-Benutzer, den du einmal konfigurierst und für alle wiederverwendest, nur dass du Berechtigungen nie von Hand kopieren musst.
Im Tab Form kannst du außerdem das Standardland, erlaubte Länder, Regeln für Benutzername und Passwort sowie den auf der Seite angezeigten Datenschutztext festlegen.
Schritt 7 — Bots draußen halten
Im Tab Anti-bot ziehst du die öffentliche Seite enger:
- Proof-of-Work läuft im Browser, und das Formular nutzt signierte Einmal-Token und ein verstecktes Trap-Feld.
- Cloudflare Turnstile ist optional und standardmäßig aus; es aktiviert sich nur, wenn du eigene Keys einträgst.
- Ratenbegrenzungen gelten pro IP und Netz.
- Adressen aus Rechenzentren, kommerziellen VPNs und Tor werden abgelehnt, Wegwerf-E-Mail-Domains zurückgewiesen.
- Regeln gegen doppelte Konten setzen ein Konto pro Person durch: dasselbe Gerät, dieselbe Telefonnummer oder derselbe Browser und dasselbe Netz werden blockiert oder markiert, Regel für Regel.
Hier kannst du auch die Länder der Besucher einschränken. Die Länderinformation kommt aus dem Header CF-IPCountry, wenn du hinter Cloudflare stehst, und der Netztyp aus einer lokalen ASN-Datenbank, ohne Online-Abfragen.
Schritt 8 — Benachrichtigungen und Anmelde-Link
Aktiviere im Tab Notifications nach Wunsch das Jellyfin-Aktivitätsprotokoll, E-Mail (über deinen SMTP-Server) und Telegram. Admin-E-Mail-Benachrichtigungen sind standardmäßig aus; die E-Mail an den Antragsteller kann die Bestätigung, die Entscheidung und die von dir verfasste Zugangsnachricht enthalten, inklusive eines generierten Passworts.
Solange die Registrierung offen ist, kann das Plugin einen Link Create an account und einen QR-Code auf dem Jellyfin-Anmeldebildschirm ergänzen. Das geschieht über den Login-Disclaimer-Text (Branding → Login disclaimer), ohne Dateien zu verändern.
Tipps und Fehlerbehebung
- "Registration is closed": Schalte im Tab General Registration open ein und prüfe Öffnungs- und Schließdatum.
- "Not available from this network": Der Besucher kommt von einer Adresse aus Rechenzentrum, VPN oder Tor. Schalte diese Regel in Anti-bot nur aus, wenn du sie wirklich brauchst.
- Hinter Cloudflare oder einem Reverse Proxy: Stelle sicher, dass die echte Besucheradresse bei Jellyfin ankommt (Jellyfins Einstellung Known proxies). Sonst teilen sich alle Besucher eine Adresse und laufen in die Ratenbegrenzungen.
- Fernseher: Das Formular unterstützt Jellyfins natives Quick Connect, ein TV-Code kann also im Formular eingegeben werden und der Fernseher meldet sich an, sobald das Konto aktiv wird. Das ist auf API-Ebene geprüft, aber nicht auf echten TV-Apps getestet, probiere es also zuerst mit deinem eigenen Gerät.
- Datenaufbewahrung: Ausstehende Anfragen verfallen nach 7 Tagen und das deaktivierte Konto wird gelöscht; abgelehnte, abgelaufene oder gelöschte Anfragen werden nach 30 Tagen bereinigt. Passwörter speichert das Plugin nicht; darum kümmert sich Jellyfin.
- Updates: Bei einer Lifetime-Lizenz, deren Update-Fenster abgelaufen ist, bleib bei deinem privaten Repository, damit Jellyfin keine Version installiert, die deine Lizenz nicht abdeckt. Falls es doch passiert, nutze Roll back to x.y.z auf der Lizenzseite.
Fazit
Eine öffentliche Registrierungsseite ist nur dann sicher, wenn sie langweilig ist: Codes, die sich selbst erneuern, Freigabe, bevor irgendetwas aktiviert wird, und Standardrechte, die nie über das hinausgehen, was ein neuer Zuschauer braucht. Genau das liefert dir Registration, und es nimmt dir das manuelle Anlegen von Konten aus deinen Abenden. Wenn du für den nächsten Schritt bereit bist, arbeitet das Plugin mit Cashier zusammen, um bezahlte Abos für deinen Server zu verkaufen.
Starte auf der Produktseite, folge der Benutzeranleitung für die genauen Tabs und prüfe das Changelog, bevor du aktualisierst. Mehr Material zum Selbsthosten findest du in unserer Wissensdatenbank, und wenn etwas nicht funktioniert, kontaktiere uns.