⚡ nzbfast

De snelle Usenet-downloader - gebruikershandleiding

1 · Welkom

nzbfast downloadt van Usenet zo snel als je lijn, je providers en je machine toelaten - en meestal betekent dat zo snel als je lijn. Het is één op zichzelf staand programma: de engine, een webdashboard, een posterwall-mediabrowser, een ingebouwde indexer, realtime voorvertoning, native PAR2-herstel en native RAR-uitpakken zitten allemaal in één executable. Er hoeft verder niets geïnstalleerd te worden.

Wat het snel maakt is architectuur, geen tweaks:

Gemeten tegen het hele veld op identieke hardware, taken en providers heeft nzbfast een download van 190 GB in zo'n 5 minuten afgerond op een 10 GbE-lijn - met de bekendste alternatieven 30–220% daarachter op dezelfde tests, voor zover ze die überhaupt afmaakten. De cijfers staan in §3.

2 · Snel aan de slag

macOS

  1. Open nzbfast-<version>-macos.dmg en sleep NzbFast naar Apps (universeel: Apple Silicon + Intel).
  2. Eerste start: macOS waarschuwt dat nzbfast nog niet door Apple genotariseerd is. Rechtsklik op de app → Open - of open Systeeminstellingen → Privacy en beveiliging, scrol omlaag en klik op Open toch. Dit is eenmalig.
  3. Het app-venster toont het dashboard met een welkomstkaart - klik erop en voeg minstens één Usenet-server toe (host, poort 563, gebruikersnaam, wachtwoord). Meer servers toevoegen kan later in Instellingen.
  4. Sleep een .nzb waar dan ook op het dashboard - of dubbelklik gewoon op .nzb-bestanden in de Finder. Downloads komen terecht in ~/Downloads/nzbfast. Afsluiten doe je via het menu; downloads gaan verder waar ze gebleven waren.

Liever geen app? De kale zip (binary + Start nzbfast.command-starter, dezelfde engine) werkt nog steeds als vanouds - de stappen staan hieronder bij "Vanuit een terminal".

Windows

  1. Draai nzbfast-<version>-windows-x64-setup.exe. Hij installeert alleen voor jouw gebruiker (geen administratorwachtwoord). Omdat deze release nog niet code-signed is, kan SmartScreen "Je pc is beschermd" tonen - klik op Meer informatieToch uitvoeren.
  2. nzbfast leeft in het systeemvak: dubbelklik op het tray-icoon (of kies Open dashboard in het rechtsklikmenu) om het dashboard te openen, en voeg daarna je Usenet-server toe via de welkomstkaart. Het tray-menu heeft ook Pauzeren/Hervatten, je downloadmap en Afsluiten.
  3. Dubbelklikken op een .nzb-bestand zet hem in de wachtrij. Windows Defender kan eenmalig vragen of lokaal netwerkverkeer is toegestaan - sta het toe.

Liever een portable versie? De -windows-x64.zip werkt nog steeds: pak hem uit waar je wilt en dubbelklik op nzbfast.exe (of Start nzbfast.bat) voor de terminalwizard.

Vanuit een terminal (elk platform)

nzbfast setup            # interactive server setup (writes config.local.json)
nzbfast serve --open     # start the daemon and open the dashboard
TipDraai je al SABnzbd of NZBGet? Bespaar je het overtypen van inloggegevens: Instellingen → Usenet-servers → Importeren uit SABnzbd / NZBGet… vindt je bestaande installatie en neemt de servers over. Op de commandoregel is er ook nzbfast import-sab.

De welkomstkaart vraagt ook hoe je nzbfast wilt gebruiken, met vier antwoorden: een app zoals Sonarr of Radarr stuurt hem aan, overstappen van SABnzbd, overstappen van NZBGet, of gewoon jij, vanaf dit dashboard. Een antwoord kiezen verandert op zichzelf niets. Het toont een korte lijst om na te lopen - elke aanbeveling met de eigen naam van de instelling, de huidige waarde, de aanbevolen waarde en één regel waarom - en Toepassen zet alleen de regels die je aanvinkt. Elke regel is een gewone instelling die je daarna los weer terug kunt zetten, en dezelfde lijst blijft later beschikbaar onder Instellingen → Aanbevolen instellingen voor hoe je hem gebruikt.

Je API-sleutel

Bij een echt nieuwe installatie maakt nzbfast zelf een API-sleutel aan zodra de daemon voor het eerst start, en toont hem één keer in een banner net onder het dashboardadres. Vanaf dat moment heeft elk verzoek die sleutel nodig, zodat het dashboard en de API niet openstaan voor alles wat de machine kan bereiken.

Wat je ermee moet doen, hangt af van hoe je nzbfast gestart hebt:

De sleutel wordt bewaard in een bestand met de naam apikey naast je configbestand, dus hij blijft hetzelfde na een herstart en je kunt hem teruglezen wanneer je maar wilt. Op macOS en Linux is dat bestand alleen leesbaar voor het account waaronder nzbfast draait. Hij staat ook in de uitvoer van de daemon zelf, dus de Log-kaart van het dashboard heeft hem als de terminal al weggescrold is.

Upgraden verandert niets.Een installatie die al bestaat blijft precies zoals hij was, met of zonder sleutel. Een sleutel wordt alleen ooit aangemaakt bij een eerste start - eentje zonder dashboardinstellingen en zonder bewaarde wachtrij - want een sleutel die opeens onder een werkende installatie opduikt zou elke Sonarr, Radarr en telefoon-app die je al verbonden had buitensluiten, bij een herstart die je nooit aan een gewijzigde instelling gekoppeld had.

Wil je in plaats daarvan een eigen sleutel gebruiken? Typ hem bij Instellingen → Beveiliging; hij geldt meteen. Dat paneel wijzigt de sleutel maar toont de huidige nooit, dus lees het bestand apikey als je de gegenereerde waarde terug wilt zien. Wil je helemaal zonder sleutel draaien, omdat iets vóór nzbfast het inloggen al afhandelt, start hem dan met NZBFAST_OPEN=1 in de omgeving. nzbfast blijft dan open en zegt dat ook onomwonden bij het starten.

Welke machines de daemon überhaupt kunnen bereiken is een aparte keuze: serve --bind. De standaard is 0.0.0.0, oftewel elke netwerkinterface, want een NAS, een telefoon en een Sonarr op een andere computer moeten allemaal verbinding kunnen maken. --bind 127.0.0.1 beperkt het tot de machine waarop nzbfast draait, en dat is wat je wilt op een enkele desktop waar verder niets toegang nodig heeft.

3 · Hoe nzbfast werkt

Eerst wat vocabulaire, dan leest de rest van de handleiding makkelijk:

TermBetekenis
Provider / serverEen Usenet-dienst waar je een account bij hebt (Newshosting, Eweka, XS News…). Elke provider staat een bepaald aantal gelijktijdige verbindingen toe.
BackboneDe infrastructuur achter een provider. Meerdere merken verkopen vaak dezelfde backbone door - nuttig om te weten, want twee providers op één backbone missen dezelfde artikelen. Zie Serverdiversiteit.
NZBEen klein XML-bestand met de lijst artikelen waaruit een post bestaat. Dit is wat je aan nzbfast voert.
PAR2Hersteldata die naast een release wordt gepost. nzbfast verifieert ertegen tijdens de download en repareert automatisch wanneer artikelen beschadigd zijn of ontbreken.
Store-mode RARDe meeste releases zijn zonder compressie in RAR-volumes verpakt. nzbfast herkent dat en schrijft het binnenste bestand tijdens het downloaden rechtstreeks naar zijn definitieve plek - geen uitpakstap achteraf.

De pipeline draait download → decode → verificatie → uitpakken gelijktijdig. De Pipeline-kaart op het dashboard laat alle drie de banen tegelijk bewegen. Als de laatste byte binnenkomt is de verificatie al gedaan en het bestand al uitgepakt; de "nabewerkingstijd" van een typische taak is nul. Alleen als er gerepareerd moet worden, worden volumes alsnog op schijf gezet, ter plekke gerepareerd door de native GF(2¹⁶)-engine (hernoemde of byte-verschoven geobfusceerde data wordt gevonden en meegenomen door een glijdende blokscan) en opnieuw uitgepakt - allemaal automatisch.

Onderbroken downloads (crash, stroomuitval, kill -9) hervatten vanuit het artikeljournal: bytes die al op schijf staan worden nooit twee keer opgehaald. Het journal registreert waar de bytes van elk artikel fysiek terechtkwamen - ook bytes die rechtstreeks in het eindbestand zijn uitgepakt - dus een hervatting bouwt verder vanaf de lokale schijf en verifieert alles wat hij terughaalde eerst tegen de PAR2-blokmap voordat het wordt vertrouwd.

Hoe dat zich verhoudt

Gemeten tegen SABnzbd 5.0.4 en NZBGet 26.2 op dezelfde machine, dezelfde providers en dezelfde NZB's, geklokt tot een bruikbaar bestand - download, verificatie, reparatie en uitpakken allemaal meegerekend, want dán is de taak pas echt klaar:

TaakgroottenzbfastNZBGet 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%

Het gat is de nabewerking die de anderen na de laatste byte nog moeten doen. Beide concurrenten waren voor de vergelijking getuned, niet op standaardinstellingen gelaten - SABnzbd wordt met name met request-pipelining uit geleverd, wat hem duur komt te staan, dus die is aangezet.

Twee verschillen wegen net zo zwaar als de tijden:

Crash-hervatting, gemetenSchiet een download halverwege af (kill -9 op 15 GB van een taak van 34,5 GB) en de hervatting haalt ~0,3 GB opnieuw op - alleen de artikelen die op het moment van de kill echt onderweg waren - tegenover 0,2 GB bij NZBGet in dezelfde test. Dit was ooit een verlies dat we publiceerden (15,3 GB opnieuw opgehaald, toen het journal direct-uitgepakte bytes nog niet kon verantwoorden); het placement-journal heeft dat opgelost: de hervatting haalt die bytes terug uit de lokale uitvoerbestanden en verifieert elke teruggehaalde byte tegen de PAR2-blokmap voordat hij wordt vertrouwd. Elk scenario dat we verliezen wordt naast de winsten gepubliceerd, met de volledige methode en de ruwe cijfers.

4 · Het dashboard

Open http://localhost:6789 (of het adres van je machine vanaf een ander apparaat - de telefoonlay-out past zich automatisch aan). Alles wordt live bijgewerkt, één keer per seconde. De kaarten, van boven naar beneden:

Kopbalk

Doorvoer

Live MB/s met een scrollende grafiek; de gestippelde watermerken markeren het hoog/laag van deze sessie, de vage lijn is een voortschrijdend gemiddelde. Daaronder toont een histogram hoe de snelheidsmetingen van de sessie verdeeld zijn - gemiddeld vs piek. Maak het venster breder en de grafieken tonen meer geschiedenis (tot een uur).

Stat-tegels

Gedownload deze sessie, wachtrijdiepte, aantallen voltooid/mislukt, pieksnelheid van de sessie.

Resources - één machine, vier plafonds

CPU, RAM (tegenover het geheugenbudget van nzbfast), schrijfsnelheid naar schijf en netwerk op één genormaliseerde grafiek, met echte waarden in de legenda en een waarschuwing bij weinig schijfruimte. Geen enkele andere NZB-client laat je dit zien; het bestaat om een punt te bewijzen - nzbfast trekt je lijn vol, niet je machine.

Pipeline - fasen overlappen

Drie banen: downloaden, verifiëren (gecontroleerde PAR2-blokken), uitpakken. Bij een gezonde taak bewegen ze alle drie tegelijk.

Providers

Per server de live snelheid, verbindingsbenutting, aandeel in het verkeer, GB deze sessie en een artikel-completionscore over de hele levensduur (gekleurd zodra een server onder de 98% zakt). Een gestapelde vlakgrafiek toont de bijdrage van elke provider door de tijd. Rijen hersorteren zich elke 10 s op live prestaties (instelbaar in Instellingen → Interface), zodat je snelste provider altijd bovenaan staat.

Wachtrij

Index doorzoeken

Doorzoek alles wat de ingebouwde indexer uit je gescande groepen heeft gecatalogiseerd (zie Automatisering) en download met één klik - geen externe indexer nodig. De statusregel toont de scanvoortgang; Nu scannen forceert een ronde.

Watchlist

Voeg titels op naam toe - ook titels die nog niet gepost zijn. Zodra een passende release in de index verschijnt wordt hij automatisch opgehaald, met kwaliteitsvoorkeuren en upgraderegels (een betere versie vervangt een slechtere).

De kaart kan ook een lijst volgen die je in Plex bijhoudt. Voeg een lijstbron toe: koppel je Plex-account (je keurt een korte code goed op de eigen pagina van Plex, dus er bereikt nooit een wachtwoord nzbfast) of plak het adres van je Plex-watchlist. Behandel dat adres als een wachtwoord - iedereen die het heeft kan je lijst lezen - en daarom wordt het na het opslaan gemaskeerd. Gesynchroniseerde titels verschijnen als alleen-lezen regels naast je eigen titels. Een gekoppeld account ziet je hele lijst, dus een titel die je daar verwijdert wordt hier ook niet langer gevolgd (voltooide downloads blijven altijd staan); een adres toont alleen de nieuwste items, dus een ontbrekende titel kan er simpelweg afgeschoven zijn en er wordt niets verwijderd. Beide gedragingen zijn per bron om te zetten.

Geschiedenis

Recente downloads, één regel per stuk. Mislukte taken bieden Opnieuw proberen (gaat verder vanuit het journal). Versleutelde archieven tonen een 🔑-ontgrendelknop - voer het wachtwoord in en de taak maakt zichzelf ter plekke af. De verificatiegezondheidsstrook zet beschadigde PAR2-blokken per download uit - een oplopende staart betekent dat artikelen beschadigd binnenkomen. De lade van elke regel zegt wie de taak toevoegde en heeft dezelfde knop Download de .nzb als de wachtrij - handig om een release ergens anders opnieuw te downloaden, of om de .nzb bij een probleemmelding te voegen.

De kaart toont standaard tien downloads en de rest is één klik weg, via de knop ▤. Status, locatie en de reden van een mislukking zitten achter een klik op de regel zelf, zodat het gewone geval - wat klaar is, hoe groot, wanneer - leesbaar blijft zonder scrollen. Sleep in plaats daarvan de onderrand van de kaart om de lijst op een door jou gekozen hoogte te laten scrollen. History rows in Instellingen → Interface verandert die tien; omdat het een eigenschap van de daemon is en niet van je browser, geldt het voor elk apparaat dat naar deze installatie kijkt. Colour History names daarnaast kleurt voltooide namen groen en mislukte rood; uitgezet blijven de namen neutraal, en de gekleurde stip en de details van de regel zeggen nog steeds welke welke is.

Dataverbruik

Dagelijkse balken per provider en totalen voor Vandaag / 7 dagen / 30 dagen - onmisbaar voor accounts met een datalimiet en blokaccounts. Blokaccounts tonen het totale verbruik tegenover hun grootte.

Log, Systeembenchmark, Verbindingstuning, Serverdiversiteit

Een logviewer op de pagina zelf, plus de drie zelfmeet-tools die worden beschreven in Prestatietools.

Het dashboard indelen

Het dashboard is van u om in te delen. Vier handelingen, overal met dezelfde naam: een kaart Verplaatsen, Compact maken, het Formaat wijzigen of haar Verbergen. Elke keuze onthoudt de browser waarin u haar maakte, dus elk apparaat houdt zijn eigen indeling, en Lay-out resetten in Instellingen → Interface zet elke kaart, grootte en kolom terug zoals ze geleverd werden.

Lay-out aanpassen is de begeleide ingang, en de snelste manier om te zien wat een kaart kan. Open het via de bescheiden link net boven de eerste kaart, of via Instellingen → Interface, waar het de eerste knop is in de rij Dashboard-lay-out. Zolang het aan staat heeft elke verplaatsbare kaart een omlijning, worden de drie gereedschappen in de titelregel op volle sterkte getekend met hun woord naast het pictogram, en wordt elke formaatbalk in de accentkleur getekend; een kaart zonder balk zegt op een eigen regel waarom, in plaats van u er een te laten zoeken. Klaar of de Escape-toets sluit het af. De modus is een manier van kijken naar de pagina en geen instelling: hij verandert niets aan uw indeling, en na een herlaadbeurt staat hij weer uit.

Op een dashboard dat nog niemand heeft ingedeeld zegt één regel boven de kaarten dat ze verplaatst, van formaat gewijzigd, compact gemaakt of verborgen kunnen worden, en wijst naar die link. Hij verschijnt één keer: Begrepen sluit hem, en dat doen ook de modus openen of wat dan ook indelen.

Klik met rechts op de titel van een kaart voor dezelfde handelingen in één lijst: Omhoog, Omlaag, Compact, Formaat wijzigen en Verbergen, plus een ingang naar Lay-out aanpassen als u daar nog niet in zit. Formaat wijzigen wordt alleen aangeboden op een kaart die een balk heeft om te slepen. Omhoog en Omlaag vallen aan de uiteinden uit, en ze tellen alleen de kaarten die u ziet: een verborgen kaart wordt overgeslagen, dus eerste en laatste betekenen eerste en laatste zichtbare.

Dat menu is net zozeer een toetsenbordweg als een muisweg. Ga met Tab naar de greep van een kaart, druk op de Menu-toets of Shift+F10, en het opent onder de kop. De pijltjes omhoog en omlaag lopen erdoorheen en slaan alles over wat uitstaat; Escape sluit het en geeft de aandacht terug aan de greep waarvandaan u het opende. Formaat wijzigen kiezen geeft de aandacht aan de balk van die kaart, waar de pijltjes omhoog en omlaag de hoogte zetten en Shift een grotere stap maakt.

Escape sluit altijd alleen de bovenste laag. Het kaartmenu sluiten terwijl de modus aan staat laat de modus aan; een tweede Escape verlaat de modus.

Dashboardkaarten in Instellingen → Interface biedt dezelfde indeling als een gewone lijst bedieningselementen: een vakje Tonen per kaart, een vakje Compact ernaast, en de knoppen Omhoog en Omlaag. Op een telefoon, een tablet of elk smal venster staan de kaartgereedschappen en het slepen uit, want een kaart slepen over een pagina die onder uw vinger scrolt is een slechte bediening: daar deelt deze lijst het dashboard in. Zij schrijft wat het bureaublad leest, dus een volgorde die u op de telefoon zet is de volgorde die het bureaublad toont. Haar knoppen volgen de regel van het menu: ze vallen uit aan de uiteinden van de zichtbare kaarten, en een kaart die u verborgen hebt kan pas verplaatst worden als u haar weer toont.

Tabelkolommen worden ter plekke ingedeeld, niet vanuit het bovenstaande. Sleep in de tabellen van wachtrij, geschiedenis en index een kolomkop opzij om de kolom te verplaatsen, of de achterrand van de kop om haar te verbreden of te versmallen; dubbelklikken op die rand zet de breedtes terug. Met een kop in de aandacht verplaatsen de pijltjes links en rechts hem, en Shift met een pijltje wijzigt de breedte.

5 · Downloads toevoegen

MethodeHoe
Slepen & neerzettenSleep één of meer .nzb-bestanden waar dan ook op het dashboard.
WatchmapStel een map in bij Instellingen; elke .nzb die je erin opslaat wordt binnen 5 seconden opgepikt en naar de prullenbak verplaatst, en een open dashboard meldt elke oppak op naam ("… opgepikt uit Downloads"), zodat een bestand dat uit de map verdwijnt nooit een raadsel is. Houd je je bestanden liever? Zet .nzb-bestanden na oppakken bewaren aan (zie §9). Zet de downloadmap van je browser erop voor één-klik-grabs vanaf indexersites.
Vanaf een URLPlak een NZB-link (API mode=addurl, of via elke gekoppelde app).
nzblnk:-linksPlak een nzblnk:-link ergens op het dashboard, of sleep hem erin. Heb je geïnstalleerd vanaf de macOS-DMG of het Windows-installatieprogramma, dan kun je er ook rechtstreeks een aanklikken op een board. Zie nzblnk-links hieronder.
Index doorzoekenKlik op een complete release in de kaart Index doorzoeken.
Zoeken op indexersDoorzoek de indexer-accounts die je hebt toegevoegd en zet een resultaat rechtstreeks vanuit de lijst in de wachtrij. Zie Zoeken op je indexer-accounts hieronder.
Watchlist / RSSAutomatisch - zie Automatisering.
Sonarr/Radarr e.d.Die sturen grabs rechtstreeks de wachtrij in - zie §11.
Commandoregelnzbfast get file.nzb downloadt zonder de daemon.

Categorieën, prioriteiten, wachtwoorden

Zoeken op je indexer-accounts

Heb je een account bij een NZB-indexersite, dan kan nzbfast daar vanaf hier zoeken en in de wachtrij zetten wat je kiest, in plaats van dat jij naar de site gaat, een NZB downloadt en die terugbrengt. Het spreekt de gangbare indexer-API die al die sites aanbieden, dus er valt niets per site in te stellen: NZBGeek, NZBFinder, DrunkenSlug, DOGnzb en de rest werken hetzelfde. Een Prowlarr- of NZBHydra2-instantie is ook één regel, en neemt elke indexer erachter meteen mee.

Een account toevoegen. Instellingen → Zoeken op indexers → + Indexer toevoegen. Vul een naam van je keuze in, het API-adres van de site (het gewone webadres volstaat; een Prowlarr-regel ziet eruit als http://host:9696/1/api) en de API-sleutel van je accountpagina daar, en dan Indexers toepassen. Testen vraagt de site wat hij ondersteunt en toont wat er terugkwam, waarmee adres en sleutel in één klik bewezen zijn. Een opgeslagen sleutel wordt nooit meer getoond: het vak zegt dat, en leeg laten houdt de sleutel die er al staat.

Zoeken. Open 🎬 wall in de kopbalk en schakel over naar de releaselijst. Het uitklapmenu naast het zoekvak bepaalt waar een zoekopdracht kijkt: Deze index, dus wat deze machine zelf gescand heeft, Indexers, of Beide. Je keuze wordt onthouden. Je accounts bevragen vraagt om iets in het vak, want ze met een lege opdracht doorbladeren zou het dagbudget uitgeven aan een lijst waar niemand om vroeg. Met de ingebouwde indexer uit, zoals nzbfast binnenkomt, zijn er geen posters te tonen en is de pagina precies dit: een zoekvak, je accounts en de resultaten.

De resultaten. Eén regel per release, de nieuwste bovenaan, met grootte, ouderdom en hoe vaak de gebruikers van die indexer hem gepakt hebben. Een release die meerdere van je accounts voeren verschijnt één keer. Onder Beide wint een kopie die je eigen index al heeft en valt die van buiten af, want pakken wat je al geïndexeerd hebt kost je niets. Downloaden zet hem met hoge prioriteit in de wachtrij: nzbfast haalt de NZB zelf op, en vanaf dat punt is de taak als elke andere, met reparatie, uitpakken, categorieën en scripts ongewijzigd.

Naar één titel vragen. Open de kaart van een titel op de wall en druk op ⌕ Zoek op mijn indexers. Voor films gaat de vraag via het IMDb-nummer overal waar de site er een aanneemt, en dat is het verschil tussen de film die je bedoelde en elke release waarvan de naam toevallig die woorden bevat. nzbfast zoekt dat nummer zelf op, dus de pagina houdt er nooit een. Sites zonder overeenkomst op nummer worden gewoon met woorden bevraagd.

Je tegoed. Indexer-accounts worden geteld: zoveel zoekopdrachten en zoveel downloads per dag, afhankelijk van je abonnement. Zet die twee getallen op de regel en nzbfast telt ertegen af, met een nieuwe start om middernacht UTC. 0, de standaard, betekent onbeperkt, en er wordt toch geteld. Een account dat zijn tegoed op heeft, zit de zoekopdracht uit terwijl de andere doorgaan, en een regel boven de resultaten noemt degene die is overgeslagen: opraken is nooit stil. Een site die met een eigen limiet antwoordt, of ons vraagt te vertragen, wordt een uur opzijgezet.

Waar je sleutel heen gaat. Alleen naar de indexer waar hij bij hoort. Sleutels blijven op deze machine, gaan nooit naar de browser - elke resultaatregel draagt in plaats van een link een bon die een half uur geldig is - en worden uit het log gehaald en uit elke fout die de site teruggeeft, zodat een geplakte foutmelding er geen kan lekken. Een download kan alleen een link ophalen die een van je eigen zoekopdrachten teruggaf.

Dit zijn dezelfde accounts waarop een nzblnk-link terugvalt als de lokale index zijn header niet kent, en die de watchlist over gewenste items kan bevragen (§10).

nzblnk-links

Sommige boards, vooral Duitse en Nederlandse, publiceren een nzblnk:-link in plaats van een NZB-bestand. De post is versluierd, dus er is geen bestandsnaam om naar te linken. De link draagt in plaats daarvan een header, h=, die een zoeksleutel is en geen locatie, plus een optionele titel t=, wachtwoord p= en groep g=. Iemand moet de post eerst gaan vinden.

nzbfast zoekt de header eerst op in zijn eigen index, waarvoor helemaal geen netwerk nodig is, en pas als dat misgaat vraagt het de zoekindexers die je hebt ingesteld (Instellingen → Zoeken op indexers, §9), onder dezelfde dagbudgetten en dezelfde terugval als elke andere zoekopdracht. De titel wordt de klusnaam en het wachtwoord wordt automatisch aan de klus meegegeven.

6 · De posterwall

Klik op 🎬 wall in de kopbalk. De wall maakt van je index een mediabrowser: elke herkende film- en tv-release als postertegel met beoordeling, jaar, genres, cast en synopsis - je nieuwsgroepen, doorbladerbaar als catalogus.

7 · Voorvertoning & verificatie

Je hoeft niet te wachten tot een download klaar is om te weten dat het het juiste bestand is. Open het terwijl het downloadt, controleer of inhoud, taal en kwaliteit zijn wat je verwachtte, en breek vroeg af als dat niet zo is - in plaats van het pas na de volledige download te ontdekken.

De eerste helft daarvan staat al op de pagina. Open de regel van een download in de wachtrij (of in de geschiedenis) en de lade toont wat er in het videobestand zit, gelezen uit de bytes die tot nu toe zijn binnengekomen: resolutie, video- en audiocodecs, audiotalen, ondertitels, hoofdstukken. Een release die de verkeerde versie, de verkeerde taal of een upscale is, verraadt zichzelf in dat paneel lang voordat de download klaar is.

De pagina zoekt ook uit of deze browser het bestand kan afspelen, en zegt dat in plaats van te gokken: browsers verschillen (Safari decodeert HEVC waar Chrome dat niet doet, en vrijwel geen enkele decodeert AC-3- of DTS-audio), dus de vraag wordt gesteld aan de browser waar je daadwerkelijk in zit. Is het antwoord ja, dan opent ▶ Afspelen een speler direct op de pagina, die het bestand toont terwijl het downloadt. De meeste releases zijn MKV, dat veel browsers weigeren te openen terwijl ze alles erin wel kunnen decoderen, dus verpakt nzbfast die opnieuw tijdens het afspelen. Er wordt niets opnieuw gecodeerd: beeld en geluid zijn de oorspronkelijke bytes in een andere verpakking, en verspringen in het bestand werkt gewoon. Is het geluidsspoor er een die deze browser niet kan decoderen en draagt de release een tweede die hij wel aankan, dan speelt dat tweede spoor, zodat het beeld niet stil binnenkomt. Pas als de browser de decoder voor de video zelf mist, geeft de knop het bestand aan je eigen mediaspeler, zoals hieronder beschreven.

Eén instelling regelt dit allemaal: Instellingen → Interface → Een bestand controleren terwijl het downloadt. Alleen details, de standaard, toont het paneel en biedt geen speler op de pagina; Details en een speler voegt de speler toe; Uit zorgt dat het bestand helemaal niet wordt gelezen - staat dit uit, dan opent niets voor wie dan ook een half gedownload bestand.

Om in plaats daarvan in je eigen mediaspeler te controleren:

Over spelersVLC, IINA, mpv en Infuse openen allemaal /stream-URL's. Om vanaf een andere machine te controleren, gebruik het LAN-adres van je machine in plaats van localhost.
Over authenticatieMet een ingestelde API-sleutel vereist het openen van een geparkeerd bibliotheekitem via /stream/<id> een taakgebonden token (?t=…) - spelers kunnen geen API-sleutels meesturen, dus de /m3u-handoff en de .strm-pointer bedden hem voor je in; het uitgeven ervan (/m3u) vereist de sleutel. Het gewone byte-serveren van een al actieve download blijft open, en installaties zonder sleutel gedragen zich als vanouds.

8 · Usenet-servers

Instellingen → Usenet-servers is de volledige editor: toevoegen, bewerken, verwijderen, herordenen en elke server in of uit de pool halen. Elke server heeft:

VeldToelichting
Host / poortGebruik SSL-poort 563. TLS kost niets meetbaars - nzbfast versleutelt altijd.
Gebruikersnaam / wachtwoordLokaal opgeslagen in config.local.json, nooit terug naar de browser gestuurd. Laat je het wachtwoord bij bewerken leeg, dan blijft het opgeslagen wachtwoord staan. Wachtwoorden zijn op schijf versluierd, niet versleuteld.
VerbindingenGelijktijdige verbindingen per server. Gebruik Verbindingstuning (§13) om de sweet spot van elke provider te vinden in plaats van hoog te gokken.
Niveau (tier)0 = primair; hogere niveaus zijn fill-servers, die alleen artikelen gevraagd worden die elk lager niveau miste. Zet onbeperkte accounts op 0, blokaccounts op 1+.
Blokgrootte (GB)Voor blokaccounts (betalen per GB): nzbfast houdt hiertegen het totale verbruik bij en stopt met de server zodra het blok op is (waarschuwing bij 85%).
Elke byte wordt betaaldZet dit aan voor een account met betaling per volume. Je downloads gebruiken de server precies zoals eerst; wat stopt is verkeer dat nzbfast uit zichzelf zou sturen - de automatische verbindingstuner, de netwerkstap van de systeembenchmark en de header-scans voor de ingebouwde index slaan hem allemaal over. Onafhankelijk van het niveau en van de blokgrootte, want een account met betaling per volume kan je enige provider zijn en een onbeperkt account kan op niveau 2 staan. Standaard uit. De handmatige Test in Verbindingstuning (§13) werkt nog steeds op een zo gemarkeerde server en vraagt eerst, want daar kies jij ervoor om te besteden.

Laat wat ruimte onder de verbindingslimiet van je account. De verbindingen net onder de limiet zetten kost niets: de doorvoer vlakt al ruim voor de laatste een of twee verbindingen af, en Verbindingstuning (§13) komt er toch al onder uit. Die vrije plekken zijn wat een tweede apparaat, een ander programma of een nieuwe poging na een verbroken socket er nog door laat, in plaats van geweigerd te worden terwijl deze elke plek bezet houdt.

Je hoeft de limiet op open bestanden van je machine niet te beheren. Het systeem telt elke verbinding als een open bestand, en macOS start een programma met een limiet van 256 daarvan, wat een volledige set verbindingen over meerdere servers kan overschrijden. Op macOS en Linux tilt nzbfast die limiet bij het starten zelf op: het vraagt om 65536 open bestanden en zakt via 16384, 4096 en 1024 tot het systeem akkoord gaat, nooit boven de harde limiet die het systeem stelt, en het gaat verder met de limiet die het had als elke stap wordt geweigerd. Windows kent geen limiet van dit soort per proces. Andere programma's houden het bij de limiet die de shell ze meegaf, en een programma dat halverwege een taak zonder open bestanden komt te zitten kan stoppen zonder in zijn log te zeggen waarom. Stel de verbindingen per server dus in op wat je abonnement toestaat, minus de ruimte hierboven, en niet op wat je denkt dat de machine aankan.

Hoe je providerwachtwoorden worden bewaard

Providerwachtwoorden in config.local.json zijn versluierd, niet versleuteld. Ze worden opgeslagen als obf1: gevolgd door een gecodeerde vorm, zodat het bestand niet als platte tekst leest als het opduikt in een schermafbeelding, een forumbericht, een bugrapport of op een scherm dat iemand anders kan zien.

Wees duidelijk over wat dat je wel en niet oplevert:

Ter vergelijking: NZBGet en SABnzbd bewaren providerwachtwoorden allebei als leesbare platte tekst in hun configuratiebestanden. Wij vinden versluiering daar een kleine verbetering op, geen beveiligingsfunctie.

Waarom niet de systeemsleutelbos? macOS Keychain, Windows Credential Manager en de Linux secret services zouden echte bescherming geven, en misschien komen we er nog op terug. Twee dingen houden ons vandaag tegen. Toegang tot de sleutelbos hangt aan de identiteit van de applicatie, en nzbfast is nog niet ondertekend, dus de prompts en het gedrag na elke update zijn slecht. En een groot deel van de installaties is Docker, servers zonder scherm en NAS-apparaten waar helemaal geen sleutelbos bestaat, wat twee verschillende opslagpaden zou opleveren die correct moeten blijven. Eén goed begrepen formaat dat zich overal hetzelfde gedraagt is voorlopig de betere ruil.

Twee andere opties per server hebben nog geen bediening in het dashboard: zet ze met de hand bij de vermelding van die server in config.local.json (zie §17) en herstart.

SleutelOpmerkingen
bind_ipBindt de uitgaande verbindingen van deze server aan een specifiek lokaal adres, voor machines met meerdere uitgangen en VPN-splittunnels. De adresfamilie kiest meteen de doelfamilie: een v4-binding verbindt met het v4-adres van de server.
socks5Stuurt het NNTP-verkeer van deze server via een SOCKS5-proxy: host:port, of user:pass@host:port. De hostnaam wordt door de proxy opgezocht, dus geen lokaal DNS-lek.
AanbevelingTwee providers op verschillende backbones verslaan drie op dezelfde. Draai Serverdiversiteit (§13) om te zien welke van je providers je dekking echt diversifiëren en welke redundante kopieën van elkaar zijn.

9 · Instellingen-naslag

Bijna alles is instelbaar vanuit het dashboard, onder ⚙ Instellingen; de vier uitzonderingen staan aan het eind van deze sectie. Waarden met live gelden meteen; restart-waarden bij de volgende start. Elke wijziging hier wordt bewaard in settings.json en overleeft herstarts (waarden uit de interface winnen van opties op de opdrachtregel).

Snelheid & planning live

InstellingWat het doet
SnelheidslimietLimiet in bytes/sec (50M, 1G, 0 = onbeperkt). Remote-apps kunnen percentages sturen - stel Lijnsnelheid in zodat die goed vertaald worden.
AutosnelheidRTT-gestuurde limiet die wijkt voor ander thuisverkeer en weer oprekt zodra de lijn stil is.
Trage downloads automatisch uitstellenEen taak die vastzit op één trage server terwijl andere wachten gaat naar achteren in de wachtrij (voortgang blijft bewaard). Zie §13.
Prefetch op inactieve serversServers die de actieve taak niets opleveren beginnen alvast aan de volgende in de wachtrij. Zie §13.
Auto-update / Update-check-URLZie §14.
LijnsnelheidDe nominale snelheid van je verbinding - maakt procentuele limieten vanuit SABnzbd-compatibele apps mogelijk.
WeekschemaRijeneditor voor regels per moment van de week: pauzeren, hervatten of een snelheidslimiet instellen op bepaalde dagen/tijden (lokale tijd). Bijv. door de week van 9–17 uur begrensd op 20 MB/s, daarbuiten onbeperkt.

Volgende download live

Verbindingen (per server), venster (pipelining-diepte per verbinding), decoders (parallelle decodeerthreads). Wordt bij de start van elke taak uitgelezen. De standaardwaarden zijn goed voor de meeste lijnen; gebruik de tuningtools voordat je blind verhoogt.

Controle tijdens het downloaden kiest hoeveel er wordt gecontroleerd terwijl de gegevens binnenkomen. Volledig bevestigt elk PAR2-blok met MD5. Snel (de standaard) claimt blokken via CRC32, wat 2-3x sneller is op een trage CPU, en controleert nog steeds de eigen controlesom van elk artikel. Zuinig slaat die artikelcontrolesommen ook over zodra PAR2 een bestand dekt: schade komt dan een moment later boven, bij het blok. In alle drie gebruiken de afsluitende ronde en elke reparatie volledige MD5, en een download zonder PAR2-bestanden houdt zijn artikelcontrolesommen.

Schijf & quotum live

Minimale vrije ruimte (pauzeer nieuwe taken eronder; standaard 2 GB, 0 schakelt het uit), downloadquotum per dag of maand (UTC; taken met Geforceerd negeren het), geheugenlimiet - het RAM-budget van de engine (standaard: ¼ van het RAM, begrensd; verhoog hem op een machine met veel RAM voor maximale snelheid bij enorme taken, en zie wat weinig geheugen kost voordat je hem verlaagt) herstart.

Voltooide verplaatsen naar: na uitpakken, opschonen en hernoemen verhuizen voltooide downloads hierheen - een NAS-share, een mediaschijf, waar je bibliotheek ook staat. De categorie-indeling blijft behouden (een taak die onder tv/ klaar was, belandt op de bestemming onder tv/), en de geschiedenis verhuist mee, zodat gekoppelde apps op de nieuwe locatie importeren en verwijderen. Is de bestemming onbereikbaar wanneer een taak klaar is (share offline, schijf vol), dan blijven de bestanden in de downloadmap en wordt de taak toch gewoon afgerond. Leeg = uit. Bestemmingen per categorie sturen specifieke categorieën ergens anders heen (tv=/Volumes/NAS/TV, movies=/Volumes/NAS/Movies); elk vermeld pad is de map van die categorie, er wordt dus geen extra categoriesubmap in aangemaakt. Niet-vermelde categorieën volgen Voltooide verplaatsen naar.

Diepte van geneste archieven (standaard 5) is hoeveel lagen archief-in-archief automatisch worden uitgepakt: een RAR-set met daarin een 7z met daarin weer een RAR is normaal op Usenet, en nzbfast volgt de keten zonder tweede ronde. Op de grens blijft het diepste archief gewoon liggen, niet verder uitgepakt, en de download wordt toch voltooid. Verhoog dit alleen voor ongewoon diepe releases.

Automatisch hernoemen & opschonen live

Voltooide downloads hernoemen (standaard aan) geeft de map en het hoofdbestand een schone, informatieve naam: een film wordt Example Movie (2024), series houden Show - S01E02. Versluierde of niet-herkende namen blijven precies zoals ze gepost zijn in plaats van geraden te worden.

InstellingWat het doet
Resolutie opnemenZet 1080p, 2160p… in de naam. Standaard aan; de andere vier labels staan uit.
Videocodec opnemenx265, x264, AV1
Audiocodec opnemenAtmos, DTS-HD, AC3
Bron opnemenBluRay, WEB, REMUX
Releasegroep opnemenHet label -GROUP aan het eind.
Junkbestanden verwijderenStandaard aan. Verwijdert achtergebleven .par2, .nzb, .sfv, .nfo en samplefragmenten uit voltooide film- en seriemappen. Nooit de video of de ondertitels.
Alleen het mediabestand bewarenStandaard uit, en destructief: verwijdert permanent alles in de map behalve de video('s) en de ondertitels. Elke aflevering van een seizoenspakket blijft staan. Gaat vóór Junkbestanden verwijderen als beide aan staan.
Downloads vernoemen naar het .nzb-bestandStandaard uit. De voltooide map en het hoofdbestand krijgen de naam van het .nzb-bestand, in plaats van de opgeruimde naam die uit de release is afgeleid. Alleen het grootste bestand wordt hernoemd: de rest van een afleveringenpakket, de sample, de ondertitels en de .nfo houden de namen waarmee ze binnenkwamen. Elke categorie kan het voor zichzelf toestaan of verbieden onder Je categorieën, en zo krijg je het voor het ene soort download wel en het andere niet.
Keep the other words in the nameStandaard aan. Sport, races en andere evenementen zijn vaak één titel die het hele seizoen wordt herhaald, met maar een woord of twee verschil - "Round11 Hungary Race" tegenover "Round11 Hungary Qualifying". Die woorden bewaren is wat voorkomt dat een heel seizoen tot dezelfde naam samenvalt. Geldt alleen waar de naam niet op een andere manier opgeruimd kon worden, dus gewone films en afleveringen blijven ongemoeid.

De hele groep draait na reparatie en uitpakken en vóór Voltooide verplaatsen naar, en wordt volledig overgeslagen bij een taak die nog op een wachtwoord wacht. Beide verwijderstappen gelden alleen voor releases die als film of serie zijn herkend: een softwarepayload of een niet te classificeren (versluierde) set wordt nooit opgeruimd.

Verwijderde bestanden gaan naar de Prullenbak bepaalt wat "verwijderen" hierboven betekent. Staat het aan, dan verplaatst het opruimen bestanden naar de Prullenbak van het systeem, zodat een verkeerde inschatting van wat rommel was ongedaan te maken is; staat het uit, dan worden ze definitief verwijderd. Het staat standaard aan op macOS en Windows, waar de Prullenbak een plek is die je kunt zien en legen, en standaard uit op Linux, waar dat meestal niet zo is.

Op een NAS of in een container: laat dit uit. Wanneer je downloads op een andere schijf staan dan je thuismap - de normale opstelling op Unraid, Synology, een seedbox of elke Docker-installatie met een gekoppelde share - gebruiken de Linux-prullenbakregels helemaal geen bureaublad-Prullenbak. Ze maken een verborgen map .Trash-1000 aan (het getal is je gebruikers-id) bovenaan de downloadschijf en verplaatsen de bestanden daarheen. Niets laat je die map zien, niets leegt hem, en de ruimte die hij vasthoudt komt nooit terug.

Heb je een eerdere versie van nzbfast op Linux met deze optie aan gedraaid, zoek die map dan in de root van je downloadshare. Je kunt hem veilig legen: alles erin is een bestand waarvan het opruimen al had besloten dat je het niet wilde. nzbfast leegt hem niet voor je, want hij staat op jouw schijf en het oordeel is aan jou.

Mappen & nabewerking

Downloadmap herstart, watchmap, nabewerkingsscript (draait na elke taak met SABnzbd-compatibele argumenten en SAB_*-omgeving - bestaande SAB-scripts werken ongewijzigd), opruimextensies (rommelbestanden die na voltooiing worden verwijderd), Slimme mappen en tv-opbergen (zie §10).

.nzb-bestanden na oppakken bewaren (staat standaard uit) laat het originele .nzb-bestand in de watchmap staan nadat de taak in de wachtrij is gezet, in plaats van het naar de prullenbak te verplaatsen - voor verzamelaars, en om het bestand aan iemand te geven als een download misgaat. Een bewaard bestand wordt onthouden, ook na een herstart, en wordt niet opnieuw toegevoegd; sla het opnieuw op om het nogmaals te downloaden. Wat je ook kiest, de lade van elke taak heeft een knop Download de .nzb, zodat een kopie van de .nzb van elke taak nooit meer dan één klik weg is.

Zoeken op indexers live

Je accounts bij NZB-indexersites, één regel per stuk, zodat een zoekopdracht op de wall ze ook kan bevragen. Wat de functie doet, en hoe je ermee zoekt, staat in §5.

VeldWat het doet
NaamEen etiket van je keuze, en de identiteit waaronder de dagtellers en limieten worden bijgehouden. Een regel hernoemen begint een nieuwe regel, dus voer de sleutel opnieuw in.
API-adresHet API-adres van de site. Het gewone webadres volstaat; een Prowlarr- of NZBHydra2-regel ziet eruit als http://host:9696/1/api.
API-sleutelVan je accountpagina op die site. Blijft op deze machine, gaat alleen naar de site waar hij bij hoort, wordt nooit meer getoond en nooit in het log geschreven. Leeg houdt de opgeslagen sleutel.
Zoekopdrachten per dagHoeveel zoekopdrachten dit account per dag mag uitgeven. 0 = onbeperkt, en de standaard.
Downloads per dagHoeveel grabs het per dag mag uitgeven. 0 = onbeperkt. Beide tellers beginnen om middernacht UTC opnieuw.
aan, Testenaan is wat een regel doorzoekbaar maakt; haal het vinkje weg om een account te bewaren zonder het te gebruiken. Testen vraagt de site wat hij ondersteunt en toont het antwoord, of de fout, ter plekke.

Indexeren live

De ingebouwde indexer staat standaard uit. Hij vindt posts die onder een echte bestandsnaam zijn geplaatst, en een groot en groeiend deel van Usenet wordt bewust zonder zo'n naam geplaatst: willekeurig onderwerp, willekeurige bestandsnamen erin, gedumpt in een verzamelgroep. De echte naam leeft alleen in een NZB die de uploader elders publiceert, dus hij stond nooit op Usenet waar een scanner hem kon lezen. Gemeten op onze eigen index leverden 14,8 miljoen gescande posts ongeveer 31.000 doorzoekbare releases op, grofweg één op de vijfhonderd. Blijf commerciële indexers gebruiken en voeg ze toe onder Instellingen → Zoeken op indexers, zodat je ze vanaf de wall kunt doorzoeken. Zet dit aan als je specifieke groepen volgt waar mensen nog onder echte namen posten, of als je wilt zien wat je provider werkelijk draagt. Met de schakelaar uit wordt er niets gescand of opgehaald en wordt er geen database aangemaakt; Index doorzoeken en de newznab-feed verdwijnen, de wall wordt een gewone zoekpagina voor de indexer-accounts die je hebt toegevoegd, en de watchlist werkt op die accounts.
InstellingWat het doet
Ingebouwde indexerDe hoofdschakelaar, uit tenzij je hem aanzet. Uit betekent geen scannen, geen metadata-opvragingen, geen beschikbaarheidssteekproeven en geen newznab-feed; een index die al op schijf staat blijft bewaard (er is een verwijderknop), dus weer aanzetten hervat in plaats van opnieuw te scannen.
GroepenNieuwsgroepen die de ingebouwde indexer scant (bijv. alt.binaries.teevee).
ScanintervalSeconden tussen rondes (standaard 900).
Backfill-artikelenHeaders die bij de allereerste scan van een groep worden opgehaald.
Verdiepen per scanElke ronde indexeert ook dit aantal oudere artikelen, zodat je doorzoekbare geschiedenis op de achtergrond groeit tot Max leeftijd is bereikt (standaard 200.000 per ronde ≈ tientallen miljoenen artikelen per dag uptime).
Max leeftijdNegeer posts ouder dan dit (90d, 6m, 2y) - begrenst indexgrootte en scantijd.
Trimmen tot het leeftijdsvensterStandaard aan. Verwijdert ook al opgeslagen releases zodra ze ouder worden dan Max leeftijd, zodat de index ongeveer dat venster houdt in plaats van eindeloos te groeien. Uit = alleen nieuwe posts worden gefilterd en wat opgeslagen is blijft. Dode junkfragmenten (verborgen, na een week nog onvolledig) worden hoe dan ook opgeruimd.
Ingest-filtersJSON-regels die filteren wat de index in gaat: soorten (geobfusceerde rommel wordt standaard genegeerd), jaar/resolutie/taal, grootte-grenzen.
Nu scannen / diepe rescanVoer direct een ronde uit; met een diepte worden zoveel recente headers opnieuw gescand.
OMDb-sleutel / metadata verversen / wissenBediening van de wall-verrijking (§6). Wissen bouwt de database vanaf nul opnieuw op - de reddingsboei als hij ooit corrupt raakt.
Pre-feedUit tot je hem aanzet. Veel uploads worden zonder hun naam geplaatst, en een scan heeft dan niets te lezen. Publieke relaykanalen kondigen de echte naam aan, de enige open weg om die berichten te koppelen. Aanzetten houdt een verbinding met een IRC-netwerk open en luistert: er wordt nooit iets verstuurd en er wordt geen account aangemaakt. Vereist de indexer, want een feed zonder plek voor wat hij hoort is een socket die voor niets openstaat.
Relayserver, RelaykanalenHet IRC-netwerk dat de aankondigingen draagt (host of host:poort) en de kanalen om mee te luisteren, door komma's gescheiden. Een wijziging gaat in bij de volgende verbinding: zet de feed uit en weer aan om hem meteen toe te passen.
Benoemen via correlatieDe publieke live-relays dragen geen bestandsnamen, dus de meeste versluierde berichten laten zich niet direct koppelen. Wat een aankondiging wel vastlegt, is wanneer een release verscheen en hoe groot die is. Dit vergelijkt aangekondigde tijd en grootte met naamloze berichten en stelt bij een passende match de echte naam voor in Bladeren. Een suggestie is als zodanig gemarkeerd, vraagt om je klik en hernoemt nooit bestanden op schijf.
Sterke overeenkomsten automatisch toepassenStandaard uit, en streng als hij aanstaat: de grootte moet nauw kloppen, geen andere aankondiging mag bijna even goed passen, en de aankondiging moet dit bericht bij de omgekeerde controle terugkiezen. Een toegepaste naam verandert alleen de weergave, is gemarkeerd als afgeleid en verdwijnt vanzelf als een voltooide download hem weerlegt. Al het zwakkere blijft een suggestie.
AankondigingsgeschiedenisDe live-feed hoort alleen aankondigingen van na het aanzetten. Dit haalt ongeveer zes maanden aan eerdere aankondigingen op uit een publieke pre-database, netjes en eenmalig, zodat ook al geïndexeerde berichten gekoppeld kunnen worden. Draait een half uur of zo op de achtergrond.

Bibliotheek, Beveiliging, Interface

Bibliotheek: categorieën die als directe bibliotheekitems worden behandeld + het hercontrole-interval. Beveiliging: de volledige API-sleutel (alles) en de NZB-sleutel (alleen toevoegen - veilig om aan indexersites te geven), beide live te roteren. Elk van beide vakjes vervangt de sleutel waar het bij hoort zodra je het veld verlaat, en een leeg gelaten vakje houdt de sleutel die het al heeft. De API-sleutel heeft daarnaast Show, dat de huidige sleutel toont en kopieert zodat je hem in Sonarr, Radarr of NZB360 kunt plakken wanneer het je uitkomt, en Create new, dat een vervanger aanmaakt - de oude sleutel werkt onmiddellijk niet meer, dus alles wat al verbonden is moet de nieuwe krijgen. Beide zijn afhankelijk van de API-sleutel zelf: de NZB-sleutel voor alleen toevoegen kan hem niet lezen, en dat is precies het punt van die sleutel. Waar de sleutel bij een nieuwe installatie vandaan komt, zie §2. Interface: klikgeluiden, bureaubladmeldingen bij voltooiing, provider-hersorteerinterval.

Snelheidseenheden live bepaalt hoe elke snelheid in het dashboard wordt getoond: megabytes (MB/s, de norm bij downloadmanagers, de standaard) of megabits (Mb/s, zoals providers lijnen opgeven). Bestandsgroottes blijven in bytes. Dit is een eigenschap van de daemon, niet van je browser, dus het geldt voor elk apparaat dat naar deze installatie kijkt.

Geavanceerd: de knoppen achter de voor de hand liggende

Zes instellingen zonder optie op de opdrachtregel. Elk heeft nu een geavanceerde regel op de instellingenkaart waar hij bij hoort, en blijft via de API te zetten (§16), bijv. /api?mode=config&name=verify_mode&value=lean&apikey=…. Net als alle andere worden ze bewaard in settings.json.

NaamWat het doet
verify_modefull | fast | lean (standaard fast). lean is de duw voor trage CPU's: als fast, maar slaat daarnaast de yEnc-CRC per artikel over zodra PAR2 een bestand dekt, wat één CRC32-laag oplevert in plaats van twee. Downloads zonder PAR2 houden hun artikel-CRC's, en de verificatie en reparatie aan het eind van de taak veranderen in geen geval. De keuze Controle tijdens het downloaden hierboven is deze instelling.
auto_retry_minsWachttijd vóór de ene automatische nieuwe poging die een eerste mislukking met ontbrekende artikelen krijgt (standaard 20). Propagatievertraging is een echte oorzaak van ontbrekende artikelen en lost zichzelf op; dankzij het journaal haalt de herhaling alleen op wat nog ontbreekt. Mislukkingen door wachtwoord of takedown komen nooit in aanmerking.
index_scan_parHoeveel groepen de indexeerder parallel scant (standaard 3, begrensd op 1-8).
oracle_sampleSTAT-budget in rust van het beschikbaarheidsorakel (§13), peilingen per uur per server. Standaard 300, maximaal 3600, 0 schakelt het bemonsteren helemaal uit.
predb_max_rowsHoeveel pre-aankondigingen de feedtabel bewaart (standaard 250000, begrensd op 10000-5000000). De uurlijkse opschoning snoeit tot dat aantal en de historische import weigert te starten zodra hij eroverheen zou gaan, zodat een import nooit rijen toevoegt die de volgende opschoning wist.
predb_seed_daysHoe ver terug een historische import reikt als hij zonder eigen venster wordt gestart (standaard 180 dagen, maximaal 366). Een groter venster betekent meer verzoeken aan de pre-bron, die op één per twee seconden loopt.

10 · Automatisering

Watchlist

De simpelste automatisering: voeg op het dashboard een titel toe, stel kwaliteitsvoorkeuren in, klaar. Nieuwe releases worden opgehaald zodra ze in je geïndexeerde groepen verschijnen; versies van betere kwaliteit upgraden eerdere grabs; een kalender laat zien wat eraan komt.

Een lijstbron voedt de watchlist vanuit een lijst die je in Plex bijhoudt, op een van twee manieren: koppel je Plex-account door een korte code goed te keuren op de pagina van Plex, of plak een Plex-watchlistadres. Het adres is een toegangssleutel - wie het heeft mag de lijst lezen - en daarom wordt het na het opslaan gemaskeerd. Het synchroniseren van verwijderingen verschilt bewust per modus: een gekoppeld account ziet de hele lijst, dus een daar verwijderde titel wordt hier niet langer gevolgd (al voltooide downloads blijven staan); een adresfeed bevat alleen de meest recente items, dus afwezigheid bewijst niets en titels worden alleen toegevoegd. Beide standaardinstellingen zijn per bron aan te passen.

Zoek ook op mijn indexer-accounts naar gewenste items, onderaan de watchlist-kaart, laat die naast je eigen index ook de accounts uit Instellingen → Zoeken op indexers bevragen (§5). Het begint uit, want het is het enige hier dat een afgerekend account uitgeeft zonder dat jij klikt. Aan vraagt elk gevolgd item ongeveer twee keer per dag, en alleen naar wat het nog niet gevonden heeft, onder dezelfde daglimieten en met dezelfde meldingen als een account wordt overgeslagen. Een kandidaat van een indexer wordt precies als een lokale beoordeeld, dus kwaliteitsdrempels, upgrades, seizoenpakketten en dubbelbehandeling gelden allemaal gewoon, en een lokale kopie wint elk gelijkspel omdat die geen tegoed kost. Met de ingebouwde indexer uit is dit wat de watchlist überhaupt iets geeft om mee te werken.

RSS-feeds

Instellingen → RSS: elke newznab/indexer-RSS-URL met per feed een interval, een categorie en filterregels (titelpatronen, grootte-grenzen). Passende items worden automatisch gedownload.

Slimme mappen

Regels die worden geëvalueerd zodra een taak wordt toegevoegd: match op patroon/trefwoorden en grootte, wijs een categorie toe (de eerste match wint). Met tv-opbergen aan worden voltooide tv-afleveringen hernoemd en opgeborgen als Show/Season 01/Show - S01E02.mkv - klaar voor Plex/Jellyfin zonder externe tool.

Planner

Het weekschema (zie §9) automatiseert pauzeren/hervatten/snelheid op tijdstip.

Scripts

Een nabewerkingsscript krijgt SABnzbd's positionele argumenten en SAB_*-omgevingsvariabelen - het grote ecosysteem aan SAB-scripts draait ongewijzigd. NZBGet's dialect wordt ernaast geleverd - NZBPP_*-variabelen (DIRECTORY, NZBNAME, CATEGORY, TOTALSTATUS, PARSTATUS, UNPACKSTATUS, FINALDIR) en de exitcodes 93/94/95 - zodat ook de kernlogica van een NZBGet-extensiescript draait. De koppeling is eerlijk in plaats van een emulatie: repareren en uitpakken gebeuren binnen de one-pass-download, dus een schone voltooiing meldt PARSTATUS=0 en een gerepareerde PARSTATUS=2. Optievormen per script (NZBPO_*) worden niet geleverd. Een script mag bij het afsluiten een helper op de achtergrond laten doorlopen en nzbfast zal die niet stoppen, maar nzbfast stopt wel met het lezen van de uitvoer van het script op het moment dat het script zelf klaar is: geef een helper op de achtergrond zijn eigen uitvoeromleiding, anders wordt hij gestopt zodra hij voor het eerst iets probeert te printen.

Pre-queue-script

Een tweede haak draait voordat een download de wachtrij ingaat (Instellingen → Mappen → Pre-queue-script), met SABnzbd's pre-queue-contract: argumenten name, pp, category, script, priority, size, group plus de SAB_*-omgeving. De eerste regel van zijn uitvoer accepteert (1) of weigert (0) de download; regels 2 tot 7 kunnen hem hernoemen, pp instellen, de categorie wijzigen, een script kiezen of de prioriteit wijzigen (lege regels houden de standaard). Een geweigerde download gaat als Mislukt met de reden naar de geschiedenis, en Opnieuw proberen vanuit de geschiedenis haalt hem terug zonder het script opnieuw te vragen. De haak kan nooit een download kwijtraken: als het script ontbreekt, crasht, zijn tijdsbudget overschrijdt of iets print dat geen oordeel is, gaat het toevoegen onaangeroerd door en zegt het log waarom.

Levenscyclus-events en ondertekende webhooks

Elke mijlpaal van een taak is een geversioneerd event: job.added, job.started, job.finishing, job.repaired, job.completed, job.failed, plus queue.idle, giveup.tripped, disk.low, storage.slow en quota.reached. Elk draagt schema_version (nu 1; nieuwe sleutels kunnen verschijnen zonder ophoging - negeer wat je niet kent), een monotone seq en een at-tijdstempel in milliseconden.

Om ze te ontvangen voeg je een webhook-notificatiedoel toe (Instellingen → Automatisering) en zet je in het events-veld de event-soorten die het moet krijgen - exacte soorten, of een prefix als job.*. Het doel krijgt dan één POST per event: de event-JSON als body plus een delivery-id (<boot>-<seq>, het handvat om op te ontdubbelen), de headers X-NzbFast-Event en X-NzbFast-Delivery, en - wanneer het doel een ondertekengeheim heeft - X-NzbFast-Signature: sha256=<hex>, een HMAC-SHA256 van de exacte body-bytes onder jouw geheim (dezelfde vorm die GitHub-webhooks gebruiken). Verifiëren in Python:

expected = "sha256=" + hmac.new(secret, body, hashlib.sha256).hexdigest()
ok = hmac.compare_digest(expected, request.headers["X-NzbFast-Signature"])

Bezorging is minstens-één-keer: een doel dat niet bereikbaar is wordt opnieuw geprobeerd na 10 s, 60 s en 5 min, en daarna losgelaten, met de mislukking zichtbaar op de instellingenregel van het doel. Een HTTP-foutantwoord (404, 401...) wordt niet opnieuw geprobeerd - repareer de ontvanger en gebruik Test. Elk doel heeft zijn eigen bezorgbaan, dus een doel dat traag of onbereikbaar is houdt nooit een ander op; binnen een baan houden bezorgingen de volgorde waarin de events gebeurden, en wordt er een losgelaten, dan tonen de volgnummers het gat. De klassieke event-woorden (completed, failed, repaired, disk, quota) houden op hetzelfde doel hun betekenis voor menselijke notificaties.

11 · Sonarr, Radarr & co

nzbfast spreekt de SABnzbd-API native, dus elke *arr werkt out of the box - en hij kan ook als hun indexer optreden.

Als downloadclient

  1. In Sonarr/Radarr: Settings → Download Clients → voeg SABnzbd toe.
  2. Host: je nzbfast-machine · Poort: 6789 · API-sleutel: je volledige API-sleutel (waar je hem vindt: §2).
  3. Categorie naar wens (bijv. tv / movies). Test → groen vinkje → Save.

Het dashboard reikt je het adres aan: op een installatie die nog niets heeft gedownload toont de route "Laat Sonarr, Radarr of een app downloads toevoegen" van de welkomstkaart het exacte adres met een Kopiëren-knop ernaast. De API-sleutel staat bewust niet op die regel; die blijft achter zijn eigen onthulknop in Instellingen → Beveiliging (§2).

Wachtrij, geschiedenis, status per taak, "verwijderen & wissen", opnieuw proberen en categorierouting gedragen zich allemaal zoals de *arrs verwachten.

Als indexer (newznab)

  1. Settings → Indexers → voeg Newznab toe.
  2. URL: http://<host>:6789/ · API-pad: /api · sleutel: je API-sleutel.
  3. nzbfast beantwoordt caps-, search-, tvsearch- en movie-queries uit zijn eigen index van je gescande groepen, en /getnzb/<id> levert de NZB terug.
Zet eerst de ingebouwde indexer aan (Instellingen → Indexeren). Hij staat standaard uit, en zolang dat zo is beantwoordt deze façade elke query met <error code="101"> in plaats van met een leeg resultaat, zodat een fout opvalt op het moment dat je de indexer toevoegt en niet pas weken later.

Waarom zou je? Een zelfgehoste indexer van precies de groepen waar je om geeft: geen accounts, geen API-limieten, retentie zo diep als je hem laat scannen. Het is een aanvulling op je gebruikelijke indexers en geen vervanging, want hij vindt alleen wat onder een echte bestandsnaam is geplaatst.

12 · Telefoon & remote-apps

nzbfast implementeert beide grote afstandsbedieningsprotocollen, dus vrijwel elke mobiele/tablet-app werkt. Kies het protocol dat jouw app ondersteunt:

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

Veld in de appWaarde
TypeNZBGet
Host / poortje machine : 6789
Gebruikersnaammaakt niet uit (bijv. nzbfast)
Wachtwoordje API-sleutel

Het volledige JSON-RPC-oppervlak dat deze apps gebruiken wordt geserveerd: status, wachtrij met herordenen/pauzeren/verwijderen, geschiedenis, NZB toevoegen, snelheidslimiet, pauzeren/hervatten, log.

Apps die SABnzbd spreken

Veld in de appWaarde
TypeSABnzbd
Host / poortje machine : 6789
API-sleutelje API-sleutel (of de NZB-sleutel voor alleen-toevoegen-toegang)

Het dashboard op je telefoon

Open gewoon http://<machine>:6789 in een mobiele browser - het hele dashboard en de wall hebben een touch-lay-out. Het paneel Instellingen → Externe toegang toont de exacte URL's en een QR-code om te scannen.

nzbfast van buitenaf bereiken

Er is geen inlogpagina, en dat is een bewuste keuze. Inloggen met een sessiecookie is een beveiligingsoppervlak dat je voor altijd moet onderhouden, en het zou nog steeds het zwakste slot zijn op alles wat aan het open internet hangt. nzbfast authenticeert in plaats daarvan met je API-sleutel, en accepteert die sleutel zowel in een request-header als in de URL (X-Api-Key, of Authorization: Bearer) - en juist dat laat iets ervoor de aanmelding netjes afhandelen.

Het eenvoudigst is om helemaal niets te publiceren. Installeer Tailscale op deze machine en op je telefoon: beide zitten dan in één privénetwerk, er staat niets open, je hoeft niets aan router of certificaat te doen, en Instellingen → Toegang op afstand toont een adres dat overal werkt zodra het Tailscale ziet draaien. Kies dit, tenzij je echt een publiek domein nodig hebt.

nzbfast kan ook zelf HTTPS serveren. Wijs Instellingen → Beveiliging → HTTPS-certificaat / HTTPS-privésleutel naar een PEM-certificaat en zijn sleutel (of start met --tls-cert cert.pem --tls-key key.pem), herstart, en het dashboard en de API antwoorden op https:// in plaats van gewoon HTTP - één listener, één schema. Gebruik het certificaat dat je domein al heeft (bijvoorbeeld van Let's Encrypt via certbot), of een zelfondertekend exemplaar voor het LAN, dat browsers na een eenmalige waarschuwing accepteren. Een kapot of verlopen certificaat weigert de start met het bestand erbij genoemd, zodat de fout zichtbaar is waar je hem maakte; vernieuwen doe je door de bestanden te vervangen en te herstarten. Native HTTPS versleutelt het verkeer maar voegt geen aanmelding toe, dus houd de API-sleutel ingesteld.

Heb je een publiek domein nodig, zet er dan een reverse proxy voor, geef die het certificaat en laat die de authenticatie doen. Start nzbfast met --bind 127.0.0.1 zodat de proxy de enige ingang is, en wijs de proxy naar 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;
}

Leg erbovenop wat je proxy biedt: basic auth, een forward-auth-dienst als Authelia of Authentik, of clientcertificaten. Eén ding verrast iedereen - Sonarr, Radarr en de telefoon-apps kunnen geen browser-login doorlopen, laat ze er dus langs. De meeste proxy's kunnen een verzoek met een geldige X-Api-Key-header doorlaten en de rest om authenticatie vragen.

Zet poort 6789 niet zomaar open op je router. Zonder geconfigureerd certificaat spreekt het dashboard gewoon HTTP, dus je API-sleutel en alles wat je ermee doet zouden leesbaar voor iedereen onderweg over het internet gaan, en een installatie zonder sleutel staat open voor wie hem vindt. Zet je toch een poort open, stel dan eerst een API-sleutel in en zet HTTPS aan.

13 · Prestatietools

Systeembenchmark

Eén klik meet je drie plafonds - netwerkdoorvoer (een echte meting van 8 seconden over meerdere verbindingen), CPU-verificatiesnelheid en schrijfsnelheid van de schijf - en opent met het antwoord: je verwachte maximale downloadsnelheid en welk plafond de limiet is. De kortste balk is je bottleneck; de andere tonen hun marge. Plan hem in (elke 6 uur → wekelijks) en elke run wordt in een geschiedenistabel gelogd, zodat je ziet wanneer je provider, ISP of hardware zich anders ging gedragen. Geplande runs draaien alleen als de wachtrij inactief is.

Verbindingstuning

Meet één provider bij oplopende aantallen verbindingen en adviseert de instelling - meer sockets helpen tot de provider of je lijn verzadigd raakt, en sommige providers straffen te veel vragen af. Test alles vergelijkt elke provider en burst ze daarna allemaal samen om te checken of de pool je lijn verzadigt.

Serverdiversiteit

STAT-bemonstert artikelen van verschillende leeftijden op elke server en clustert providers op gedeelde gaten: providers met ~100% gedeelde ontbrekende artikelen zijn dezelfde backbone (redundant voor herstel); onafhankelijke providers breiden je dekking echt uit. Eindigt met een aanbeveling in gewone taal.

Automatische wachtrij-intelligentie

Het beschikbaarheidsorakel

Takedowns zijn de belangrijkste reden dat een Usenet-download mislukt, en ze zijn voorspelbaar: dezelfde release verdwijnt bij de ene backbone terwijl een andere hem nog heeft. nzbfast houdt een klein register bij van wat je eigen providers werkelijk geleverd hebben, en besteedt een minuscuul rustbudget aan STAT-peilingen (een paar honderd per uur per server, nooit tijdens een download) om het actueel te houden. Het haalt daarvoor nooit payload op.

Wat het je oplevert:

Het oordeel is een voorspelling op basis van aanwijzingen, geen garantie. Voor een hard antwoord over één NZB telt nzbfast check (§15) de werkelijke artikelen.

Geheugenbudget - en wat weinig geheugen kost

Alle engine-caches delen één budget (standaard ¼ van het fysieke RAM, begrensd op 256 MB–16 GB). Stel het expliciet in met Geheugenbudget in Instellingen, of --mem-limit op de commandoregel.

nzbfast is gebouwd om je netwerk en je schijf tegelijk vol te trekken, en RAM is wat dat in één pass mogelijk maakt: artikelen worden gedecodeerd, geverifieerd en rechtstreeks naar hun definitieve offsets geschreven, zodat archiefvolumes de schijf helemaal niet hoeven te raken. Knijp het geheugen af en er breekt niets - elke cache heeft een spill-pad, en de engine wijkt uit naar meer schijf-I/O in plaats van te swappen of te falen. Maar die spill is niet gratis, en bij grote taken kun je hem meten.

Gemeten op één machine en één lijn (M1 Ultra, 10 GbE), dezelfde bestanden bij elk budget. Elke run leverde een correct, volledig geverifieerd en uitgepakt resultaat op:

TaakgrootteRAM in overvloed2 GB budget
≈ machine met 8 GB
1 GB budget
≈ machine met 4 GB
256 MB budget
≈ NAS met 2 GB
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%

Het piekgeheugen volgt het budget, niet de taak: die download van 190 GB voltooit in ongeveer 1,1 GB RAM. Wat je ervoor inlevert is tijd - en alleen bij grote taken.

AanbevelingGeef nzbfast grofweg 2 GB budget per 100 GB van de grootste taak die je downloadt, en laat verder de standaard staan - ¼ van het RAM is op de meeste machines al het juiste antwoord. In de praktijk: 4 GB RAM dekt taken tot ~35 GB op volle snelheid; 8–16 GB houdt ook taken van 100 GB-plus daar; een NAS met 2 GB maakt alles af wat je hem voert, maar zie hem als een achtergrond-downloader en niet als iets dat een snelle lijn zal verzadigen.

Zet op een kleine NAS ook Verbindingen lager (2–4), samen met het budget. Bij een budget van 256 MB en 2 verbindingen blijft het piekgeheugen rond de 190 MB - ruim binnen wat een NAS met 2 GB overheeft. Besef dat op dat punt het aantal verbindingen, niet het geheugen, de beperking is: dezelfde taak van 35 GB duurde 286 s in plaats van 65 s. Dat is de eerlijke vorm van de afweging - hij maakt het altijd af, en correct; hij trekt alleen de lijn niet vol.

Benchmarks worden voor elke release opnieuw gedraaid; de methode en de cijfers per machine worden naast de resultaten gepubliceerd.

14 · Updates

Bijwerken zonder je instellingen te verliezen

Eén regel geldt voor elke installatie: een update vervangt het programma, nooit je instellingen. Alles wat je hebt ingesteld - servers, paden, de API-sleutel, de wachtrij - staat in een handvol bestanden in één map (§17), en geen installatieprogramma, image-pull of pakketupgrade komt aan die map. Lijken instellingen na een update toch verdwenen, dan komt dat vrijwel altijd doordat de nieuwe installatie een andere, lege map leest, niet doordat er iets is verwijderd; de oude bestanden staan nog precies waar ze altijd stonden. §18 heeft de herstelstappen.

InstallatieZo werk je bij
macOS-appOpen de nieuwe DMG en sleep NzbFast naar Apps, over de oude heen. Je datamap staat er los van en wordt niet aangeraakt.
Windows-installatieprogrammaDraai de nieuwe setup over de oude installatie heen. Je datamap staat er los van en wordt niet aangeraakt.
Docker (commandoregel)docker pull nzbfast/nzbfast, verwijder de oude container en draai de nieuwe met exact dezelfde -v-koppelingen. De image is wegwerpbaar; de gekoppelde map /config is je installatie. Gebruikt je run-commando een relatief pad zoals -v ./config:/config, voer het dan elke keer vanuit dezelfde map uit - vanaf elke andere plek is ./config een andere, lege map.
Docker Composedocker compose pull && docker compose up -d, met hetzelfde compose-bestand op dezelfde plek. De ./config in het bestand is verankerd aan de map van het bestand zelf, dus laat het bestand staan waar het staat.
WatchtowerNiets te doen: het maakt de container opnieuw aan met dezelfde koppelingen zodra er een nieuwe image verschijnt.
UnraidTabblad Docker → Check for UpdatesApply Update. Verwijder de app nooit om hem voor een update opnieuw toe te voegen; mocht je ooit echt herinstalleren, houd dan hetzelfde appdata-pad aan zodat hij je bestaande /config terugvindt.
Synology (Container Manager)Download de nieuwe image, stop de container en maak hem opnieuw aan met dezelfde volume-instellingen - de walkthrough in de Synology-handleiding beschrijft het klik voor klik, inclusief hoe je het op een schema laat lopen.
Synology (pakket)Installeer de nieuwe .spk in Package Center; die wordt ter plekke bijgewerkt.
QNAP (pakket, bèta)Installeer de nieuwe .qpkg in App Center; die wordt ter plekke bijgewerkt. Je instellingen en downloads staan buiten de map van de app, dus een update of een verwijdering neemt ze niet mee.
Debian / Ubuntu (.deb)
Fedora / RHEL (.rpm)
Installeer het nieuwe pakket over het oude heen: sudo dpkg -i nzbfast_*.deb of sudo rpm -U nzbfast-*.rpm. Je instellingenmap maakt geen deel uit van het pakket, dus een upgrade kan er niets in vervangen, en je eigen wijzigingen in /etc/nzbfast/nzbfast.env blijven staan. De service wordt alleen herstart als die al draaide.
Homebrewbrew upgrade nzbfast
Kale binaryVervang de binary. Je config blijft staan waar je hem hebt gemaakt (§17).
TipDocker-gebruikers die Sonarr of Radarr aansluiten: zet de API-sleutel in de containerdefinitie zelf (-e NZBFAST_APIKEY=…, of het environment-blok van je compose-bestand of Unraid-template). Een sleutel die daar staat overleeft elk containerongeluk, want hij staat op de host, in de definitie, en wordt bij elke start opnieuw toegepast. Een sleutel die je later in Instellingen instelt wint er nog steeds van.

15 · Commandoregel

Alles wat de daemon doet is ook scriptbaar. De alledaagse commando's:

CommandoDoel
nzbfast setupInteractieve serverinstallatie.
nzbfast serveDraai de daemon (dashboard + API + automatisering). --open opent de browser; --apikey stelt de sleutel met de hand in (§2); --bind kiest het luisteradres, standaard 0.0.0.0 (elke interface), 127.0.0.1 voor alleen deze machine. Zie --help voor de volledige vlaggenlijst; elke dashboardinstelling heeft een vlag als tweelingbroer.
nzbfast get file.nzbDownload één NZB, volledige pipeline, zonder daemon. --preflight breekt vroeg af als de post niet compleet kán zijn; --password voor versleutelde sets.
nzbfast check file.nzbBeschikbaarheidsoordeel - COMPLETE / REPAIRABLE / IMPOSSIBLE - zonder payload te downloaden.
nzbfast verify DIRVerifieer bestanden tegen de PAR2-set in een map.
nzbfast sysbenchDe systeembenchmark + het diversiteitsrapport, in de terminal.
nzbfast index / searchScan groepen de index in / doorzoek hem, zonder de daemon.
nzbfast import-sabImporteer servers uit een SABnzbd-ini.

Ook beschikbaar: inspect, probe, bench, bench-cpu, soak, fetch, spots/spot-search/spot-get (Spotnet), predb-seed (vult de pre-database met de tijd van voor het aanzetten van de feed), make-release-nzb/make-test-nzb (testfixtures). Elk commando accepteert --config en --help. Daar komt post bij: het uploadt bestanden als yEnc-artikelen en schrijft de bijbehorende NZB. Een operationeel gereedschap; het vereist een expliciete --post-server en kiest nooit zelf een server.

16 · API-overzicht

Basis-endpoint: http://host:6789/api?mode=…&apikey=…&output=json - SABnzbd-compatibel, dus bestaande SAB-integraties werken ongewijzigd. Twee sleutels: de API-sleutel (volledige controle) en de NZB-sleutel (alleen toevoegen: addfile/addurl). addnzblnk zit met opzet niet in de alleen-toevoegen set: een link oplossen kan afgerekende indexerquota kosten, en daar gaat een alleen-toevoegen sleutel niet over.

GebiedModes
Wachtrijqueue (met name=delete/pause/resume/priority/switch), pause, resume, addfile, addurl, addnzblnk, retry, set_password
Infohistory, status/fullstatus, stats, version, server_stats, usage, log, warnings, plus /jobnzb/<nzo_id> (de eigen gespoolde .nzb van de taak weer naar buiten, wachtrij of geschiedenis; alleen met de volledige API-sleutel)
Configget_config, config&name=<setting>&value=… (elk veld uit Instellingen), server_save/delete/test/enable/reorder, import_probe/apply
Index & wallindex_search, index_get, index_stats, index_scan_now, wall, wall_search/fix/refresh/art, plus newznab op /api?t=caps|search|tvsearch|movie en /getnzb/<id>
Automatiseringwatchlist, watchlist_check_now, watch_calendar, feeds, smart_folders, schedule
Diagnostieksysbench, bench_history, connladder, pooltest, diversity, update_check
NZBGet JSON-RPC/jsonrpc - status, listgroups, history, append, editqueue, rate, pause, log (Basic auth: willekeurige gebruiker, API-sleutel als wachtwoord)
Voorvertoning / afspelen/stream/<nzo_id> (HTTP-ranges; het starten van een geparkeerde bibliotheektaak vereist een ?t=-token of de sleutel), /m3u/<id> (vereist de sleutel; geeft het token uit), /wall, /art/…

17 · Bestanden & locaties

Waar de instellingenmap staat, hangt af van hoe nzbfast is geïnstalleerd. Deze ene map bevat alles wat een back-up waard is:

InstallatieInstellingenmap
macOS-app~/Library/Application Support/nzbfast/
Windows%LOCALAPPDATA%\nzbfast\
Docker / NAS-containers/config binnen de container, oftewel de hostmap die je eraan hebt gekoppeld. Op Unraid is dat de appdata-map van de app.
Synology-pakket/var/packages/nzbfast/var/
QNAP-pakketMeestal /share/Download/nzbfast/config/. De map wordt bij de installatie gekozen en in het App Center-log genoemd; de nzbfast.env van de app noteert hem ook.
Debian-/RPM-pakket/var/lib/nzbfast/
TerminalDe map waarin je nzbfast setup draaide, of waar --config / $NZBFAST_CONFIG ook maar naar wijst.

En wat erin staat:

BestandInhoud
config.local.jsonServerinloggegevens en opties per server. Aangemaakt door de wizard; te bewerken in Instellingen. Houd hem privé. Wachtwoorden zijn versluierd, niet versleuteld.
settings.jsonElke instelling die in het dashboard is gewijzigd. Staat naast de config; UI-waarden overschrijven commandoregelvlaggen. Verwijder een sleutel (of het bestand) om terug te vallen op vlaggen/standaardwaarden.
apikeyDe API-sleutel die nzbfast bij een eerste start voor zichzelf aanmaakte (§2). Staat naast de config; op macOS en Linux alleen leesbaar voor het account waaronder nzbfast draait. Verwijder hem niet om een verse sleutel te krijgen: bij een installatie die al gedraaid heeft komt er niets voor in de plaats en start de daemon weer op zonder enige sleutel. Stel er in plaats daarvan een nieuwe in bij Instellingen → Beveiliging.
index.dbDe release-index (SQLite) + wall-metadata. Veilig te verwijderen - hij wordt door het scannen opnieuw opgebouwd (Instellingen → Indexeren → Wissen doet dit voor je).
<config>/.spool/Wachtrijstatus (overleeft herstarts), NZB's per taak, verbruiksgrootboek, benchmarkgeschiedenis, posterart-cache.
ArtikeljournalStaat in de uitvoermap van elke taak zolang die incompleet is - drijft crash-hervatting en opnieuw proberen aan. Wordt bij succes verwijderd.
Externe toolsGeen nodig - RAR-uitpakken en PAR2-herstel zijn native. Mocht een exotische set ooit een externe unrar of par2 als fallback nodig hebben, dan kijkt nzbfast eerst naast zijn executable en daarna op $PATH.

18 · Problemen oplossen

SymptoomControleer
Trage downloadsDraai de Systeembenchmark - die benoemt de bottleneck ronduit. Is het het netwerk: draai Verbindingstuning, check de aantallen verbindingen per server en controleer of je providers niet allemaal op één backbone zitten (Serverdiversiteit).
Alleen traag bij heel grote taken
(NAS of machine met weinig RAM)
Verwacht, en meetbaar: een uitgehongerd geheugenbudget spilt caches naar schijf en kost 20–40% voorbij ~87 GB. Zie Geheugenbudget voor de cijfers en hoeveel RAM je moet geven. Kleinere taken merken er niets van.
Download mislukt met "articles missing"De post is verlopen of bij je providers weggehaald. Een tweede provider op een andere backbone redt de meeste van deze gevallen. nzbfast check voorspelt dit vóór het downloaden. En de muur markeert de waarschijnlijk verdwenen releases vooraf met zijn beschikbaarheidsstip (§13). Een eerste mislukking van deze vorm probeert het na een wachttijd één keer vanzelf opnieuw, want propagatievertraging ziet er precies zo uit en lost zichzelf op.
Voltooid archief vraagt om een wachtwoordDe geschiedenisregel toont 🔑 - voer daar het wachtwoord in; de taak maakt zichzelf ter plekke af.
Een archief pakt niet uitWachtwoord- en reparatiefouten melden zichzelf in de geschiedenisregel. Voor al het andere is er een noodluik: Instellingen → Watchmap & nabewerking → Uitpakken met externe unrar (een geavanceerde instelling) geeft het uitpakken aan het op je machine geïnstalleerde programma unrar in plaats van de ingebouwde uitpakker. Laat het anders uit: het ingebouwde pad is sneller op elke vorm die we hebben gemeten, en versluierde posts met hash-namen gebruiken het toch altijd, omdat unrar hun hernoeming niet kan volgen. Dezelfde schakelaar voor nzbfast get-runs is de omgevingsvariabele NZBFAST_NO_NATIVE_UNRAR=1. Als unrar een archief uitpakt dat de ingebouwde uitpakker weigerde, meld het dan zodat we het ingebouwde pad kunnen repareren.
Sonarr/Radarr krijgt geen verbindingPoort 6789 bereikbaar? API-sleutel correct (volledige sleutel, niet de NZB-sleutel)? Clienttype op SABnzbd gezet?
Het dashboard vraagt om een API-sleutel die ik nooit heb ingesteldEen nieuwe installatie maakt er zelf een aan en toont hem één keer bij het starten (§2). Hij staat in het bestand apikey naast je config, en in de startuitvoer. Of typ een eigen sleutel bij Instellingen → Beveiliging vanuit een browser die al ingelogd is.
Al mijn instellingen lijken weg na een update
(servers, paden, API-sleutel)
Niets in een update verwijdert instellingen; dit betekent dat nzbfast een andere, lege map leest. Eerst dit: het API-sleutelveld in Instellingen toont zich met opzet leeg - klik op Show voordat je concludeert dat de sleutel weg is. Vergelijk op Docker de /config-koppeling van de nieuwe container met die van de oude: een gewijzigd hostpad, een relatief pad dat vanuit een andere map is gedraaid of een verse appdata-map laten nzbfast allemaal van nul beginnen, terwijl je echte instellingen onaangeroerd op het vorige pad staan. Zoek de oude map op (kijk naar settings.json, je configbestand en apikey - locaties in §17) en richt de koppeling er weer op, of kopieer die bestanden naar de nieuwe map en herstart. Het startlog noemt het exacte instellingenbestand dat in gebruik is: [settings] applying saved settings from …
Niets op het netwerk kan de daemon bereikenCheck --bind: 127.0.0.1 bedient alleen de machine waarop nzbfast draait. De standaard, 0.0.0.0, bedient elke interface. Controleer daarna de firewall van de machine zelf op poort 6789.
De kaart Index doorzoeken blijft kleinDe indexer groeit op de achtergrond - check of er groepen zijn ingesteld bij Instellingen → Indexeren, en geef Verdiepen per scan de tijd om geschiedenis op te bouwen. "Nu scannen" forceert een ronde; de statusregel toont live de voortgang.
De wall toont verkeerde/geen artworkDetailblad → ✎ Match corrigeren of ↻ Metadata verversen. Filmlookups worden beter met een gratis OMDb-sleutel.
macOS zegt dat de app "nzbfast" niet geopend kan wordenTwee oorzaken, allebei snel verholpen. Gebruik je de kale -macos-universal.zip, dubbelklik dan op Start nzbfast.command en niet op het bestand nzbfast ernaast: dat is het programma zelf, en de Finder beantwoordt een dubbelklik daarop met precies deze melding. De starter is wat alles klaarzet en opstart. Geeft de starter dezelfde melding, dan is onderweg het Unix-uitvoerbit van de kopie verdwenen: macOS bewaart dat bit in de .zip, maar chat-apps, clouddrives en opnieuw inpakken doen dat niet, waardoor een doorgegeven kopie niet-uitvoerbaar aankomt. Download de .dmg of de .zip rechtstreeks van de releases-pagina, dan gebeurt het niet. Om de kopie te redden die je al hebt: open de Terminal, typ chmod +x met een spatie erachter, sleep Start nzbfast.command en het bestand nzbfast op het venster en druk op Return; dubbelklik daarna opnieuw op de starter.
Daemon start niet: poort in gebruikEr draait al een instantie - of wijzig --port.
Waar zijn de logs?De Log-kaart op het dashboard, of de terminal/het logbestand waarmee je serve startte.
Kom je er niet uit?De Log-kaart benoemt meestal de boosdoener - stuur de staart ervan mee als je een probleem meldt, samen met je nzbfast --version.

nzbfast - deze handleiding wordt met elke release meegeleverd. De instellingen, endpoints en standaardwaarden hierin horen bij de versie waarmee hij is meegeleverd.