⚡ nzbfast

Der schnelle Usenet-Downloader - Benutzerhandbuch

1 · Willkommen

nzbfast lädt aus dem Usenet so schnell, wie es deine Leitung, deine Provider und deine Maschine zulassen - und das heißt meistens: so schnell wie deine Leitung. Es ist ein einziges, in sich geschlossenes Programm: die Engine, ein Web-Dashboard, eine Posterwand als Medienbrowser, ein eingebauter Indexer, Echtzeit-Vorschau, native PAR2-Reparatur und natives RAR-Entpacken stecken alle in einer einzigen ausführbaren Datei. Es gibt nichts weiter zu installieren.

Schnell macht es die Architektur, nicht irgendwelche Tricks:

Auf identischer Hardware, mit identischen Jobs und Providern gegen das Feld gemessen, hat nzbfast einen 190 GB-Download auf einer 10 GbE-Leitung in rund 5 Minuten abgeschlossen - die führenden Alternativen lagen in denselben Tests 30–220 % zurück, sofern sie sie überhaupt beendet haben. Die Zahlen stehen in §3.

2 · Schnellstart

macOS

  1. Öffne nzbfast-<version>-macos.dmg und zieh NzbFast nach Programme (universal: Apple Silicon + Intel).
  2. Erster Start: macOS warnt, dass nzbfast noch nicht von Apple notarisiert ist. Rechtsklick auf die App → Öffnen - oder öffne die Systemeinstellungen → Datenschutz & Sicherheit, scroll nach unten und klick Dennoch öffnen. Das ist nur einmal nötig.
  3. Das App-Fenster zeigt das Dashboard mit einer Willkommens-Karte - klick sie an und füge mindestens einen Usenet-Server hinzu (Host, Port 563, Benutzername, Passwort). Weitere kannst du später in den Einstellungen ergänzen.
  4. Zieh eine .nzb irgendwo aufs Dashboard - oder doppelklick .nzb-Dateien einfach im Finder. Downloads landen in ~/Downloads/nzbfast. Beenden über das Menü; Downloads setzen dort fort, wo sie aufgehört haben.

Lieber ohne App? Das schlichte Zip (Binary + Start nzbfast.command-Starter, gleiche Engine) funktioniert weiter wie gehabt - die Schritte stehen unten unter „Aus dem Terminal“.

Windows

  1. Führe nzbfast-<version>-windows-x64-setup.exe aus. Es installiert nur für deinen Benutzer (kein Administrator-Passwort). Weil dieses Release noch nicht code-signiert ist, zeigt SmartScreen womöglich „Der Computer wurde durch Windows geschützt“ - klick Weitere InformationenTrotzdem ausführen.
  2. nzbfast lebt im System-Tray: Doppelklick aufs Tray-Symbol (oder Dashboard öffnen im Rechtsklick-Menü) öffnet das Dashboard; füge dann deinen Usenet-Server über die Willkommens-Karte hinzu. Das Tray-Menü bietet außerdem Pause/Fortsetzen, deinen Download-Ordner und Beenden.
  3. Ein Doppelklick auf eine .nzb-Datei reiht sie ein. Windows Defender fragt eventuell einmal, ob lokales Netzwerk-Lauschen erlaubt werden soll - erlaub es.

Lieber eine portable Kopie? Das -windows-x64.zip funktioniert weiterhin: irgendwo entpacken und nzbfast.exe doppelklicken (oder Start nzbfast.bat für den Terminal-Assistenten).

Aus dem Terminal (jede Plattform)

nzbfast setup            # interactive server setup (writes config.local.json)
nzbfast serve --open     # start the daemon and open the dashboard
TippDu nutzt schon SABnzbd oder NZBGet? Spar dir das Abtippen der Zugangsdaten: Einstellungen → Usenet-Server → Aus SABnzbd / NZBGet importieren… findet deine bestehende Installation und übernimmt ihre Server. Auf der Kommandozeile gibt es außerdem nzbfast import-sab.

Dein API-Key

Auf einer wirklich neuen Installation macht sich nzbfast beim ersten Start des Daemons selbst einen API-Key und druckt ihn einmalig in einem Banner direkt unter der Dashboard-Adresse. Ab da braucht jede Anfrage diesen Key, damit Dashboard und API nicht für alles offen stehen, was die Maschine erreichen kann.

Was du damit tust, hängt davon ab, wie du nzbfast gestartet hast:

Der Key liegt in einer Datei namens apikey neben deiner Config, er bleibt also über Neustarts hinweg derselbe und du kannst ihn jederzeit wieder nachlesen. Auf macOS und Linux ist diese Datei nur für das Konto lesbar, das nzbfast ausführt. Er steht außerdem in der Ausgabe des Daemons selbst - die Log-Karte im Dashboard hat ihn also, wenn das Terminal weggescrollt ist.

Ein Upgrade ändert nichts.Eine bereits bestehende Installation bleibt exakt so, wie sie war, mit Key oder ohne. Ein Key entsteht immer nur bei einem ersten Start - einem ohne Dashboard-Einstellungen und ohne gespeicherte Warteschlange - denn ein Key, der unter einer laufenden Installation auftaucht, würde jedes Sonarr, jedes Radarr und jede Handy-App aussperren, die du schon verbunden hattest, bei einem Neustart, den du nie mit einer Einstellungsänderung in Verbindung gebracht hättest.

Willst du stattdessen einen eigenen Key verwenden, tipp ihn unter Einstellungen → Sicherheit ein; er gilt sofort. Dieses Panel ändert den Key, zeigt den aktuellen aber nie an - lies also die Datei apikey, wenn du den erzeugten Wert zurückbrauchst. Um ganz ohne Key zu laufen, weil etwas vor nzbfast die Anmeldung schon erledigt, starte es mit NZBFAST_OPEN=1 in der Umgebung. nzbfast bleibt dann offen und sagt das beim Start unmissverständlich.

Welche Maschinen den Daemon überhaupt erreichen, ist eine getrennte Entscheidung: serve --bind. Der Standard ist 0.0.0.0, also jede Netzwerkschnittstelle, denn eine NAS-Box, ein Handy und ein Sonarr auf einer anderen Maschine müssen sich alle verbinden können. --bind 127.0.0.1 engt das auf die Maschine ein, auf der nzbfast läuft - genau das, was du auf einem einzelnen Desktop willst, auf dem sonst niemand Zugriff braucht.

3 · So funktioniert nzbfast

Ein kurzes Vokabular, damit sich der Rest des Handbuchs leicht liest:

BegriffBedeutung
Provider / ServerEin Usenet-Dienst, bei dem du ein Konto hast (Newshosting, Eweka, XS News…). Jeder erlaubt eine bestimmte Zahl gleichzeitiger Verbindungen.
BackboneDie Infrastruktur hinter einem Provider. Mehrere Marken verkaufen oft dasselbe Backbone weiter - gut zu wissen, denn zwei Providern auf einem Backbone fehlen dieselben Artikel. Siehe Server-Diversität.
NZBEine kleine XML-Datei, die die Artikel eines Posts auflistet. Das ist das, was du nzbfast fütterst.
PAR2Reparaturdaten, die neben einem Release gepostet werden. nzbfast verifiziert während des Downloads dagegen und repariert automatisch, wenn Artikel beschädigt sind oder fehlen.
Store-Mode-RARDie meisten Releases sind ohne Kompression in RAR-Volumes gepackt. nzbfast erkennt das und schreibt die innere Datei schon beim Download direkt an ihren endgültigen Ort - kein Entpack-Schritt danach.

Die Pipeline fährt Download → Dekodieren → Prüfen → Entpacken gleichzeitig. Die Pipeline-Karte im Dashboard zeigt alle drei Spuren gleichzeitig in Bewegung. Wenn das letzte Byte ankommt, ist die Prüfung schon durch und die Datei schon entpackt; die „Nachbearbeitungszeit“ eines typischen Jobs ist null. Nur wenn repariert werden muss, werden Volumes auf die Festplatte materialisiert, von der nativen GF(2¹⁶)-Engine an Ort und Stelle repariert (umbenannte oder byte-verschobene, verschleierte Daten findet und übernimmt ein gleitender Block-Scan) und neu entpackt - alles automatisch.

Unterbrochene Downloads (Absturz, Stromausfall, kill -9) setzen über das Artikel-Journal fort: Bytes, die schon auf der Festplatte liegen, werden nie doppelt geholt. Das Journal hält fest, wo die Bytes jedes Artikels physisch gelandet sind - auch Bytes, die direkt in die endgültige Datei entpackt wurden -, sodass ein Resume aus der lokalen Festplatte wiederaufbaut und alles Wiederhergestellte gegen die PAR2-Blockkarte nachprüft, bevor es ihm vertraut.

Der Vergleich

Gemessen gegen SABnzbd 5.0.4 und NZBGet 26.2 auf derselben Maschine, mit denselben Providern und denselben NZBs, gestoppt bis zur nutzbaren Datei - Download, Prüfung, Reparatur und Entpacken eingeschlossen, denn erst dann ist der Job wirklich fertig:

Job-GrößenzbfastNZBGet 26.2SABnzbd 5.0.4
7 GB13,7 s+26%+39%
35 GB67 s+61%+325%
87 GB272 s+36%+160%
190 GB9 m 00 s+30%+111%

Der Abstand ist die Nachbearbeitung, die die anderen nach dem letzten Byte noch vor sich haben. Beide Konkurrenten wurden für den Vergleich getunt, nicht auf Standardwerten gelassen - SABnzbd liefert Request-Pipelining ab Werk abgeschaltet aus, was es teuer zu stehen kommt, also wurde es eingeschaltet.

Zwei Unterschiede wiegen so schwer wie die Zeiten:

Absturz-Resume, gemessenSchieß einen Download mitten im Flug ab (kill -9 bei 15 GB eines 34,5-GB-Jobs) und das Resume holt ~0,3 GB neu - nur die Artikel, die beim Kill wirklich in der Luft waren - gegen NZBGets 0,2 GB im selben Test. Das war mal eine Niederlage, die wir veröffentlicht haben (15,3 GB neu geholt, als das Journal direkt entpackte Bytes nicht zuordnen konnte); das Platzierungs-Journal hat sie behoben: Das Resume stellt diese Bytes aus den lokalen Ausgabedateien wieder her und prüft jedes wiederhergestellte Byte gegen die PAR2-Blockkarte, bevor es ihm vertraut. Jedes Szenario, das wir verlieren, wird neben den Siegen veröffentlicht, mit vollständiger Methode und Rohzahlen.

4 · Das Dashboard

Öffne http://localhost:6789 (oder die Adresse deiner Maschine von einem anderen Gerät - das Handy-Layout passt sich automatisch an). Alles aktualisiert sich live, einmal pro Sekunde. Die Karten, von oben nach unten:

Kopfleiste

Durchsatz

Live-MB/s mit laufendem Diagramm; die gestrichelten Wasserzeichen markieren Hoch/Tief dieser Sitzung, die blasse Linie ist ein gleitender Durchschnitt. Darunter zeigt ein Histogramm, wie sich die Tempo-Messwerte der Sitzung verteilen - typisch vs. Spitze. Mach das Fenster breiter und die Diagramme zeigen mehr Verlauf (bis zu einer Stunde).

Statistik-Kacheln

In dieser Sitzung geladen, Warteschlangen-Tiefe, Fertig-/Fehler-Zähler, Spitzentempo der Sitzung.

Ressourcen - eine Maschine, vier Limits

CPU, RAM (gegen nzbfasts Speicher-Budget), Festplatten-Schreibrate und Netzwerk auf einem normalisierten Diagramm, mit echten Werten in der Legende und einer Warnung bei wenig Plattenplatz. Kein anderer NZB-Client zeigt dir das; es existiert, um einen Punkt zu beweisen - nzbfast reizt deine Leitung aus, nicht deine Maschine.

Pipeline - Stufen überlappen

Drei Spuren: Download, Prüfen (geprüfte PAR2-Blöcke), Entpacken. Bei einem gesunden Job bewegen sich alle drei gemeinsam.

Provider

Live-Rate pro Server, Verbindungsauslastung, Verkehrsanteil, Sitzungs-GB und ein Lebenszeit-Wert für Artikel-Vollständigkeit (farbig, sobald ein Server unter 98 % fällt). Ein gestapeltes Flächendiagramm zeigt den Beitrag jedes Providers über die Zeit. Die Zeilen sortieren sich alle 10 s nach Live-Leistung neu (einstellbar in Einstellungen → Oberfläche), damit dein schnellster Provider immer oben steht.

Warteschlange

Index durchsuchen

Durchsuche alles, was der eingebaute Indexer aus deinen beobachteten Gruppen katalogisiert hat (siehe Automatisierung), und lade mit einem Klick - kein externer Indexer nötig. Die Statuszeile zeigt den Scan-Fortschritt; Jetzt scannen erzwingt einen Durchlauf.

Watchlist

Füge Titel per Name hinzu - auch solche, die noch gar nicht gepostet wurden. Taucht ein passendes Release im Index auf, wird es automatisch geholt, mit Qualitätsvorlieben und Upgrade-Regeln (eine bessere Kopie ersetzt eine schlechtere).

Verlauf

Die jüngsten Downloads, eine Zeile je Download. Fehlgeschlagene Jobs bieten Erneut (setzt aus dem Journal fort). Verschlüsselte Archive zeigen ein 🔑-Entsperr-Element - gib das Passwort ein und der Job wird an Ort und Stelle fertig. Der Prüfstatus-Streifen zeichnet defekte PAR2-Blöcke pro Download auf - ein steigendes Ende heißt: Artikel kommen beschädigt an. Die Schublade jeder Zeile sagt, wer den Job hinzugefügt hat, und hat dieselbe Schaltfläche .nzb herunterladen wie die Warteschlange - praktisch, um ein Release woanders noch einmal herunterzuladen oder die .nzb an eine Problemmeldung anzuhängen.

Die Karte listet standardmäßig zehn Downloads, der Rest ist einen Klick entfernt, über die Schaltfläche ▤. Status, Ort und der Grund eines Fehlschlags liegen hinter einem Klick auf die Zeile selbst, damit der häufige Fall - was fertig wurde, wie groß, wann - ohne Scrollen lesbar bleibt. Zieh stattdessen die Unterkante der Karte, damit die Liste auf einer von dir gewählten Höhe scrollt. History rows unter Einstellungen → Oberfläche ändert die Zehn; da es eine Eigenschaft des Daemons ist und nicht deines Browsers, gilt es für jedes Gerät, das auf diese Installation schaut. Colour History names daneben färbt fertige Namen grün und fehlgeschlagene rot; ausgeschaltet bleiben die Namen schlicht, und der farbige Punkt wie auch die Details der Zeile sagen weiterhin, was was ist.

Datenverbrauch

Tagesbalken pro Provider und Summen für Heute / 7 Tage / 30 Tage - unverzichtbar bei Volumen- und Block-Tarifen. Block-Konten zeigen die Lebenszeitnutzung gegen ihre Größe.

Log, System-Benchmark, Verbindungs-Tuning, Server-Diversität

Ein Log-Betrachter direkt auf der Seite und die drei Selbstvermessungs-Tools aus Performance-Tools.

5 · Downloads hinzufügen

MethodeSo geht’s
Drag & DropZieh eine oder mehrere .nzb-Dateien irgendwo aufs Dashboard.
Watch-OrdnerLeg in den Einstellungen einen Ordner fest; jede dort gespeicherte .nzb wird binnen 5 Sekunden aufgegriffen und in den Papierkorb verschoben, und ein offenes Dashboard meldet jede Übernahme beim Namen („… aus Downloads übernommen“), sodass eine Datei, die aus dem Ordner verschwindet, nie ein Rätsel bleibt. Du behältst deine Dateien lieber? Schalte .nzb-Dateien nach Übernahme behalten ein (siehe §9). Richte den Download-Ordner deines Browsers dorthin - für Ein-Klick-Grabs von Indexer-Seiten.
Von einer URLFüge einen NZB-Link ein (API mode=addurl, oder über jede verbundene App).
nzblnk:-LinksFüge einen nzblnk:-Link irgendwo im Dashboard ein oder zieh ihn hinein. Aus dem macOS-DMG oder dem Windows-Installer installiert, kannst du auch direkt auf einem Board einen anklicken. Siehe nzblnk-Links weiter unten.
Index durchsuchenKlick ein vollständiges Release in der Durchsuchen-Karte an.
Watchlist / RSSAutomatisch - siehe Automatisierung.
Sonarr/Radarr etc.Sie schicken Grabs direkt in die Warteschlange - siehe §11.
Kommandozeilenzbfast get file.nzb lädt ohne den Daemon.

Kategorien, Prioritäten, Passwörter

nzblnk-Links

Manche Boards, vor allem deutsche und niederländische, geben einen nzblnk:-Link statt einer NZB-Datei heraus. Der Beitrag ist verschleiert, es gibt also gar keinen Dateinamen, auf den man verlinken könnte. Der Link trägt stattdessen einen Header, h=, der ein Suchschlüssel ist und kein Ort, dazu optional einen Titel t=, ein Passwort p= und eine Gruppe g=. Irgendwer muss den Beitrag also erst suchen gehen.

nzbfast schlägt den Header zunächst im eigenen Index nach, wofür überhaupt kein Netz nötig ist, und fragt erst bei einem Fehlschlag die von dir eingerichteten Suchindexer (Einstellungen → Suchindexer, §9), unter denselben Tagesbudgets und demselben Backoff wie jede andere Suche. Der Titel wird zum Job-Namen, das Passwort wird dem Job automatisch mitgegeben.

6 · Die Posterwand

Klick 🎬 Wand in der Kopfleiste. Die Wand macht aus deinem Index einen Medienbrowser: jedes erkannte Film- und Serien-Release als Poster-Kachel mit Bewertung, Jahr, Genres, Besetzung und Handlung - deine Newsgroups, durchstöberbar als Katalog.

7 · Vorschau & Prüfen

Du musst nicht warten, bis ein Download fertig ist, um zu wissen, dass es die richtige Datei ist. Öffne sie, während sie lädt, prüfe, ob Inhalt, Sprache und Qualität deinen Erwartungen entsprechen, und brich früh ab, wenn nicht - statt es erst nach dem kompletten Download festzustellen.

Player-HinweisVLC, IINA, mpv und Infuse öffnen alle /stream-URLs. Zum Prüfen von einer anderen Maschine nimm die LAN-Adresse deiner Maschine statt localhost.
Auth-HinweisMit gesetztem API-Key verlangt das Öffnen eines geparkten Bibliothekseintrags über /stream/<id> ein Pro-Job-Token (?t=…) - Player können keine API-Keys mitschicken, also betten die /m3u-Übergabe und der .strm-Verweis es für dich ein; das Ausstellen (/m3u) verlangt den Key. Das reine Byte-Ausliefern eines schon aktiven Downloads bleibt offen, und Installationen ohne Key verhalten sich wie bisher.

8 · Usenet-Server

Einstellungen → Usenet-Server ist der volle Editor: hinzufügen, bearbeiten, entfernen, umsortieren und jeden Server in den Pool holen oder aus ihm herausnehmen. Jeder Server hat:

FeldHinweise
Host / PortNimm den SSL-Port 563. TLS kostet nichts Messbares - nzbfast verschlüsselt immer.
Benutzername / PasswortLokal in config.local.json gespeichert, nie zurück an den Browser gezeigt. Das Passwort beim Bearbeiten leer lassen behält das gespeicherte. Passwörter werden auf der Platte verschleiert, nicht verschlüsselt.
VerbindungenGleichzeitige Verbindungen pro Server. Nutz Verbindungs-Tuning (§13), um den Sweet Spot jedes Providers zu finden, statt einfach hoch zu raten.
Level (Tier)0 = primär; höhere Level sind Fill-Server und werden nur nach Artikeln gefragt, die alle niedrigeren Level verpasst haben. Flatrate-Konten auf 0, Block-Konten auf 1+.
Blockgröße (GB)Für Block-Konten (Bezahlung pro GB): nzbfast zählt die Lebenszeitnutzung dagegen und lässt den Server aus, sobald der Block aufgebraucht ist (Warnung bei 85 %).

Lass etwas Luft unter dem Verbindungslimit deines Kontos. Die Verbindungszahl etwas unter das Limit zu setzen kostet nichts: der Durchsatz flacht schon vor den letzten ein, zwei Verbindungen ab, und Verbindungs-Tuning (§13) landet ohnehin meist darunter. Die freien Plätze sind es, durch die ein zweites Gerät, ein anderes Programm oder ein neuer Versuch nach einem abgebrochenen Socket noch hineinkommt, statt abgewiesen zu werden, während hier jeder Platz belegt ist.

Wie deine Provider-Passwörter gespeichert werden

Provider-Passwörter in config.local.json sind verschleiert, nicht verschlüsselt. Sie werden als obf1: gefolgt von einer kodierten Form abgelegt, damit die Datei sich nicht als Klartext liest, wenn sie in einem Screenshot, einem Forenbeitrag, einem Fehlerbericht oder auf einem Bildschirm auftaucht, den jemand anderes sehen kann.

Sagen wir klar, was das bringt und was nicht:

Zum Vergleich: NZBGet und SABnzbd speichern Provider-Passwörter beide als lesbaren Klartext in ihren Konfigurationsdateien. Wir halten Verschleierung für eine kleine Verbesserung darüber, nicht für ein Sicherheitsmerkmal.

Warum nicht der System-Schlüsselbund? macOS Keychain, die Windows- Anmeldeinformationsverwaltung und die Linux-Secret-Dienste würden echten Schutz bieten, und wir schauen uns das vielleicht noch einmal an. Zwei Dinge halten uns heute davon ab. Der Zugriff auf den Schlüsselbund hängt an der Identität der Anwendung, und nzbfast ist noch nicht signiert, also sind die Abfragen und das Verhalten nach jedem Update schlecht. Und ein großer Teil der Installationen sind Docker, Server ohne Bildschirm und NAS-Geräte, wo es überhaupt keinen Schlüsselbund gibt, was zwei verschiedene Speicherpfade hinterließe, die korrekt bleiben müssen. Ein einziges, gut verstandenes Format, das sich überall gleich verhält, ist vorerst der bessere Handel.

Zwei weitere Optionen pro Server haben noch kein Bedienelement im Dashboard: trage sie von Hand beim Eintrag dieses Servers in config.local.json ein (siehe §17) und starte neu.

SchlüsselHinweise
bind_ipBindet die ausgehenden Verbindungen dieses Servers an eine bestimmte lokale Adresse, für Rechner mit mehreren Anbindungen und VPN-Split-Tunnel. Die Adressfamilie wählt zugleich die Zielfamilie: eine v4-Bindung verbindet sich mit der v4-Adresse des Servers.
socks5Schickt den NNTP-Verkehr dieses Servers über einen SOCKS5-Proxy: host:port oder user:pass@host:port. Der Hostname wird vom Proxy aufgelöst, es gibt also kein lokales DNS-Leck.
EmpfehlungZwei Provider auf verschiedenen Backbones schlagen drei auf demselben. Lass Server-Diversität laufen (§13), um zu sehen, welche deiner Provider deine Abdeckung wirklich diversifizieren und welche redundante Kopien voneinander sind.

9 · Einstellungs-Referenz

Fast alles lässt sich im Dashboard unter ⚙ Einstellungen konfigurieren; die vier Ausnahmen stehen am Ende dieses Abschnitts. Mit live markierte Werte gelten sofort, restart-Werte beim nächsten Start. Jede hier gemachte Änderung wird in settings.json gespeichert und übersteht Neustarts (UI-Werte schlagen Kommandozeilen-Flags).

Tempo & Zeitplan live

EinstellungWas sie bewirkt
TempolimitLimit in Bytes/Sek. (50M, 1G, 0 = unbegrenzt). Fernsteuer-Apps schicken womöglich Prozente - setz das Leitungstempo, damit sie richtig übersetzt werden.
Auto-TempoRTT-gesteuertes Limit, das anderem Verkehr im Haushalt weicht und sich wieder ausdehnt, wenn die Leitung ruhig ist.
Langsame Downloads zurückstellenEin Job, der an einem einzelnen langsamen Server festhängt, während andere warten, wandert ans Ende der Warteschlange (Fortschritt bleibt). Siehe §13.
Prefetch auf freien ServernServer, die dem aktiven Job nichts nützen, starten den nächsten eingereihten. Siehe §13.
Auto-Update / Update-Check-URLSiehe §14.
LeitungstempoDie Nenngeschwindigkeit deines Anschlusses - ermöglicht Prozent-Limits aus SABnzbd-kompatiblen Apps.
WochenplanZeileneditor für Wochenzeit-Regeln: pausieren, fortsetzen oder ein Tempolimit zu bestimmten Tagen/Uhrzeiten setzen (lokale Zeit). Z. B. werktags 9–17 auf 20 MB/s begrenzen, sonst unbegrenzt.

Nächster Download live

Verbindungen (pro Server), Fenster (Pipelining-Tiefe pro Verbindung), Decoder (parallele Decode-Threads). Wird beim Start jedes Jobs übernommen. Die Standardwerte passen für die meisten Leitungen; nutz die Tuning-Tools, bevor du blind erhöhst.

Prüfung während des Downloads wählt, wie viel schon beim Eintreffen geprüft wird. Vollständig bestätigt jeden PAR2-Block per MD5. Schnell (die Vorgabe) belegt Blöcke stattdessen per CRC32, was auf einer langsamen CPU 2-3x schneller ist, und prüft weiterhin die eigene Prüfsumme jedes Artikels. Sparsam überspringt zusätzlich diese Artikel-Prüfsummen, sobald PAR2 eine Datei abdeckt: ein Schaden fällt dann einen Moment später auf, bei seinem Block. In allen dreien rechnen der abschließende Durchgang und jede Reparatur volles MD5, und ein Download ohne PAR2-Dateien behält seine Artikel-Prüfsummen.

Festplatte & Quota live

Minimaler freier Platz (neue Jobs darunter pausieren; standardmäßig 2 GB, 0 schaltet es ab), Download-Quota pro Tag oder Monat (UTC; Erzwingen-Jobs umgehen sie), Speicher-Budget - die RAM-Zuteilung der Engine (Standard: ¼ des RAM, gedeckelt; erhöh es auf einer Maschine mit viel RAM für maximales Tempo bei riesigen Jobs, und lies vor dem Senken, was wenig Speicher kostet) Neustart.

Fertige verschieben nach: nach dem Entpacken, Aufräumen und Umbenennen wandern fertige Downloads hierhin - ein NAS-Share, ein Medienlaufwerk, wohin auch immer deine Bibliothek gehört. Das Kategorie-Layout bleibt erhalten (ein Job, der unter tv/ fertig wurde, landet am Ziel unter tv/), und die History folgt dem Umzug, sodass verbundene Apps am neuen Ort importieren und löschen. Ist das Ziel beim Abschluss eines Jobs nicht erreichbar (Share offline, kein Platz), bleiben die Dateien im Download-Ordner und der Job wird trotzdem normal abgeschlossen. Leer = aus. Ziele je Kategorie leiten einzelne Kategorien woandershin (tv=/Volumes/NAS/TV, movies=/Volumes/NAS/Movies); jeder gelistete Pfad ist der Ordner dieser Kategorie, es wird also kein zusätzlicher Kategorie-Unterordner darin angelegt. Nicht gelistete Kategorien folgen Fertige verschieben nach.

Verschachtelte Archivtiefe (Standard 5) ist die Zahl der Archiv-im-Archiv-Ebenen, die automatisch entpackt werden: ein RAR-Satz, der ein 7z enthält, das wieder ein RAR enthält, ist im Usenet normal, und nzbfast folgt der Kette ohne zweiten Durchgang. An der Grenze bleibt das tiefste Archiv einfach liegen, nicht weiter entpackt, und der Download wird trotzdem fertig. Nur für ungewöhnlich tiefe Releases erhöhen.

Auto-Umbenennen & Aufräumen live

Fertige Downloads umbenennen (standardmäßig an) gibt dem Ordner und der Hauptdatei einen sauberen, aussagekräftigen Namen: aus einem Film wird Example Movie (2024), Serien behalten Show - S01E02. Verschleierte oder unerkannte Namen bleiben exakt so, wie sie gepostet wurden, statt geraten zu werden.

EinstellungWirkung
Auflösung einbeziehenSetzt 1080p, 2160p… in den Namen. Standardmäßig an; die anderen vier Kennzeichen sind aus.
Video-Codec einbeziehenx265, x264, AV1
Audio-Codec einbeziehenAtmos, DTS-HD, AC3
Quelle einbeziehenBluRay, WEB, REMUX
Release-Gruppe einbeziehenDas -GROUP-Kennzeichen am Ende.
Müll-Dateien entfernenStandardmäßig an. Löscht übrig gebliebene .par2, .nzb, .sfv, .nfo und Sample-Clips aus fertigen Film- und Serienordnern. Nie das Video oder seine Untertitel.
Nur die Mediendatei behaltenStandardmäßig aus, und destruktiv: löscht dauerhaft alles im Ordner außer dem Video (oder den Videos) und den Untertiteln. Jede Episode eines Staffelpakets bleibt erhalten. Hat Vorrang vor Müll-Dateien entfernen, wenn beides an ist.
Keep the other words in the nameStandardmäßig an. Sport, Rennen und andere Events sind oft ein und derselbe Titel, die ganze Saison lang wiederholt und nur ein oder zwei Wörter auseinander - "Round11 Hungary Race" gegen "Round11 Hungary Qualifying". Diese Wörter zu behalten ist das, was verhindert, dass eine ganze Saison zum selben Namen zusammenfällt. Greift nur dort, wo der Name sich anders nicht aufräumen ließ, gewöhnliche Filme und Folgen bleiben also unberührt.

Die ganze Gruppe läuft nach Reparatur und Entpacken und vor Fertige verschieben nach, und wird für einen Job, der noch auf ein Passwort wartet, komplett übersprungen. Beide Löschschritte gelten nur für Releases, die als Film oder Serie erkannt wurden: eine Software-Nutzlast oder ein nicht einzuordnender (verschleierter) Satz wird nie ausgemistet.

Gelöschte Dateien in den Papierkorb entscheidet, was "löschen" oben bedeutet. Ist die Option an, verschiebt die Bereinigung Dateien in den Papierkorb des Systems, sodass eine falsche Einschätzung darüber, was Müll war, rückgängig gemacht werden kann; ist sie aus, werden sie endgültig gelöscht. Sie ist unter macOS und Windows standardmäßig an, wo der Papierkorb ein Ort ist, den Sie sehen und leeren können, und unter Linux standardmäßig aus, wo das meist nicht der Fall ist.

Auf einem NAS oder in einem Container lassen Sie das aus. Liegen Ihre Downloads auf einer anderen Festplatte als Ihr Home-Verzeichnis - die übliche Anordnung auf Unraid, Synology, einer Seedbox oder jeder Docker-Installation mit eingebundener Freigabe - verwenden die Linux-Regeln für den Papierkorb gar keinen Desktop-Papierkorb. Sie legen einen versteckten Ordner .Trash-1000 (die Zahl ist Ihre Benutzer-ID) oben auf der Download-Festplatte an und verschieben die Dateien dorthin. Nichts zeigt Ihnen diesen Ordner, nichts leert ihn, und der Platz, den er belegt, kommt nie zurück.

Wenn Sie eine frühere Version von nzbfast unter Linux mit dieser Option betrieben haben, suchen Sie diesen Ordner im Wurzelverzeichnis Ihrer Download-Freigabe. Sie können ihn gefahrlos leeren: Alles darin ist eine Datei, von der die Bereinigung bereits entschieden hatte, dass Sie sie nicht wollten. nzbfast leert ihn nicht für Sie, denn er liegt auf Ihrer Festplatte, und das Urteil darüber steht Ihnen zu.

Ordner & Verarbeitung

Download-Ordner Neustart, Watch-Ordner, Nachbearbeitungs-Skript (läuft nach jedem Job mit SABnzbd-kompatiblen Argumenten und SAB_*-Umgebung - bestehende SAB-Skripte laufen unverändert), Aufräum-Endungen (Müll-Dateien, die nach dem Abschluss gelöscht werden), Smarte Ordner und TV-Ablage (siehe §10).

.nzb-Dateien nach Übernahme behalten (standardmäßig aus) lässt die ursprüngliche .nzb nach dem Einreihen im Watch-Ordner liegen, statt sie in den Papierkorb zu verschieben - für Sammler, und um die Datei weiterzugeben, wenn ein Download Probleme macht. Eine behaltene Datei wird gemerkt, auch über Neustarts hinweg, und nicht erneut eingereiht; speichere sie neu, um sie erneut herunterzuladen. Wie auch immer du dich entscheidest: Die Schublade jedes Jobs hat eine Schaltfläche .nzb herunterladen, eine Kopie der .nzb eines Jobs ist also nie mehr als einen Klick entfernt.

Indexierung live

Der eingebaute Indexer ist standardmäßig aus. Er findet Beiträge, die unter einem echten Dateinamen gepostet wurden, und ein großer und wachsender Teil des Usenet wird absichtlich ohne einen solchen gepostet: zufälliger Betreff, zufällige Dateinamen darin, abgelegt in einer Sammelgruppe. Der echte Name lebt nur in einer NZB, die der Uploader anderswo veröffentlicht, er war also nie im Usenet, wo ein Scanner ihn hätte lesen können. An unserem eigenen Index gemessen ergaben 14,8 Millionen gescannte Beiträge etwa 31.000 durchsuchbare Releases, also ungefähr einer von fünfhundert. Nutze weiter kommerzielle Indexer und trage sie unter Einstellungen → Suchindexer ein, damit du sie von der Wand aus durchsuchen kannst. Schalte das hier ein, wenn du bestimmten Gruppen folgst, in denen noch unter echten Namen gepostet wird, oder wenn du sehen willst, was dein Provider tatsächlich führt. Bei ausgeschaltetem Schalter wird nichts gescannt oder geholt, keine Datenbank angelegt, und Wand, Durchsuchen, Watchlist und der newznab-Feed sind ausgeblendet.
EinstellungWas sie bewirkt
Eingebauter IndexerDer Hauptschalter, aus, solange du ihn nicht einschaltest. Aus heißt: kein Scannen, keine Metadaten-Abfragen, keine Verfügbarkeitsstichproben und kein newznab-Feed; ein bereits auf der Platte liegender Index bleibt erhalten (es gibt einen Löschknopf), das Wiedereinschalten setzt also fort statt neu zu scannen.
GruppenNewsgroups, die der eingebaute Indexer scannt (z. B. alt.binaries.teevee).
Scan-IntervallSekunden zwischen den Durchläufen (Standard 900).
Backfill-ArtikelHeader, die beim allerersten Scan einer Gruppe geholt werden.
Vertiefen pro ScanJeder Durchlauf indexiert zusätzlich so viele ältere Artikel und lässt deine durchsuchbare Historie im Hintergrund wachsen, bis das maximale Alter erreicht ist (Standard 200.000 pro Durchlauf ≈ zig Millionen Artikel pro Tag Laufzeit).
Max. Post-AlterPosts ignorieren, die älter sind (90d, 6m, 2y) - deckelt Index-Größe und Scan-Zeit.
Auf das Altersfenster begrenzenStandardmäßig an. Löscht auch bereits gespeicherte Releases, sobald sie älter als das Höchstalter werden, sodass der Index ungefähr dieses Fenster hält statt endlos zu wachsen. Aus = nur neue Posts werden gefiltert, Gespeichertes bleibt. Tote Müll-Fragmente (ausgeblendet, nach einer Woche immer noch unvollständig) werden so oder so abgeräumt.
Ingest-FilterJSON-Regeln, die filtern, was in den Index kommt: Arten (verschleierter Müll fliegt standardmäßig raus), Jahr/Auflösung/Sprache, Größengrenzen.
Jetzt scannen / TiefenscanSofort einen Durchlauf starten; mit einer Tiefe werden so viele aktuelle Header neu gescannt.
OMDb-Key / Metadaten erneuern / Index löschenAnreicherungs-Regler der Wand (§6). Löschen baut die Datenbank von Grund auf neu - der Rettungsweg, falls sie je korrumpiert wird.
Pre-FeedAus, bis du ihn einschaltest. Viele Uploads werden ohne ihren Namen veröffentlicht, ein Scan hat dann nichts zu lesen. Öffentliche Relay-Kanäle kündigen den echten Namen an, der einzige offene Weg, solche Posts zuzuordnen. Einschalten hält eine Verbindung zu einem IRC-Netz offen und hört zu: gesendet wird nie etwas, ein Konto wird nicht angelegt. Braucht den Indexer, denn ein Feed ohne Ablage für das Gehörte ist nur ein offenes Socket.
Relay-Server, Relay-KanäleDas IRC-Netz, das die Ankündigungen trägt (Host oder Host:Port), und die kommagetrennten Kanäle. Eine Änderung greift beim nächsten Verbinden: Feed aus und wieder an, um sie sofort anzuwenden.
Über Korrelation benennenDie öffentlichen Live-Relays führen keine Dateinamen, die meisten verschleierten Posts lassen sich also nicht direkt zuordnen. Was eine Ankündigung festhält, ist der Zeitpunkt und die Größe. Dies vergleicht Ankündigungszeit und -größe mit namenlosen Posts und schlägt bei Passung den echten Namen unter Durchsuchen vor. Ein Vorschlag ist als solcher markiert, braucht deinen Klick und benennt nie Dateien auf der Platte um.
Starke Treffer automatisch anwendenStandardmäßig aus, und streng, wenn an: die Größe muss eng passen, keine andere Ankündigung darf fast genauso gut passen, und die Ankündigung muss diesen Post in der Gegenprobe zurückwählen. Ein angewandter Name ändert nur die Anzeige, ist als abgeleitet markiert und verschwindet von selbst, wenn ein fertiger Download ihn widerlegt. Alles Schwächere bleibt ein Vorschlag.
Ankündigungs-HistorieDer Live-Feed hört nur, was nach dem Einschalten angekündigt wird. Dies holt rund sechs Monate frühere Ankündigungen von einer öffentlichen Pre-Datenbank, höflich und einmalig, damit auch bereits indizierte Posts zugeordnet werden können. Läuft etwa eine halbe Stunde im Hintergrund.

Bibliothek, Sicherheit, Oberfläche

Bibliothek: Kategorien, die als sofortige Bibliothekseinträge behandelt werden, + Prüfintervall. Sicherheit: der volle API-Key (alles) und der NZB-Key (nur Hinzufügen - bedenkenlos an Indexer-Seiten zu geben), beide live rotierbar. Jedes der beiden Felder ersetzt den Key, zu dem es gehört, sobald du das Feld verlässt, und ein leer gelassenes Feld behält den Key, den es schon hat. Der API-Key hat zusätzlich Show, das den aktuellen Key anzeigt und kopiert, damit du ihn in Sonarr, Radarr oder NZB360 einfügen kannst, wann es dir passt, und Create new, das einen Ersatz erzeugt - der alte Key hört sofort auf zu funktionieren, alles bereits Verbundene braucht also den neuen. Beide hängen am API-Key selbst: der reine Hinzufügen-NZB-Key kann ihn nicht lesen, was genau der Sinn dieses Keys ist. Woher der Key bei einer neuen Installation kommt, steht in §2. Oberfläche: Klick-Sounds, Desktop-Benachrichtigungen bei Abschluss, Provider-Sortierintervall.

Tempo-Einheiten live bestimmt, wie jede Geschwindigkeit im Dashboard angezeigt wird: Megabyte (MB/s, die Norm bei Download-Managern, Standard) oder Megabit (Mb/s, wie Provider Leitungen angeben). Dateigrößen bleiben in Byte. Das ist eine Eigenschaft des Daemons, nicht deines Browsers, gilt also für jedes Gerät, das auf diese Installation schaut.

Fortgeschritten: die Stellschrauben hinter den offensichtlichen

Sechs Einstellungen ohne Kommandozeilen-Flag. Jede hat jetzt eine erweiterte Zeile auf der Einstellungskarte, zu der sie gehört, und bleibt über die API setzbar (§16), z. B. /api?mode=config&name=verify_mode&value=lean&apikey=…. Wie alle anderen landen sie dauerhaft in settings.json.

NameWirkung
verify_modefull | fast | lean (Standard fast). lean ist der Schub für langsame CPUs: wie fast, überspringt aber zusätzlich den yEnc-CRC pro Artikel, sobald PAR2 eine Datei abdeckt, also eine CRC32-Schicht statt zwei. Downloads ohne PAR2 behalten ihre Artikel-CRCs, und die Prüfung und Reparatur am Ende des Jobs bleiben in jedem Fall unverändert. Die Auswahl Prüfung während des Downloads oben ist diese Einstellung.
auto_retry_minsWartezeit vor dem einen automatischen zweiten Versuch, den ein erstes Scheitern mit fehlenden Artikeln bekommt (Standard 20). Propagationsverzögerung ist eine echte Ursache fehlender Artikel und löst sich von selbst; dank Journal holt der zweite Lauf nur, was noch fehlt. Passwort- und Takedown-Fehler qualifizieren sich nie.
index_scan_parWie viele Gruppen der Indexer parallel scannt (Standard 3, begrenzt auf 1-8).
oracle_sampleLeerlauf-STAT-Budget des Verfügbarkeits-Orakels (§13), Proben pro Stunde und Server. Standard 300, Maximum 3600, 0 schaltet das Abtasten ganz ab.
predb_max_rowsWie viele Pre-Ankündigungen die Feed-Tabelle behält (Standard 250000, begrenzt auf 10000-5000000). Der stündliche Schnitt kürzt auf diesen Wert, und der historische Import verweigert den Start, sobald er darüber hinausginge - so fügt ein Import nie Zeilen hinzu, die der nächste Schnitt löscht.
predb_seed_daysWie weit ein historischer Import zurückreicht, wenn er ohne eigenes Fenster gestartet wird (Standard 180 Tage, Maximum 366). Ein größeres Fenster bedeutet mehr Anfragen an die Pre-Quelle, die auf eine alle zwei Sekunden getaktet ist.

10 · Automatisierung

Watchlist

Die einfachste Automatisierung: Titel im Dashboard hinzufügen, Qualitätsvorlieben setzen, fertig. Neue Releases werden geholt, sobald sie in deinen indexierten Gruppen auftauchen; Kopien in besserer Qualität ersetzen frühere Grabs; eine Kalenderansicht zeigt, was ansteht.

RSS-Feeds

Einstellungen → RSS: jede newznab-/Indexer-RSS-URL, mit Intervall, Kategorie und Filterregeln pro Feed (Titelmuster, Größengrenzen). Passende Einträge werden automatisch geladen.

Smarte Ordner

Regeln, die beim Hinzufügen eines Jobs ausgewertet werden: nach Muster/Stichwörtern und Größe matchen, eine Kategorie zuweisen (der erste Treffer gewinnt). Mit eingeschalteter TV-Ablage werden fertige Serien-Episoden umbenannt und abgelegt als Show/Season 01/Show - S01E02.mkv - bereit für Plex/Jellyfin, ganz ohne externes Tool.

Zeitplaner

Der Wochenplan (siehe §9) automatisiert Pause/Fortsetzen/Tempo nach Tageszeit.

Skripte

Ein Nachbearbeitungs-Skript bekommt SABnzbds Positionsargumente und SAB_*-Umgebungsvariablen - das große Ökosystem an SAB-Skripten läuft unverändert.

11 · Sonarr, Radarr & Co.

nzbfast spricht die SABnzbd-API nativ, also funktioniert jedes *arr out of the box - und es kann obendrein ihr Indexer sein.

Als Download-Client

  1. In Sonarr/Radarr: Settings → Download Clients → SABnzbd hinzufügen.
  2. Host: deine nzbfast-Maschine · Port: 6789 · API-Key: dein voller API-Key (wo du ihn findest: §2).
  3. Kategorie nach Wunsch (z. B. tv / movies). Test → grüner Haken → Save.

Warteschlange, Verlauf, Status pro Job, „remove & delete“, Retry und Kategorie-Routing verhalten sich alle so, wie die *arrs es erwarten.

Als Indexer (newznab)

  1. Settings → Indexers → Newznab hinzufügen.
  2. URL: http://<host>:6789/ · API-Pfad: /api · Key: dein API-Key.
  3. nzbfast beantwortet caps-, search-, tvsearch- und movie-Abfragen aus seinem eigenen Index deiner beobachteten Gruppen, und /getnzb/<id> reicht die NZB zurück.
Schalte zuerst den eingebauten Indexer ein (Einstellungen → Indexierung). Er ist standardmäßig aus, und solange er aus ist, beantwortet diese Fassade jede Anfrage mit <error code="101"> statt mit einem leeren Ergebnis, ein Fehler fällt also beim Hinzufügen des Indexers auf und nicht erst Wochen später.

Warum das Ganze? Ein selbst gehosteter Indexer genau der Gruppen, die dich interessieren: keine Konten, keine API-Limits, Rückreichweite so tief, wie du ihn scannen lässt. Er ist eine Ergänzung zu deinen üblichen Indexern und kein Ersatz, denn er findet nur, was unter einem echten Dateinamen gepostet wurde.

12 · Handy & Fernsteuer-Apps

nzbfast implementiert beide großen Fernsteuer-Protokolle, also funktioniert fast jede Handy-/Tablet-App. Nimm das Protokoll, das deine App unterstützt:

Apps, die NZBGet sprechen (nzb360, LunaSea, NZB Unity…)

Feld in der AppWert
TypNZBGet
Host / Portdeine Maschine : 6789
Benutzernamebeliebig (z. B. nzbfast)
Passwortdein API-Key

Die volle JSON-RPC-Oberfläche, die diese Apps nutzen, wird bedient: Status, Warteschlange mit Umsortieren/Pause/Löschen, Verlauf, NZB hinzufügen, Tempolimit, Pause/Fortsetzen, Log.

Apps, die SABnzbd sprechen

Feld in der AppWert
TypSABnzbd
Host / Portdeine Maschine : 6789
API-Keydein API-Key (oder der NZB-Key für Nur-Hinzufügen-Zugriff)

Das Dashboard auf deinem Handy

Öffne einfach http://<machine>:6789 in einem mobilen Browser - das ganze Dashboard und die Wand haben ein Touch-Layout. Das Panel Einstellungen → Fernzugriff zeigt die genauen URLs und einen QR-Code zum Scannen.

nzbfast von außerhalb erreichen

Es gibt keine Anmeldeseite, und das ist Absicht. Eine Anmeldung per Session-Cookie ist eine Sicherheitsfläche, die dauerhaft gepflegt werden muss, und sie wäre trotzdem das schwächste Schloss an allem, was im offenen Internet steht. nzbfast authentifiziert stattdessen mit Ihrem API-Schlüssel und nimmt diesen Schlüssel ebenso im Anfrage-Header wie in der URL entgegen (X-Api-Key oder Authorization: Bearer) - genau das erlaubt es einer vorgeschalteten Instanz, die Anmeldung sauber zu übernehmen.

Am einfachsten ist es, gar nichts zu veröffentlichen. Installieren Sie Tailscale auf diesem Rechner und auf Ihrem Telefon, und beide sind im selben privaten Netz: nichts ist exponiert, weder Router- noch Zertifikatsarbeit fällt an, und Einstellungen → Fernzugriff zeigt eine Adresse für überall, sobald Tailscale läuft. Nehmen Sie diesen Weg, sofern Sie nicht ausdrücklich eine öffentliche Domain brauchen.

Falls doch, setzen Sie einen Reverse-Proxy davor, geben Sie ihm das Zertifikat und lassen Sie ihn die Authentifizierung erledigen. Starten Sie nzbfast mit --bind 127.0.0.1, damit der Proxy der einzige Weg hinein ist, und richten Sie den Proxy auf http://127.0.0.1:6789:

# Caddy
example.com {
    reverse_proxy 127.0.0.1:6789
}

# nginx
location / {
    proxy_pass http://127.0.0.1:6789;
    proxy_set_header Host              $host;
    proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

Legen Sie darüber, was Ihr Proxy bietet: Basic Auth, einen Forward-Auth-Dienst wie Authelia oder Authentik, oder Client-Zertifikate. Eine Sache erwischt alle - Sonarr, Radarr und die Telefon-Apps können keine Browser-Anmeldung durchlaufen, lassen Sie ihnen also einen Weg daran vorbei. Die meisten Proxys können eine Anfrage mit gültigem X-Api-Key-Header durchlassen und alles andere abfragen.

Leiten Sie nicht einfach Port 6789 am Router weiter. Das Dashboard spricht unverschlüsseltes HTTP, Ihr API-Schlüssel und alles, was Sie damit tun, liefe also für jeden auf dem Weg lesbar durchs Internet, und eine Installation ganz ohne Schlüssel steht jedem offen, der sie findet. Wenn Sie trotzdem einen Port weiterleiten, setzen Sie zuerst einen API-Schlüssel.

13 · Performance-Tools

System-Benchmark

Ein Klick misst deine drei Limits - Netzwerk-Durchsatz (eine echte 8-Sekunden-Messung über mehrere Verbindungen), CPU-Prüfrate und Festplatten-Schreibtempo - und stellt die Antwort voran: deine erwartete maximale Download-Geschwindigkeit und welches Limit die Grenze ist. Der kürzeste Balken ist dein Flaschenhals; die anderen zeigen ihre Reserve. Plane ihn ein (6-stündlich → wöchentlich) und jeder Lauf landet in einer Verlaufstabelle, sodass du siehst, wann Provider, ISP oder Hardware ihr Verhalten geändert haben. Geplante Läufe passieren nur, während die Warteschlange ruht.

Verbindungs-Tuning

Misst einen Provider bei steigender Verbindungszahl und empfiehlt eine Einstellung - mehr Sockets helfen, bis der Provider oder deine Leitung dichtmacht, und manche Provider bestrafen zu viel Fragerei. Alle testen vergleicht jeden Provider und lässt sie dann alle zusammen bursten, um zu prüfen, ob der Pool deine Leitung auslastet.

Server-Diversität

Nimmt per STAT Artikel-Stichproben über alle Alter auf jedem Server und gruppiert Provider nach gemeinsamen Lücken: Provider mit ~100 % gemeinsam fehlenden Artikeln sind dasselbe Backbone (redundant für die Reparatur); unabhängige erweitern deine Abdeckung wirklich. Endet mit einer Empfehlung in Klartext.

Automatische Warteschlangen-Intelligenz

Das Verfügbarkeits-Orakel

Takedowns sind der Hauptgrund, warum ein Usenet-Download scheitert, und sie sind vorhersagbar: dasselbe Release verschwindet auf einem Backbone, während ein anderes es noch hat. nzbfast führt ein kleines Register darüber, was deine eigenen Provider tatsächlich geliefert haben, und gibt ein winziges Leerlaufbudget an STAT-Proben aus (ein paar Hundert pro Stunde und Server, nie während eines Downloads), um es aktuell zu halten. Nutzlast lädt es dafür nie.

Was du davon hast:

Das Urteil ist eine Vorhersage aus Indizien, keine Garantie. Für eine harte Antwort zu einer NZB zählt nzbfast check (§15) die tatsächlichen Artikel.

Speicher-Budget - und was wenig Speicher kostet

Alle Engine-Caches teilen sich ein Budget (Standard ¼ des physischen RAM, gedeckelt auf 256 MB–16 GB). Setz es explizit mit dem Speicher-Budget in den Einstellungen oder mit --mem-limit auf der Kommandozeile.

nzbfast ist gebaut, um dein Netzwerk und deine Festplatte gleichzeitig auszulasten, und RAM ist das, was beides in einem Durchgang möglich macht: Artikel werden dekodiert, geprüft und direkt an ihre endgültigen Offsets geschrieben, sodass Archiv-Volumes die Festplatte nie berühren müssen. Hungere es aus und nichts geht kaputt - jeder Cache hat einen Ausweich-Pfad, und die Engine weicht auf mehr Festplatten-I/O aus, statt zu swappen oder zu scheitern. Aber dieses Ausweichen ist nicht gratis, und bei großen Jobs kannst du es messen.

Gemessen auf einer Maschine und einer Leitung (M1 Ultra, 10 GbE), dieselben Dateien bei jedem Budget. Jeder Lauf lieferte ein korrektes, voll verifiziertes, entpacktes Ergebnis:

Job-GrößeReichlich RAM2-GB-Budget
≈ 8-GB-Maschine
1-GB-Budget
≈ 4-GB-Maschine
256-MB-Budget
≈ 2-GB-NAS
7 GB15 s15 s15 s15 s
35 GB65 s70 s70 s65 s
87 GB148 s206 s +39%196 s +32%180 s +22%
190 GB330 s427 s +29%402 s +22%411 s +25%

Der Spitzenverbrauch folgt dem Budget, nicht dem Job: Dieser 190-GB-Download läuft in etwa 1,1 GB RAM durch. Was du dafür eintauschst, ist Zeit - und nur bei großen Jobs.

EmpfehlungGib nzbfast grob 2 GB Budget pro 100 GB deines größten Downloads und lass sonst den Standard in Ruhe - ¼ des RAM ist auf den meisten Maschinen schon die richtige Antwort. In der Praxis: 4 GB RAM decken Jobs bis ~35 GB bei vollem Tempo ab; 8–16 GB halten auch 100-GB-plus-Jobs dort; ein 2-GB-NAS wird alles fertigstellen, was du ihm gibst - betrachte es aber als Hintergrund-Downloader, nicht als etwas, das eine schnelle Leitung sättigt.

Auf einem kleinen NAS senk neben dem Budget auch die Verbindungen (2–4). Bei 256 MB Budget und 2 Verbindungen bleibt der Spitzenverbrauch nahe 190 MB - bequem innerhalb dessen, was ein 2-GB-NAS übrig hat. Sei dir bewusst, dass dann die Verbindungszahl limitiert, nicht der Speicher: Derselbe 35-GB-Job brauchte 286 s statt 65 s. Das ist die ehrliche Form dieses Tauschs - er wird immer fertig, und zwar korrekt; er lastet nur die Leitung nicht aus.

Die Benchmarks werden für jedes Release neu gefahren; Methode und Zahlen pro Maschine werden neben den Ergebnissen veröffentlicht.

14 · Updates

Aktualisieren, ohne deine Einstellungen zu verlieren

Eine Regel gilt für jede Installation: ein Update ersetzt das Programm, nie deine Einstellungen. Alles, was du konfiguriert hast - Server, Pfade, der API-Key, die Warteschlange - liegt in einer Handvoll Dateien in einem Ordner (§17), und kein Installer, kein Image-Pull und kein Paket-Upgrade rührt diesen Ordner an. Wenn Einstellungen nach einem Update doch verschwunden wirken, liegt das fast immer daran, dass die neue Installation einen anderen, leeren Ordner liest, nicht daran, dass irgendetwas gelöscht wurde; die alten Dateien liegen noch genau dort, wo sie immer lagen. §18 hat die Schritte zur Wiederherstellung.

InstallationSo aktualisierst du
macOS-AppÖffne das neue DMG und zieh NzbFast nach Programme, ersetz dabei die alte. Dein Datenordner ist separat und wird nicht angetastet.
Windows-InstallerLass das neue Setup über die alte Installation laufen. Dein Datenordner ist separat und wird nicht angetastet.
Docker (Kommandozeile)docker pull nzbfast/nzbfast, entferne den alten Container und starte den neuen mit exakt denselben -v-Zuordnungen. Das Image ist wegwerfbar; der eingebundene /config-Ordner ist deine Installation. Nutzt dein Startbefehl einen relativen Pfad wie -v ./config:/config, führ ihn jedes Mal aus demselben Verzeichnis aus - von überall sonst ist ./config ein anderer, leerer Ordner.
Docker Composedocker compose pull && docker compose up -d, mit derselben Compose-Datei am selben Ort. Das ./config in der Datei ist am Ordner der Datei selbst verankert, lass die Datei also, wo sie ist.
WatchtowerNichts zu tun: Es erstellt den Container mit denselben Zuordnungen neu, sobald ein neues Image erscheint.
UnraidDocker-Tab → Check for UpdatesApply Update. Aktualisiere nie, indem du die App entfernst und neu hinzufügst; falls du doch einmal neu installierst, behalte denselben appdata-Pfad, damit sie dein bestehendes /config findet.
Synology (Container Manager)Lade das neue Image herunter, stopp den Container und erstelle ihn mit denselben Volume-Einstellungen neu - die Schritt-für-Schritt-Strecke in der Synology-Anleitung erklärt es Klick für Klick, auch wie du es nach Zeitplan machst.
Synology (Paket)Installiere das neue .spk im Package Center; es wird an Ort und Stelle aktualisiert.
Homebrewbrew upgrade nzbfast
Reines BinaryErsetz das Binary. Deine Config bleibt, wo du sie angelegt hast (§17).
TippDocker-Nutzer, die Sonarr oder Radarr anbinden: Leg den API-Key in die Container-Definition selbst (-e NZBFAST_APIKEY=…, oder in den environment-Block deiner Compose-Datei oder deines Unraid-Templates). Ein dort abgelegter Key übersteht jedes Container-Missgeschick, denn er liegt auf dem Host, in der Definition, und wird bei jedem Start neu angewendet. Ein Key, den du später in den Einstellungen setzt, gewinnt trotzdem gegen ihn.

15 · Kommandozeile

Alles, was der Daemon kann, ist auch skriptbar. Die Alltagsbefehle:

BefehlZweck
nzbfast setupInteraktive Server-Einrichtung.
nzbfast serveDen Daemon starten (Dashboard + API + Automatisierung). --open öffnet den Browser; --apikey setzt den Key von Hand (§2); --bind wählt die Lausch-Adresse, standardmäßig 0.0.0.0 (jede Schnittstelle), 127.0.0.1 nur für diese Maschine. --help zeigt die volle Flag-Liste - jede Dashboard-Einstellung hat einen Flag-Zwilling.
nzbfast get file.nzbEine NZB laden, volle Pipeline, ohne Daemon. --preflight bricht früh ab, wenn der Post nicht komplettierbar ist; --password für verschlüsselte Sets.
nzbfast check file.nzbVerfügbarkeits-Urteil - COMPLETE / REPAIRABLE / IMPOSSIBLE - ohne Nutzdaten zu laden.
nzbfast verify DIRDateien gegen das PAR2-Set in einem Verzeichnis prüfen.
nzbfast sysbenchDer System-Benchmark + Diversitäts-Bericht, im Terminal.
nzbfast index / searchGruppen in den Index scannen / ihn durchsuchen, ohne Daemon.
nzbfast import-sabServer aus einer SABnzbd-ini importieren.

Außerdem verfügbar: inspect, probe, bench, bench-cpu, soak, fetch, spots/spot-search/spot-get (Spotnet), predb-seed (füllt die Pre-Datenbank mit der Zeit vor dem Einschalten des Feeds), make-release-nzb/make-test-nzb (Test-Fixtures). Jeder Befehl nimmt --config und --help. Dazu kommt post: lädt Dateien als yEnc-Artikel hoch und schreibt die passende NZB. Ein Betriebswerkzeug, es verlangt ein ausdrückliches --post-server und wählt nie selbst einen Server aus.

16 · API-Überblick

Basis-Endpunkt: http://host:6789/api?mode=…&apikey=…&output=json - SABnzbd-kompatibel, bestehende SAB-Integrationen funktionieren also unverändert. Zwei Keys: der API-Key (volle Kontrolle) und der NZB-Key (nur Hinzufügen: addfile/addurl). addnzblnk gehört absichtlich nicht zum Nur-Hinzufügen-Satz: einen Link aufzulösen kann bezahltes Indexer-Kontingent verbrauchen, und das geht einen Nur-Hinzufügen-Zugang nichts an.

BereichModes
Warteschlangequeue (mit name=delete/pause/resume/priority/switch), pause, resume, addfile, addurl, addnzblnk, retry, set_password
Infohistory, status/fullstatus, stats, version, server_stats, usage, log, warnings, dazu /jobnzb/<nzo_id> (gibt die eigene gespoolte .nzb des Jobs wieder heraus, Warteschlange oder Verlauf; nur mit vollem API-Key)
Konfigurationget_config, config&name=<setting>&value=… (jedes Einstellungs-Feld), server_save/delete/test/enable/reorder, import_probe/apply
Index & Wandindex_search, index_get, index_stats, index_scan_now, wall, wall_search/fix/refresh/art, dazu newznab unter /api?t=caps|search|tvsearch|movie und /getnzb/<id>
Automatisierungwatchlist, watchlist_check_now, watch_calendar, feeds, smart_folders, schedule
Diagnosesysbench, bench_history, connladder, pooltest, diversity, update_check, update_apply
NZBGet JSON-RPC/jsonrpc - status, listgroups, history, append, editqueue, rate, pause, log (Basic-Auth: beliebiger Benutzer, API-Key als Passwort)
Vorschau / Wiedergabe/stream/<nzo_id> (HTTP-Ranges; das Starten eines geparkten Bibliotheks-Jobs braucht ein ?t=-Token oder den Key), /m3u/<id> (braucht den Key; stellt das Token aus), /wall, /art/…

17 · Dateien & Speicherorte

Wo der Einstellungs-Ordner liegt, hängt davon ab, wie nzbfast installiert wurde. Dieser eine Ordner enthält alles, was ein Backup wert ist:

InstallationEinstellungs-Ordner
macOS-App~/Library/Application Support/nzbfast/
Windows%LOCALAPPDATA%\nzbfast\
Docker / NAS-Container/config im Container, also der Host-Ordner, den du dorthin eingebunden hast. Auf Unraid ist das der appdata-Ordner der App.
Synology-Paket/var/packages/nzbfast/var/
TerminalDer Ordner, in dem du nzbfast setup ausgeführt hast, oder wohin --config / $NZBFAST_CONFIG zeigt.

Und was darin liegt:

DateiInhalt
config.local.jsonServer-Zugangsdaten und Optionen pro Server. Vom Assistenten angelegt; in den Einstellungen bearbeitbar. Halte sie privat. Passwörter sind verschleiert, nicht verschlüsselt.
settings.jsonJede im Dashboard geänderte Einstellung. Liegt neben der Config; UI-Werte übersteuern Kommandozeilen-Flags. Lösche einen Key (oder die Datei), um auf Flags/Standardwerte zurückzufallen.
apikeyDer API-Key, den nzbfast sich bei einem ersten Start selbst gemacht hat (§2). Liegt neben der Config; auf macOS und Linux nur für das Konto lesbar, das nzbfast ausführt. Lösch sie nicht, um einen frischen Key zu bekommen: Auf einer schon gelaufenen Installation ersetzt sie nichts, und der Daemon kommt ganz ohne Key wieder hoch. Setz stattdessen unter Einstellungen → Sicherheit einen neuen.
index.dbDer Release-Index (SQLite) + Wand-Metadaten. Kann gefahrlos gelöscht werden - er baut sich durchs Scannen neu auf (Einstellungen → Indexierung → Index löschen erledigt das für dich).
<config>/.spool/Warteschlangen-Zustand (übersteht Neustarts), NZBs pro Job, Verbrauchs-Buch, Benchmark-Verlauf, Poster-Art-Cache.
Artikel-JournalLiegt im Ausgabeordner jedes Jobs, solange er unvollständig ist - treibt Absturz-Resume und Erneut-Versuchen an. Bei Erfolg entfernt.
Externe ToolsKeine nötig - RAR-Entpacken und PAR2-Reparatur sind nativ. Sollte ein exotisches Set je ein externes unrar oder par2 als Fallback brauchen, schaut nzbfast neben seine ausführbare Datei, dann auf den $PATH.

18 · Fehlerbehebung

SymptomPrüfen
Langsame DownloadsLass den System-Benchmark laufen - er nennt den Flaschenhals direkt beim Namen. Ist es das Netzwerk: Verbindungs-Tuning laufen lassen, die Verbindungszahlen pro Server prüfen und sicherstellen, dass deine Provider nicht alle ein Backbone sind (Server-Diversität).
Langsam nur bei sehr großen Jobs
(NAS oder Maschine mit wenig RAM)
Erwartet, und messbar: Ein ausgehungertes Speicher-Budget lagert Caches auf die Festplatte aus und kostet ab ~87 GB 20–40 %. Siehe Speicher-Budget für die Zahlen und wie viel RAM du geben solltest. Kleinere Jobs sind nicht betroffen.
Download scheitert mit „articles missing“Der Post ist abgelaufen oder wurde bei deinen Providern entfernt. Ein zweiter Provider auf einem anderen Backbone rettet die meisten dieser Fälle. nzbfast check sagt das schon vor dem Download voraus. Und die Wand markiert die wahrscheinlich verschwundenen vorab mit ihrem Verfügbarkeitspunkt (§13). Ein erstes Scheitern dieser Art wiederholt sich nach einer Wartezeit einmal von selbst, denn Propagationsverzögerung sieht genauso aus und löst sich von allein.
Fertiges Archiv verlangt ein PasswortDie Verlaufszeile zeigt 🔑 - gib das Passwort dort ein; der Job wird an Ort und Stelle fertig.
Ein Archiv lässt sich nicht entpackenPasswort- und Reparaturfehler benennen sich selbst in der Verlaufszeile. Für alles andere gibt es einen Notausgang: Einstellungen → Watch-Ordner & Nachbearbeitung → Mit externem unrar entpacken (eine erweiterte Einstellung) übergibt das Entpacken an das auf deinem Rechner installierte Programm unrar statt an den eingebauten Entpacker. Lass es sonst aus: der eingebaute Weg ist bei jeder von uns gemessenen Form schneller, und verschleierte Posts mit Hash-Namen nehmen ihn ohnehin immer, weil unrar ihrer Umbenennung nicht folgen kann. Derselbe Schalter für nzbfast get-Läufe ist die Umgebungsvariable NZBFAST_NO_NATIVE_UNRAR=1. Wenn unrar ein Archiv entpackt, das der eingebaute Entpacker abgelehnt hat, melde es bitte, damit wir den eingebauten Weg reparieren können.
Sonarr/Radarr bekommt keine VerbindungPort 6789 erreichbar? API-Key korrekt (voller Key, nicht der NZB-Key)? Client-Typ auf SABnzbd gestellt?
Das Dashboard fragt nach einem API-Key, den ich nie gesetzt habeEine neue Installation macht sich selbst einen und druckt ihn einmalig beim Start (§2). Er steht in der Datei apikey neben deiner Config und in der Startausgabe. Oder tipp aus einem bereits angemeldeten Browser unter Einstellungen → Sicherheit einen eigenen Key ein.
Alle meine Einstellungen wirken nach einem Update weg
(Server, Pfade, API-Key)
Nichts an einem Update löscht Einstellungen; das heißt, nzbfast liest einen anderen, leeren Ordner. Zuerst: Das API-Key-Feld in den Einstellungen zeigt sich absichtlich leer - klick Show, bevor du schließt, dass er verloren ist. Auf Docker vergleich die /config-Zuordnung des neuen Containers mit der des alten: Ein geänderter Host-Pfad, ein relativer Pfad aus einem anderen Verzeichnis oder ein frischer appdata-Ordner lassen nzbfast allesamt bei null anfangen, während deine echten Einstellungen unangetastet am vorherigen Pfad liegen. Find den alten Ordner (such nach settings.json, deiner Config-Datei und apikey - die Orte stehen in §17), dann richte entweder die Zuordnung wieder auf ihn oder kopiere die Dateien in den neuen Ordner und starte neu. Das Start-Log nennt die exakt verwendete Einstellungsdatei: [settings] applying saved settings from …
Nichts im Netzwerk erreicht den DaemonPrüf --bind: 127.0.0.1 bedient nur die Maschine, auf der nzbfast läuft. Der Standard, 0.0.0.0, bedient jede Schnittstelle. Prüf dann die Firewall der Maschine selbst für Port 6789.
Durchsuchen-Karte bleibt kleinDer Indexer wächst im Hintergrund - prüf, ob unter Einstellungen → Indexierung Gruppen gesetzt sind, und gib „Vertiefen pro Scan“ Zeit, Historie anzusammeln. „Jetzt scannen“ erzwingt einen Durchlauf; die Statuszeile zeigt den Live-Fortschritt.
Wand zeigt falsches/kein ArtworkDetailblatt → ✎ Match korrigieren oder ↻ Metadaten erneuern. Film-Zuordnungen werden mit einem gratis OMDb-Key besser.
macOS sagt, die Anwendung „nzbfast“ könne nicht geöffnet werdenZwei Ursachen, beide schnell behoben. Wenn du das schlichte -macos-universal.zip verwendest: doppelklick Start nzbfast.command, nicht die Datei nzbfast daneben - das ist das Programm selbst, und der Finder beantwortet einen Doppelklick darauf mit genau dieser Meldung. Der Starter ist das, was alles einrichtet und startet. Kommt dieselbe Meldung auch beim Starter, hat die Kopie unterwegs ihr Unix-Ausführungsbit verloren: macOS bewahrt dieses Bit im .zip auf, Chat-Apps, Cloud-Laufwerke und erneutes Zippen aber nicht - so kommt ein weitergereichter Build nicht ausführbar bei dir an. Lade das .dmg oder das .zip direkt von der Releases-Seite, dann passiert das nicht. Um die vorhandene Kopie zu retten: Terminal öffnen, chmod +x mit einem Leerzeichen am Ende tippen, Start nzbfast.command und die Datei nzbfast ins Fenster ziehen, Return drücken - und dann den Starter erneut doppelklicken.
Daemon startet nicht: Port belegtEine andere Instanz läuft schon - oder ändere --port.
Wo sind die Logs?Die Log-Karte im Dashboard, oder das Terminal bzw. die Logdatei, mit der du serve gestartet hast.
Hängst du immer noch?Die Log-Karte nennt den Übeltäter meistens - häng ihr Ende an, wenn du ein Problem meldest, zusammen mit deiner nzbfast --version.

nzbfast - dieses Handbuch liegt jedem Release bei. Die hier genannten Einstellungen, Endpunkte und Standardwerte passen zu der Version, mit der es ausgeliefert wurde.