Functies

Bovenaan de korte versie, daaronder alle details.

  • Gepipelinede NNTP op lijnsnelheid: 8,31 Gbps gemeten op 10 GbE.
  • One-pass pipeline: decoderen, verifiëren en uitpakken overlappen; RAR-volumes raken de schijf nooit aan; geneste archieven pakken uit in dezelfde doorgang.
  • Union-beschikbaarheid over providers: compleet vanuit de unie van al je servers, of vroegtijdig afbreken.
  • Geheugenbudget: begrensd RAM, nette spill naar schijf, swapt nooit.
  • Crashbestendig hervatten: journal op artikelniveau; kill −9 midden in een taak en hij gaat verder waar hij gebleven was.
  • SABnzbd-compatibele + NZBGet JSON-RPC API's: Sonarr/Radarr/nzb360/LunaSea werken zonder aanpassing.
  • Ingebouwde indexer: scan nieuwsgroepen naar een lokale, doorzoekbare index die Newznab serveert.
  • Posterwall: artwork, ratings, cast, afleveringsgrids; geen API-sleutels.
  • Watchlist-auto-grab + kwaliteitsupgrades: grijpt bij de eerste verschijning, upgradet tot je doelkwaliteit.
  • Eén op zichzelf staand uitvoerbaar bestand: par2 + RAR-uitpakken ingebouwd.

Engine & snelheid

  • Gepipelinede NNTP. Meerdere verzoeken tegelijk onderweg per verbinding verslaan zowel de round-trip-latency als het inzakken van het TCP-congestievenster. We meten overal tussen +12% en +270% t.o.v. serieel ophalen, en zo'n 8 verbindingen per server volstaan om de lijn te verzadigen.
  • SIMD yEnc-decodering (rapidyenc, met NEON- en AVX-kernels) draait op 4,95 GB/s per core, in-place gedecodeerd zodra de bytes in het ontvangstpad binnenkomen.
  • Gedeelde wachtrij over meerdere servers. Providers balanceren zichzelf tot binnen ~2%, zonder ook maar iets bij te stellen. Van elke server wordt de echte snelheid bijgehouden, en de staart van een taak wordt dubbel uitgestuurd zodat één trage server het einde niet kan ophouden.
  • Cross-job soak. De staart van taak N overlapt de start van taak N+1, dus de lijn blijft van rand tot rand branden over een hele wachtrij: hier 2% idle tegenover de 61% donker van SABnzbd in dezelfde benchmark.
  • Watchdog voor trage taken. Een download die op één trage server kruipt terwijl de rest stilzit, gaat naar achter in de wachtrij, met behoud van voortgang, en hervat zodra de wachtrij leeg is.
  • Prefetch op inactieve servers: een server die de actieve taak niet kan gebruiken, omdat de artikelen er niet op staan, begint alvast aan de volgende taak in de wachtrij in plaats van niks te doen.
  • Verbindingstuning-ladder. In plaats van te gokken meet hij waar de doorvoer van elke provider echt ophoudt met stijgen (gevraagde tegenover toegekende verbindingen) en blijft daar hangen.
  • Autosnelheid-governor: een optionele LEDBAT-achtige RTT-regelaar die wijkt voor het overige verkeer bij jou in huis en neemt wat er van de lijn overblijft.
  • Snelheidslimieten en een weekschema: live aanpasbare limieten, een schema in lokale tijd (zomertijd-proof) en een "pauzeer voor N minuten" die vanzelf weer hervat.
  • Geheugenbudget. Eén globaal RAM-budget (auto: een kwart van het RAM, met plafond, instelbaar). Wordt het krap, dan krimpen eerst de buffers, daarna spilt data naar schijf en wordt teruggelezen zodra de taak tot rust komt. Swappen doet hij nooit. Een taak van 190 GB voltooit binnen een budget van 1 GB bij ~1,1 GB piek-RSS, en er is een gemeten, gedocumenteerd 2 GB-profiel voor NAS-apparaten.
  • Backpressure. Een trage schijf remt de sockets af in plaats van het RAM te laten vollopen. Hij blijft binnen ±1% van een schrijflimiet, en het RAM-gebruik daalt onder druk juist.
  • Geheugen teruggeven na de taak: zodra hij inactief is, geeft de daemon vrijgekomen geheugen terug aan het OS en zakt tussen taken naar zo'n 8 MB op macOS.

De one-pass pipeline

  • Eén keer schrijven. Gedecodeerde artikelen gaan met pwrite meteen naar hun definitieve bestandsoffsets. Geen tijdelijke bestanden, geen aparte samenvoegpass.
  • PAR2-verificatie in de stream. Elk blok wordt bij binnenkomst MD5-gehasht vanuit de decodebuffers, dus de verificatie is klaar op het moment dat de download dat is. Dat verslaat de quick-check waar de andere clients genoegen mee nemen, en het kost niets.
  • Direct uitpakken: store-mode RAR-posts (de meeste scene-releases) worden tijdens de download gemapt en uitgepakt, dus de volumes belanden helemaal niet op schijf. Het schrijfwerk komt uit op content × 1,0 en de benodigde schijfruimte op 1×, waar anderen grofweg 2× willen.
  • Geneste archieven, en diepte kost bijna niets. Archieven in archieven - RAR in RAR, 7z in een RAR, ladders van vele niveaus - worden ontnest terwijl de bytes binnenkomen, binnen de ronde die we toch al maakten. Daar zit het hele verschil: een client die elke laag wegschrijft, sluit, heropent en opnieuw scant betaalt een volle ronde per niveau, dus elk niveau dieper kost hem nog een rondje over de schijf. De onze liften mee in de eerste ronde, en de payload komt uit een ladder van tien niveaus net zo tevoorschijn als uit één van één. Eén kopie op schijf waar wegschrijven-en-herlezen er twee of drie vasthoudt.
  • Deobfuscatie. Geobfusceerde posts worden hernoemd op basis van hun PAR2-metadata, ROT13-verhaspelde namen worden gered, en hash-genaamde rommel wordt geclassificeerd en tegengehouden.
  • Exact passend herstel. Beschadigde blokken zijn bekend zodra ze optreden, dus alleen de byte-minimale set recovery-volumes wordt opgehaald (een knapsack-oplossing) en het herstel raakt niets anders aan dan de beschadigde stukken.
  • RAR-recovery-records. Als de PAR2 op is, of nooit is gepost, repareren de in de RARs ingebedde recovery-records beschadigde volumes ter plekke.
  • Herstel op elke diepte. Een PAR2-set die in een binnenste laag zit ingepakt wordt gevonden en op zijn eigen niveau uitgevoerd, en een par-only post (data verwijderd, alleen een recovery-set met 100% dekking achtergelaten) wordt in zijn geheel herbouwd en daarna uitgepakt.
  • Fallback voor gecomprimeerd en versleuteld: niet-store-posts worden op schijf gezet en uitgepakt via de native RAR-engine, alles van RAR4 tot het nieuwe RAR7, overlappend met de rest van de wachtrij. Versleutelde sets worden geparkeerd met een duidelijke melding in plaats van stilletjes te mislukken.
  • Hij gaat zelf op zoek naar het wachtwoord. De meeste versleutelde posts hebben je niet nodig. Hij probeert de metadata van de NZB en de {{pw}}-naamconventie, de *arr-API, dan elk kort tekstnotitietje dat naast de bestanden is gepost, en als dat niets oplevert de namen van de release en de bestanden zelf. Die zoektocht herhaalt hij op elk niveau: een keten die het wachtwoord van elke laag verstopt in de laag erboven - een ander wachtwoord per niveau - gaat helemaal open zonder dat je iets typt. Wat echt overblijft krijgt de 🔑-ontgrendeling op het dashboard: hij ontgrendelt op de achtergrond en archiveert daarna gewoon.
  • Vangrails. Herstelde bronvolumes zijn schrijfbeveiligd terwijl het opnieuw uitpakken loopt, de eigen checksum van het voltooide bestand wordt end-to-end geverifieerd (standaard aan), en een exitcode meldt pas "succes" als het eindresultaat echt bruikbaar is.

Betrouwbaarheid & beschikbaarheid

  • Beschikbaarheidscheck vooraf. Gepipelinede STAT-sweeps bouwen in seconden een matrix per artikel × per server en markeren de taak als COMPLEET, HERSTELBAAR of ONMOGELIJK voordat er een byte content is opgehaald. Een onmogelijke post breekt af met vrijwel niets binnengehaald.
  • Union-routing. Een artikel telt pas als ontbrekend zodra elke actieve server het heeft geweigerd; tot dan gaat het naar de server die het wél heeft. Backbones verschillen in retentie en takedowns, dus de unie maakt in stilte posts compleet die geen enkele server in z'n eentje kon leveren.
  • Crashbestendig journal. Het journal werkt op artikelniveau. Stuur midden in een taak een kill −9 en hij komt terug, waarbij alleen opnieuw wordt opgehaald wat nog niet was weggeschreven; wachtrij en geschiedenis overleven herstarts.
  • Parkeren en opnieuw proberen: mislukte taken parkeren in de geschiedenis, en een nieuwe poging haalt alleen de stukken op die nog ontbreken.
  • Chaos-getest. Een mock-NNTP-server draait tien end-to-end-faalscenario's (430's, corruptie, afkapping, stalls, dode servers, kill −9) bij elke afzonderlijke testrun.
  • Betrouwbaarheidsscore per provider. De completion per server wordt voorgoed bijgehouden en in het dashboard getoond, met een waarschuwing onder de 98%.
  • Serverdiversiteit-analyse. Hij neemt STAT-steekproeven over je servers en clustert ze op de gaten die ze delen, zodat je kunt zien welke "verschillende" providers eigenlijk dezelfde backbone zijn voordat je betaalt voor redundantie die je niet hebt.
  • Quota, blokaccounts en een schijfbewaker: dag- en maandquota, bytebudgetten over de looptijd voor blokaccounts (automatisch uitgesloten zodra opgebruikt), een pauze bij weinig schijfruimte, en dagelijkse verbruikshistorie per provider.
  • Duplicaatdetectie: dupekey en dupescore, waarbij een vastgehouden alternatief automatisch wordt gepromoveerd zodra een grab mislukt.
  • Retentiebewuste routing. Posts die ouder zijn dan de retentie van een server slaan die server helemaal over, en wat geen enkele server kan leveren faalt meteen in plaats van te blijven hangen.

Automatisering & integraties

  • SABnzbd-compatibele API: het volledige oppervlak dat de *arrs daadwerkelijk gebruiken: addfile/addurl, categorieën, prioriteiten, pauzeren/hervatten per taak, opnieuw proberen, paginering, API-sleutels in twee niveaus. Sonarr en Radarr praten ermee alsof het SABnzbd is.
  • NZBGet JSON-RPC-facade. nzb360, LunaSea en andere NZBGet-remotes verbinden zonder aanpassing.
  • Newznab-server. Je lokale index beantwoordt t=search/tvsearch/movie, zodat de *arrs je eigen scans als indexer kunnen behandelen.
  • RSS auto-grab: de feed van een indexer is hetzelfde als waar een nieuwslezer zich op abonneert, alleen staat erin wat er net op Usenet is geplaatst. Alles wat aan de filters voldoet, downloadt zichzelf. Feeds gefilterd met een taal in NZBGet-stijl, live toegevoegd en bewerkt vanuit het dashboard.
  • Watchlist. Noem de series en films die je wilt, ook die nog niet zijn uitgezonden. Elke aflevering wordt bij de eerste verschijning gegrepen en geüpgraded tot je doelkwaliteit is bereikt (bijvoorbeeld 720p → 1080p REMUX), waarbij de vervangen kopie pas wordt verwijderd nadat de upgrade is geverifieerd. Een uitzendkalender laat zien wat eraan komt.
  • Watchmap. Zet er een .nzb in en hij wordt gedownload; het bestand verdwijnt zodra het is opgepakt.
  • Slimme mappen: regels op regex, trefwoord en grootte sorteren downloads bij het toevoegen al in categorieën, met optionele tv-opberging naar Show/Season NN/Show - S01E02.ext.
  • Opruimregels: rommel-extensies worden verwijderd zodra een taak klaar is.
  • Verplaatsen naar een NAS: voltooide downloads gaan na uitpakken en hernoemen naar een bestemmingsmap met behoud van de categorie-indeling, en bestemmingen per categorie kunnen series en films naar verschillende shares sturen. Is de share onbereikbaar, dan blijven de bestanden staan.
  • Nabewerkingsscripts. Ze respecteren SABnzbd's SAB_*-omgevingscontract, dus de scripts die je al hebt draaien ongewijzigd door.
  • Migratie met één klik. Hij importeert servers uit een SABnzbd-ini of een NZBGet-conf, en leest sabnzbd.ini rechtstreeks als dat het enige is dat hij aantreft.
  • Spotnet-ingestie: verificatie van spot-handtekeningen en NZB-synthese, direct ingebouwd.

Voorvertoning & bibliotheek

Dashboard & instellingen

Wachtrij met een detailpaneel per download: voortgangsbalken per bestand, verificatieblokken, bijdrage per server
Wachtrijpaneel: balken per bestand, verificatieblokken, bijdrage per server.
Instellingen: servereditor en live snelheids- en schemabediening
Elke instelling bewerkbaar in de browser. De meeste gelden direct.
Telefoonweergave van het dashboard
Degelijke telefoonweergave, dezelfde daemon.
  • Live grafieken, geen libraries. Alles polt één keer per seconde (een doorvoervlak, gestapeld vlak per provider, een tijdlijn van de verificatiegezondheid, wachtrij-burn-down, een snelheidshistogram) en de grafieken verbreden hun tijdvenster naarmate je de browser verbreedt.
  • Resourcemonitor: CPU, RAM tegenover het budget, schijfschrijfacties en netwerk in één grafiek, met een waarschuwing bij weinig schijfruimte.
  • Provider-ranglijst. Servers hersorteren zichzelf op live prestaties, elk met sessiebytes, aantal verbindingen, benutting en betrouwbaarheid.
  • Wachtrijbeheer: sleep om te herordenen, stel prioriteit en categorie inline in, open een paneel per download, pauzeer optimistisch, of "pauzeer voor N minuten".
  • Alles instelbaar in de browser: servers (met live verbindingstests), snelheid en schema, verbindingen/venster/decoders, schijf en quotum, watchmappen en scripts, indexeringsfilters, bibliotheek, RSS, en beveiliging met sleutelrotatie. Instellingen overleven herstarts.
  • Diagnostiek ingebouwd: een logviewer in de UI, een systeembenchmark die je plafonds voor netwerk, rekenkracht en schijf opzoekt en vertelt wat je eraan kunt doen, de serverdiversiteit-analyse, en de verbindingsladder.
  • Dataverbruik: 14 dagen gestapelde staven per provider, dagelijkse historie, en totaaltellers voor blokaccounts.
  • 28 talen. Het dashboard komt volledig vertaald, rechts-naar-links-schriften inbegrepen; de handleiding en deze site zijn er in 16.
  • Fijne extra's. Sleep een .nzb waar dan ook heen, bureaubladmeldingen, geluiden bij voltooiing, een wizard bij de eerste start, en serve --open.

Deployment