⚡ nzbfast
Il downloader Usenet veloce - manuale utente
1 · Benvenuto
nzbfast scarica da Usenet alla massima velocità che la tua linea, i tuoi provider e la tua macchina consentono - e di solito questo significa alla velocità della linea. È un unico programma autonomo: il motore, la dashboard web, la bacheca dei poster per sfogliare i media, l'indexer integrato, l'anteprima in tempo reale, la riparazione PAR2 nativa e l'estrazione RAR nativa stanno tutti dentro un solo eseguibile. Non c'è nient'altro da installare.
A renderlo veloce è l'architettura, non i ritocchi:
- NNTP in pipeline - molte richieste di articoli viaggiano una dietro l'altra su ciascuna connessione, tenendo ogni connessione a piena velocità invece di aspettare i round-trip.
- Una pipeline a passata unica - download, verifica ed estrazione si sovrappongono. I volumi degli archivi vengono estratti nel flusso; in un tipico post in store-mode i file RAR non toccano mai il disco, quindi il job richiede 1× la dimensione della release, non 2×, e termina quando termina il download.
- Unione multi-provider - ogni server configurato contribuisce; un articolo assente su un backbone viene recuperato da un altro. I server lenti o morti non bloccano mai la coda.
- Un budget di memoria - il motore si adatta a una dotazione di RAM limitata e ripiega sul disco se serve. Non manda mai in swap la tua macchina.
Misurato contro la concorrenza su hardware, job e provider identici, nzbfast ha completato un download da 190 GB in circa 5 minuti su una linea 10 GbE - con le alternative principali indietro del 30–220% sugli stessi test, quando riuscivano a completarli. Le cifre sono in §3.
2 · Avvio rapido
macOS
- Apri
nzbfast-<version>-macos.dmge trascina NzbFast in Applicazioni (universale: Apple Silicon + Intel). - Primo avvio: macOS avvisa che nzbfast non è ancora notarizzato da Apple. Clic destro sull'app → Apri - oppure apri Impostazioni di Sistema → Privacy e sicurezza, scorri in basso e clicca Apri comunque. Va fatto una volta sola.
- La finestra dell'app mostra la dashboard con una scheda di benvenuto - cliccala e aggiungi almeno un server Usenet (host, porta 563, nome utente, password). Altri si possono aggiungere in seguito dalle Impostazioni.
- Trascina un
.nzbovunque sulla dashboard - o semplicemente fai doppio clic sui file.nzbnel Finder. I download finiscono in~/Downloads/nzbfast. Esci dal menu; i download riprendono da dove erano rimasti.
Preferisci fare senza app? Lo zip semplice
(binario + launcher Start nzbfast.command, stesso motore) funziona come
prima - i passaggi sono più sotto, in "Da terminale".
Windows
- Esegui
nzbfast-<version>-windows-x64-setup.exe. Si installa solo per il tuo utente (nessuna password di amministratore). Poiché questa release non è ancora firmata, SmartScreen può mostrare "PC protetto da Windows" - clicca Ulteriori informazioni → Esegui comunque. - nzbfast vive nell'area di notifica: doppio clic sull'icona (o Open Dashboard nel menu del tasto destro) apre la dashboard; aggiungi poi il tuo server Usenet dalla scheda di benvenuto. Il menu dell'icona offre anche Pausa/Riprendi, la cartella dei download e l'uscita.
- Il doppio clic su un file
.nzblo mette in coda. Windows Defender può chiedere una volta il permesso di ascoltare sulla rete locale - concedilo.
Preferisci una copia portable? Lo zip -windows-x64.zip funziona
ancora: scompattalo dove vuoi e fai doppio clic su nzbfast.exe (o
Start nzbfast.bat) per la procedura guidata da terminale.
Da terminale (qualsiasi piattaforma)
nzbfast setup # interactive server setup (writes config.local.json)
nzbfast serve --open # start the daemon and open the dashboard
nzbfast import-sab.La tua chiave API
Su un'installazione davvero nuova, nzbfast si crea da sé una chiave API al primo avvio del daemon e la stampa una volta sola in un banner, subito sotto l'indirizzo della dashboard. Da lì in poi ogni richiesta ha bisogno di quella chiave, così la dashboard e l'API non sono aperte a tutto ciò che riesce a raggiungere la macchina.
Cosa farne dipende da come hai avviato nzbfast:
- L'app macOS, l'area di notifica di Windows o
serve --open: niente. Passano la chiave alla finestra del browser che aprono, la dashboard se la ricorda e sei già autenticato. - Un browser che hai aperto tu, o la dashboard su un telefono o su un altro computer: la pagina chiede la chiave una volta e poi se la ricorda.
- Sonarr, Radarr, nzb360 e affini: incollala come loro chiave SABnzbd o NZBGet (§11, §12).
La chiave è conservata in un file chiamato apikey accanto al tuo file
di configurazione, quindi resta la stessa tra un riavvio e l'altro e puoi rileggerla
ogni volta che ti serve. Su macOS e Linux quel file è leggibile solo dall'account che
esegue nzbfast. Sta anche nell'output del daemon stesso, quindi la scheda Log della
dashboard ce l'ha se il terminale è ormai scorso via.
Per usare invece una chiave tua, scrivila in Impostazioni → Sicurezza; si applica
subito. Quel pannello cambia la chiave ma non mostra mai quella in uso, quindi leggi
il file apikey se ti serve indietro il valore generato. Per funzionare
senza alcuna chiave, perché qualcosa davanti a nzbfast si occupa già
dell'autenticazione, avvialo con NZBFAST_OPEN=1 nell'ambiente. nzbfast
resta allora aperto e lo dice chiaramente all'avvio.
Quali macchine possano raggiungere il daemon è una scelta a parte:
serve --bind. Il valore predefinito è 0.0.0.0, cioè ogni
interfaccia di rete, perché un NAS, un telefono e un Sonarr su un altro computer
devono tutti potersi collegare. --bind 127.0.0.1 lo restringe alla
macchina su cui gira nzbfast, che è quello che vuoi su un singolo computer da
scrivania dove nient'altro ha bisogno di accedervi.
3 · Come funziona nzbfast
Un rapido vocabolario, perché il resto del manuale si legga senza intoppi:
| Termine | Significato |
|---|---|
| Provider / server | Un servizio Usenet con cui hai un account (Newshosting, Eweka, XS News…). Ciascuno consente un certo numero di connessioni simultanee. |
| Backbone | L'infrastruttura dietro un provider. Spesso più marchi rivendono lo stesso backbone - utile saperlo, perché due provider sullo stesso backbone mancano degli stessi articoli. Vedi Diversità dei server. |
| NZB | Un piccolo file XML che elenca gli articoli che compongono un post. È ciò che dai in pasto a nzbfast. |
| PAR2 | Dati di recupero pubblicati insieme a una release. nzbfast verifica su di essi durante il download e ripara automaticamente quando gli articoli sono danneggiati o mancanti. |
| RAR in store-mode | La maggior parte delle release è impacchettata in volumi RAR senza compressione. nzbfast lo riconosce e scrive il file interno direttamente nella sua posizione finale mentre scarica - nessuna fase di scompattamento dopo. |
La pipeline esegue download → decodifica → verifica → estrazione in parallelo. La scheda Pipeline sulla dashboard mostra le tre corsie muoversi insieme. Quando arriva l'ultimo byte, la verifica è già conclusa e il file è già estratto; il tempo di "post-elaborazione" di un job tipico è zero. Se serve una riparazione, solo allora i volumi vengono materializzati su disco, riparati sul posto dal motore GF(2¹⁶) nativo (i dati offuscati rinominati o traslati di qualche byte vengono trovati e recuperati da una scansione a blocchi scorrevole) e ri-estratti - tutto in automatico.
I download interrotti (crash, mancanza di corrente, kill -9) riprendono dal journal degli articoli: i byte già su disco non vengono mai scaricati due volte. Il journal registra dove sono finiti fisicamente i byte di ogni articolo - anche quelli estratti direttamente nel file finale - così una ripresa ricostruisce dal disco locale e ri-verifica tutto ciò che ha ripristinato contro la mappa dei blocchi PAR2 prima di fidarsene.
Il confronto
Misurato contro SABnzbd 5.0.4 e NZBGet 26.2 sulla stessa macchina, con gli stessi provider e gli stessi NZB, cronometrato fino al file utilizzabile - download, verifica, riparazione ed estrazione inclusi, perché è quello il momento in cui il job è davvero finito:
| Dimensione job | nzbfast | NZBGet 26.2 | SABnzbd 5.0.4 |
|---|---|---|---|
| 7 GB | 13,7 s | +26% | +39% |
| 35 GB | 67 s | +61% | +325% |
| 87 GB | 272 s | +36% | +160% |
| 190 GB | 9 m 00 s | +30% | +111% |
Il divario è la post-elaborazione che gli altri devono ancora fare dopo l'arrivo dell'ultimo byte. Entrambi i concorrenti erano stati ottimizzati per il confronto, non lasciati sui valori predefiniti - SABnzbd in particolare esce di fabbrica con il pipelining delle richieste spento, cosa che gli costa cara, quindi è stato attivato.
Due differenze contano quanto i tempi:
- Spazio su disco. La passata unica richiede 1× la dimensione della release; i client che scrivono i volumi d'archivio e poi li scompattano richiedono 2×. Su una macchina di test con 97 GB liberi, un job da 87 GB qui è finito in 3 m 08 s e gli altri due non potevano nemmeno partire.
- Memoria. Sul job da 190 GB il picco è stato di 3,9 GB contro i 9,3 GB di SABnzbd - e nzbfast fa lo stesso job in circa 1 GB se glielo chiedi (vedi Budget di memoria).
4 · La dashboard
Apri http://localhost:6789 (o l'indirizzo della tua macchina da un
altro dispositivo - il layout per telefono si adatta da solo). Tutto si aggiorna in
tempo reale, una volta al secondo. Le schede, dall'alto in basso:
Barra d'intestazione
- Menu Limite di velocità - tetti fissi, auto · cede alla LAN (una modalità governata dall'RTT che si fa da parte quando qualcun altro in casa ha bisogno della linea), o nessun limite.
- Pausa per… - metti tutto in pausa per 15 min/30 min/1 h/3 h con ripresa automatica, oppure usa il pulsante Pausa per una pausa a tempo indeterminato. La pausa è immediata: il trasferimento attivo si ferma in pochi secondi e riprende poi dal journal, senza perdere nulla. (I job con priorità Forza continuano a scaricare, come in SABnzbd.)
- Qui compare un banner di aggiornamento quando è disponibile una nuova versione (vedi Aggiornamenti).
Velocità
MB/s in tempo reale con un grafico a scorrimento; le linee tratteggiate segnano massimo e minimo di questa sessione, la linea tenue è una media mobile. Sotto, un istogramma mostra come si distribuiscono i campioni di velocità della sessione - tipico contro picco. Allarga la finestra e i grafici mostrano più storia (fino a un'ora).
Riquadri statistici
Scaricato in questa sessione, profondità della coda, conteggio completati/non riusciti, velocità di picco della sessione.
Risorse - una macchina, quattro tetti
CPU, RAM (rispetto al budget di memoria di nzbfast), velocità di scrittura su disco e rete su un unico grafico normalizzato, con i valori reali in legenda e un avviso di spazio scarso. Nessun altro client NZB te lo mostra; esiste per dimostrare un punto - nzbfast satura la tua linea, non la tua macchina.
Pipeline - le fasi si sovrappongono
Tre corsie: download, verifica (blocchi PAR2 controllati), estrazione. In un job sano si muovono tutte e tre insieme.
Provider
Per ogni server: velocità in tempo reale, utilizzo delle connessioni, quota di traffico, GB della sessione e un punteggio storico di completamento articoli (che si colora quando un server scende sotto il 98%). Un grafico ad aree impilate mostra il contributo di ciascun provider nel tempo. Le righe si riordinano per prestazioni in tempo reale ogni 10 s (configurabile in Impostazioni → Interfaccia), così il tuo provider più veloce è sempre in cima.
Coda
- Trascina le righe per riordinare (entro la stessa fascia di priorità - Forza/Alta scaricano comunque per prime); cambia la priorità direttamente in riga.
- Clicca una riga per il pannello dei dettagli: barre di avanzamento per
file, conteggi dei blocchi di verifica, quanto ha contribuito ciascun server a
questo job, e una riga "aggiunto da" che dice da dove è arrivato il job
(cartella monitorata, un'app collegata, l'API…). Il pulsante Scarica il .nzb
ti salva il file
.nzbdel job - nzbfast ne conserva una copia propria, quindi funziona per ogni job, anche quando il file originale non c'è più da tempo. - I badge segnalano gli stati speciali: rinviato (lento), prefetch in corso, in pausa (vedi Strumenti per le prestazioni).
- Un grafico burn-down traccia i GB totali rimanenti nell'intera coda.
Sfoglia indice
Cerca in tutto ciò che l'indexer integrato ha catalogato dai tuoi gruppi osservati (vedi Automazione) e scarica con un clic - nessun indexer esterno necessario. La riga di stato mostra l'avanzamento della scansione; Scansiona ora forza una passata.
Watchlist
Aggiungi titoli per nome - anche non ancora pubblicati. Quando una release corrispondente compare nell'indice viene prelevata automaticamente, con preferenze di qualità e regole di upgrade (una copia migliore sostituisce una peggiore).
Storico
I download recenti, una riga ciascuno. I job non riusciti offrono Riprova (riprende dal journal). Gli archivi cifrati mostrano un controllo di
sblocco 🔑 - inserisci la password e il job si completa sul posto. La striscia della
salute delle verifiche traccia i blocchi PAR2 danneggiati per download - una coda in
crescita indica articoli che arrivano danneggiati.
Il pannello di ogni riga dice chi ha aggiunto il job e ha lo stesso pulsante
Scarica il .nzb della coda - comodo per scaricare di nuovo una release da
un'altra parte, o per allegare il .nzb a una segnalazione di
problema.
La scheda elenca dieci download per impostazione predefinita e il resto è a un clic, sul pulsante ▤. Stato, posizione e il motivo di un fallimento stanno dietro un clic sulla riga stessa, così il caso comune - cosa è finito, quanto grande, quando - resta leggibile senza scorrere. Trascina invece il bordo inferiore della scheda per far scorrere l'elenco a un'altezza scelta da te. History rows in Impostazioni → Interfaccia cambia quel dieci; essendo una proprietà del daemon e non del tuo browser, vale per ogni dispositivo che guarda questa installazione. Colour History names, lì accanto, tinge di verde i nomi completati e di rosso quelli falliti; disattivandolo i nomi restano neutri, e il pallino colorato e i dettagli della riga continuano a dire qual è quale.
Utilizzo dati
Barre giornaliere per provider e totali Oggi / 7 giorni / 30 giorni - essenziali per gli account a consumo e a blocchi. Gli account a blocco mostrano l'uso complessivo rispetto alla loro dimensione.
Log, Benchmark di sistema, Ottimizzazione connessioni, Diversità dei server
Un visore di log nella pagina, e i tre strumenti di auto-misurazione descritti in Strumenti per le prestazioni.
5 · Aggiungere download
| Metodo | Come |
|---|---|
| Trascina e rilascia | Trascina uno o più file .nzb ovunque sulla dashboard. |
| Cartella monitorata | Imposta una cartella nelle Impostazioni; ogni
.nzb salvato lì dentro viene raccolto entro 5 secondi e spostato nel
Cestino, e una dashboard aperta annuncia ogni prelievo per nome ("… prelevato da
Downloads"), così un file che lascia la cartella non è mai un mistero. Preferisci
conservare i tuoi file? Attiva Conserva i .nzb dopo il prelievo (vedi
§9). Punta lì la cartella di download del browser per
prelievi a un clic dai siti indexer. |
| Da un URL | Incolla un link NZB (API mode=addurl, o tramite qualsiasi app collegata). |
| Link nzblnk: | Incolla un link nzblnk: ovunque sulla dashboard, oppure trascinalo dentro. Se hai installato dal DMG macOS o dall'installer Windows puoi anche cliccarne uno direttamente su un board. Vedi i link nzblnk più sotto. |
| Sfoglia indice | Clicca una release completa nella scheda Sfoglia. |
| Watchlist / RSS | Automatico - vedi Automazione. |
| Sonarr/Radarr ecc. | Mandano i prelievi dritti in coda - vedi §11. |
| Riga di comando | nzbfast get file.nzb scarica senza il daemon. |
Categorie, priorità, password
- Le categorie sono etichette libere; ciascuna diventa una sottocartella della cartella di download, e le Cartelle smart (vedi §10) possono assegnarle per regola.
- Priorità: Forza > Alta > Normale > Bassa. Forza ignora pausa e quota.
- Le password degli archivi cifrati vengono raccolte automaticamente da
<meta type="password">dentro l'NZB, da un nome fileName{{password}}.nzbo dal campop=di un link nzblnk, e possono essere fornite per singolo lavoro tramite l'API o dopo, dalla Cronologia (🔑).
I link nzblnk
Alcuni board, soprattutto tedeschi e olandesi, pubblicano un link
nzblnk: invece di un file NZB. Il post è offuscato, quindi non esiste
alcun nome di file a cui collegarsi. Il link porta invece un header, h=,
che è una chiave di ricerca e non una posizione, più un titolo t=, una
password p= e un gruppo g= facoltativi. Qualcuno deve prima
andare a trovare il post.
nzbfast cerca l'header prima nel proprio indice, cosa che non richiede rete alcuna, e solo se lì manca interroga gli indicizzatori di ricerca che hai configurato (Impostazioni → Indicizzatori di ricerca, §9), sotto gli stessi budget giornalieri e lo stesso backoff di qualsiasi altra ricerca. Il titolo diventa il nome del lavoro e la password viene applicata automaticamente.
- Incollare o trascinare funziona su ogni installazione, Docker e NAS compresi: copia il link dal board e incollalo ovunque sulla dashboard.
- Cliccare un link richiede che lo schema sia registrato presso il tuo desktop. L'app del DMG macOS lo registra, e l'installer Windows lo propone come attività: chiede prima, e lascia stare lo schema se NZB Monkey o NZBDonkey lo detiene già. Il tarball macOS semplice, Homebrew e le installazioni Linux non hanno un gestore desktop: lì la via d'ingresso è incollare.
- La risoluzione è limitata di proposito. Registrare uno schema lo mette a una richiesta del browser di distanza da qualsiasi pagina tu visiti, quindi i link hanno un tetto al minuto e solo i primi di ogni minuto possono raggiungere i tuoi indicizzatori; oltre quello si risponde con il solo indice locale.
6 · La bacheca dei poster
Clicca 🎬 bacheca nell'intestazione. La bacheca trasforma il tuo indice in un browser multimediale: ogni film e ogni release TV riconosciuti diventano un riquadro-poster con voto, anno, generi, cast e trama - i tuoi newsgroup, sfogliabili come un catalogo.
- Schede Film / Serie TV / Altro, ricerca istantanea e sette ordinamenti: Per te, Post più recenti, Anno di uscita, Più votati, Titolo A–Z, Più grandi e I più postati.
- Solo abbinati è attivo di default e nasconde la robaccia non identificata; un chip "+N non abbinati" la rivela.
- Clicca un riquadro per la scheda di dettaglio: trama, voto IMDb e numero di voti, cast - e ▶ Riproduci (anteprima immediata, vedi §7) o ⬇ Scarica.
- ✎ Correggi corrispondenza - se un titolo è stato abbinato alla serie o al film sbagliato, scegli quello giusto tra i poster candidati, oppure inserisci a mano titolo/anno/tipo. Il testo manuale non viene mai sovrascritto dall'arricchitore. ↻ Aggiorna metadati ricarica un titolo; Impostazioni → Indicizzazione può aggiornarli tutti o azzerare/ricostruire l'intero indice.
- I metadati sono senza chiavi di default - TVmaze, iTunes, i dataset IMDb, Wikidata, Wikipedia e AniList non richiedono account. Una chiave OMDb (gratuita, basta un'email - c'è un assistente alla registrazione in Impostazioni → Indicizzazione) migliora l'abbinamento dei film; una chiave TMDB viene usata se già ne hai una.
- Per te ordina il muro in base a un profilo di gusti costruito su questa macchina a partire dalla tua cronologia completata e dalla tua watchlist: generi preferiti, se penda verso il cinema o le serie, e all'incirca quale epoca. I titoli che hai già scendono in fondo invece di sparire, e una didascalia «Perché guardi …» dice su cosa si è basato. Senza cronologia ripiega su I più postati, quindi la scheda non è mai vuota. Niente di tutto questo lascia il daemon.
- Non mi interessa su una scheda nasconde quel titolo, e nasconderne alcuni simili insegna qualcosa al muro: propone un filtro da accettare con un clic («Nascondere tutti i titoli Reality d'ora in poi?»). Tutto ciò che hai nascosto, e ogni filtro appreso, si trova sotto Nascosti e filtri e lì si può annullare.
- Un piccolo punto di disponibilità su una scheda è il verdetto dell'oracolo (§13): un «?» ambra significa incerto sui tuoi provider, rosso che le sue parti continuano a mancare. I gruppi in via di ripulitura portano un distintivo ripulito.
7 · Anteprima e verifica
Non devi aspettare la fine di un download per sapere se è il file giusto. Aprilo mentre scarica, verifica che contenuto, lingua e qualità siano quelli che ti aspettavi, e annullalo subito se non lo sono - invece di scoprirlo a download completato.
- ▶ Riproduci sulla bacheca (o
/m3u/<id>) consegna al tuo player multimediale un URL; il daemon avvia o riusa il download che ci sta dietro. - L'endpoint
/stream/<nzo_id>serve il file con pieno supporto degli HTTP range mentre scarica. Controllare qualsiasi punto funziona: fai un controllo a campione al minuto 40 e gli articoli di quella regione vengono promossi in testa alla coda di download - si apre lì in un paio di secondi invece che in minuti. Testa e coda del file vengono scaricate per prime, così i player trovano subito i loro dati di indice. - Modalità libreria: le categorie elencate in library_cats diventano
voci istantanee di soli metadati - un file
.strmcompare subito, la disponibilità viene verificata in background e il download vero parte quando lo apri per la prima volta.
/stream. Per controllare da un'altra macchina usa l'indirizzo LAN della
macchina al posto di localhost./stream/<id>
richiede un token per job (?t=…) - i player non possono inviare chiavi
API, quindi il passaggio /m3u e il puntatore .strm lo
incorporano per te; per coniarlo (/m3u) serve la chiave. Il semplice
servizio dei byte di un download già attivo resta aperto, e le installazioni senza
chiave si comportano come prima.8 · Server Usenet
Impostazioni → Server Usenet è l'editor completo: aggiungere, modificare, rimuovere, riordinare e far entrare o uscire dal pool qualsiasi server. Ogni server ha:
| Campo | Note |
|---|---|
| Host / porta | Usa la porta SSL 563. Il TLS non costa nulla di misurabile - nzbfast cifra sempre. |
| Nome utente / password | Memorizzati in locale in config.local.json, mai rimandati al browser. Lasciare vuota la password in modifica mantiene quella memorizzata. Le password sono offuscate su disco, non cifrate. |
| Connessioni | Connessioni simultanee per server. Usa Ottimizzazione connessioni (§13) per trovare il punto ideale di ciascun provider invece di sparare alto. |
| Livello (tier) | 0 = primario; i livelli superiori sono server di riempimento, interpellati solo per gli articoli mancati da tutti i livelli inferiori. Metti gli account illimitati a 0, quelli a blocchi a 1+. |
| Dimensione blocco (GB) | Per gli account a blocchi (a pagamento per GB): nzbfast traccia l'uso complessivo rispetto a questo valore e smette di usare il server a blocco esaurito (avviso all'85%). |
Lascia un po' di margine sotto il limite di connessioni del tuo account. Impostare le connessioni poco sotto il limite non costa nulla: la velocità si appiattisce ben prima delle ultime una o due connessioni, e l'Ottimizzazione connessioni (§13) si ferma comunque sotto. Sono quei posti liberi a permettere a un secondo dispositivo, a un altro client o a un nuovo tentativo dopo un socket caduto di entrare lo stesso, invece di essere rifiutati mentre questo occupa ogni posto.
Come vengono conservate le password dei provider
Le password dei provider in config.local.json sono offuscate, non
cifrate. Vengono salvate come obf1: seguito da una forma codificata,
così il file non si legge in chiaro se finisce in uno screenshot, in un messaggio di
forum, in una segnalazione di bug o su uno schermo che qualcun altro può vedere.
Sia chiaro cosa questo ti dà e cosa non ti dà:
- Non è cifratura e non protegge in alcun modo da chi ha il file. Il metodo è nel nostro sorgente pubblico e il decodificatore viaggia dentro nzbfast: chi ha il file recupera la password in pochi secondi. Tratta il file come un segreto esattamente come faresti se le password fossero leggibili.
- Elimina la fuga banale, che è quella comune. Le configurazioni finiscono incollate nei thread di assistenza e catturate negli screenshot molto più spesso di quanto vengano rubate dal disco.
- Una password che hai scritto tu in chiaro continua a funzionare. nzbfast legge entrambe le forme, quindi le configurazioni modificate a mano e le importazioni da altri client non si rompono mai; al salvataggio successivo scrive la forma offuscata.
- Il file viene inoltre scritto leggibile solo dall'account che esegue nzbfast (modo 0600 su macOS e Linux).
Per confronto, NZBGet e SABnzbd conservano entrambi le password dei provider in testo leggibile nei loro file di configurazione. Riteniamo che l'offuscamento sia un piccolo miglioramento rispetto a questo, non una funzione di sicurezza.
Perché non il portachiavi di sistema? Il portachiavi di macOS, Gestione credenziali di Windows e i servizi di segreti di Linux darebbero una protezione vera, e potremmo tornarci. Oggi ce lo impediscono due cose. L'accesso al portachiavi è legato all'identità dell'applicazione, e nzbfast non è ancora firmato, quindi le richieste e il comportamento dopo ogni aggiornamento sono pessimi. E una quota ampia delle installazioni è Docker, server senza schermo e NAS, dove un portachiavi non esiste affatto: resterebbero due percorsi di archiviazione diversi da tenere corretti. Un unico formato ben compreso che si comporta allo stesso modo ovunque è, per ora, il compromesso migliore.
Altre due opzioni per server non hanno ancora un controllo nella dashboard:
aggiungile a mano nella voce di quel server dentro config.local.json
(vedi §17) e riavvia.
| Chiave | Note |
|---|---|
bind_ip | Lega le connessioni in uscita di questo server a un indirizzo locale preciso, per macchine con più uscite e tunnel VPN divisi. La famiglia di indirizzi sceglie anche la famiglia di destinazione: un bind v4 si collega all'indirizzo v4 del server. |
socks5 | Manda il traffico NNTP di questo server attraverso un proxy SOCKS5: host:port, oppure user:pass@host:port. Il nome host viene risolto dal proxy, quindi nessuna fuga DNS locale. |
- La spunta accanto a ogni server è il suo interruttore: spuntata, il server è nel pool di download; non spuntata, è disattivato. Un server disattivato mantiene credenziali e impostazioni e resta testabile; semplicemente non gli vengono mai chiesti articoli. La sua riga si attenua, il conteggio nell'intestazione (2 di 3 attivi) cala e la modifica vale dal download successivo. Comodo per tenere a riposo un account a blocchi che stai risparmiando, o per dimostrare che un provider è all'origine di un problema senza cancellarlo.
- Prova connessione esegue una connessione reale + TLS + login e riporta il tempo di andata e ritorno.
- Importa da SABnzbd / NZBGet… scansiona le consuete posizioni d'installazione, mostra cosa ha trovato e copia i server (saltando i duplicati).
- Le modifiche ai server valgono dal prossimo download - nessun riavvio.
9 · Guida alle impostazioni
Quasi tutto è configurabile dalla dashboard, sotto ⚙ Impostazioni; le quattro
eccezioni sono elencate in fondo a questa sezione. I valori marcati
live si applicano subito, quelli
restart al lancio successivo. Ogni modifica fatta qui
viene salvata in settings.json e sopravvive ai riavvii (i valori
dell'interfaccia battono le opzioni da riga di comando).
Velocità e pianificazione live
| Impostazione | Cosa fa |
|---|---|
| Limite di velocità | Tetto in byte/sec (50M, 1G, 0 = illimitato). Le app remote possono inviare percentuali - imposta la Velocità della linea perché vengano tradotte correttamente. |
| Velocità automatica | Tetto governato dall'RTT che cede il passo al resto del traffico di casa e si riespande quando la linea è tranquilla. |
| Rinvio automatico dei download lenti | Un job bloccato su un server lento mentre altri attendono viene spostato in fondo alla coda (avanzamento conservato). Vedi §13. |
| Prefetch sui server inattivi | I server inutili al job attivo avviano il prossimo in coda. Vedi §13. |
| Aggiornamento automatico / URL di controllo aggiornamenti | Vedi §14. |
| Velocità della linea | La velocità nominale della tua connessione - abilita i limiti percentuali dalle app compatibili SABnzbd. |
| Pianificazione settimanale | Editor a righe per regole settimanali: pausa, ripresa o limite di velocità in giorni e orari dati (ora locale). Es.: limita a 20 MB/s nei feriali 9–17, illimitato altrimenti. |
Prossimo download live
Connessioni (per server), finestra (profondità di pipelining per connessione), thread di decodifica (decodifica in parallelo). Campionati all'avvio di ogni job. I valori predefiniti vanno bene per la maggior parte delle linee; usa gli strumenti di ottimizzazione prima di alzare alla cieca.
Controllo durante lo scaricamento sceglie quanto viene verificato mentre i dati arrivano. Completo conferma ogni blocco PAR2 con MD5. Rapido (il predefinito) rivendica i blocchi tramite CRC32, che è 2-3x più veloce su una CPU lenta, e verifica comunque il checksum proprio di ogni articolo. Ridotto salta anche quei checksum degli articoli quando PAR2 copre un file: il danno emerge un attimo dopo, al suo blocco. In tutti e tre la passata finale e ogni riparazione usano MD5 completo, e uno scaricamento senza file PAR2 mantiene i checksum degli articoli.
Disco e quota live
Spazio libero minimo (sotto la soglia i nuovi job vanno in pausa; 2 GB per impostazione predefinita, 0 lo disattiva), quota di download per giorno o mese (UTC; i job Forza la ignorano), budget di memoria - la dotazione di RAM del motore (default: ¼ della RAM, con limiti; alzalo su una macchina con molta RAM per la velocità massima sui job enormi, e vedi quanto costa poca memoria prima di abbassarlo) riavvio.
Sposta i completati in: dopo estrazione, pulizia e rinomina, i download
completati vengono spostati qui - una condivisione NAS, un disco multimediale,
ovunque viva la tua libreria. La struttura delle categorie è mantenuta (un job
terminato sotto tv/ arriva sotto tv/ a destinazione) e
la cronologia segue lo spostamento, così le app collegate importano ed eliminano
nella nuova posizione. Se la destinazione non è raggiungibile quando un job
termina (condivisione offline, spazio esaurito), i file restano nella cartella di
download e il job si completa comunque normalmente. Vuoto = disattivato. Le
Destinazioni per categoria dirottano categorie specifiche altrove
(tv=/Volumes/NAS/TV, movies=/Volumes/NAS/Movies); ogni percorso elencato è la cartella di quella categoria,
quindi al suo interno non viene creata alcuna sottocartella di categoria
aggiuntiva. Le categorie non elencate seguono Sposta i completati in.
Profondità degli archivi annidati (predefinita 5) è quanti strati di archivio-dentro-archivio vengono estratti automaticamente: un set RAR che contiene un 7z che contiene un altro RAR è normale su Usenet, e nzbfast segue la catena senza una seconda passata. Al limite l'archivio più profondo viene semplicemente lasciato dov'è, non estratto oltre, e il download si completa lo stesso. Alzala solo per release insolitamente profonde.
Rinomina automatica e pulizia live
Rinomina i download completati (attiva per impostazione predefinita) dà alla
cartella e al file principale un nome pulito e informativo: un film diventa
Example Movie (2024), le serie mantengono Show - S01E02. I
nomi offuscati o non riconosciuti restano esattamente come sono stati postati, senza
tentativi di indovinare.
| Impostazione | Cosa fa |
|---|---|
| Includi risoluzione | Aggiunge 1080p, 2160p… al nome. Attiva per impostazione predefinita; gli altri quattro contrassegni sono spenti. |
| Includi codec video | x265, x264, AV1… |
| Includi codec audio | Atmos, DTS-HD, AC3… |
| Includi sorgente | BluRay, WEB, REMUX… |
| Includi gruppo di release | Il contrassegno -GROUP alla fine. |
| Rimuovi i file spazzatura | Attiva per impostazione predefinita. Elimina .par2, .nzb, .sfv, .nfo residui e le clip di anteprima dalle cartelle film e serie completate. Mai il video o i suoi sottotitoli. |
| Conserva solo il file multimediale | Spenta per impostazione predefinita, e distruttiva: elimina definitivamente tutto nella cartella tranne il video (o i video) e i sottotitoli. Ogni episodio di un pacchetto stagione viene mantenuto. Prevale su Rimuovi i file spazzatura quando sono attive entrambe. |
| Keep the other words in the name | Attivo per impostazione predefinita. Sport, gare e altri eventi sono spesso un unico titolo ripetuto per tutta la stagione, a una o due parole di distanza - "Round11 Hungary Race" contro "Round11 Hungary Qualifying". Tenere quelle parole è ciò che impedisce a un'intera stagione di collassare sullo stesso nome. Si applica solo dove il nome non poteva essere sistemato in altro modo, quindi film ed episodi ordinari restano intatti. |
L'intero gruppo agisce dopo riparazione ed estrazione e prima di Sposta i completati in, ed è saltato del tutto per un lavoro ancora in attesa di password. Entrambi i passi di cancellazione valgono solo per release riconosciute come film o serie: un payload software o un set non classificabile (offuscato) non viene mai ripulito.
I file eliminati vanno nel Cestino decide che cosa significa "eliminare" qui sopra. Con l'opzione attiva, la pulizia sposta i file nel Cestino di sistema, così una scelta sbagliata su cosa fosse spazzatura si può annullare; con l'opzione spenta vengono eliminati definitivamente. È attiva per impostazione predefinita su macOS e Windows, dove il Cestino è un posto che puoi vedere e svuotare, e spenta per impostazione predefinita su Linux, dove di solito non lo è.
.Trash-1000 (il numero è il tuo
id utente) in cima al disco dei download e spostano lì i file. Niente ti mostra
quella cartella, niente la svuota, e lo spazio che occupa non torna mai indietro.
Se hai usato una versione precedente di nzbfast su Linux con questa opzione attiva, cerca quella cartella alla radice della tua condivisione dei download. Puoi svuotarla senza rischi: tutto ciò che contiene è un file che la pulizia aveva già deciso che non volevi. nzbfast non la svuoterà per te, perché sta sul tuo disco e il giudizio spetta a te.
Cartelle ed elaborazione
Cartella di download riavvio, cartella monitorata,
script di post-elaborazione (eseguito dopo ogni job con argomenti compatibili
SABnzbd e ambiente SAB_* - gli script SAB esistenti funzionano senza
modifiche), estensioni da ripulire (file spazzatura eliminati a job
completato), Cartelle smart e archiviazione TV (vedi
§10).
Conserva i .nzb dopo il prelievo (disattivato per impostazione
predefinita) lascia il file .nzb originale nella cartella monitorata
dopo l'accodamento, invece di spostarlo nel Cestino - per i collezionisti, e per
consegnare il file a qualcuno quando un download dà problemi. Un file conservato
viene ricordato, anche dopo un riavvio, e non viene riaccodato; salvalo di nuovo
per scaricarlo ancora. Qualunque cosa tu scelga, il pannello di ogni job ha un
pulsante Scarica il .nzb, quindi una copia del .nzb di
qualsiasi job non è mai a più di un clic di distanza.
Indicizzazione live
| Impostazione | Cosa fa |
|---|---|
| Indicizzatore integrato | L'interruttore principale, spento finché non lo accendi. Spento significa nessuna scansione, nessuna ricerca di metadati, nessun campionamento di disponibilità e nessun feed newznab; un indice già su disco viene conservato (c'è un pulsante per cancellarlo), quindi riaccendere riprende invece di riscansionare. |
| Gruppi | I newsgroup che l'indexer integrato scansiona (es. alt.binaries.teevee). |
| Intervallo di scansione | Secondi tra una passata e l'altra (default 900). |
| Articoli di backfill | Header recuperati alla primissima scansione di un gruppo. |
| Approfondimento per scansione | Ogni passata indicizza anche questo numero di articoli più vecchi, ampliando in background lo storico ricercabile fino a raggiungere l'Età massima (default 200.000 per passata ≈ decine di milioni di articoli per giorno di attività). |
| Età massima | Ignora i post più vecchi di così (90d, 6m, 2y) - contiene la dimensione dell'indice e i tempi di scansione. |
| Limita alla finestra di età | Attiva per impostazione predefinita. Elimina anche le release già memorizzate quando superano l'età massima, così l'indice tiene all'incirca quella finestra invece di crescere all'infinito. Spenta = vengono filtrati solo i post nuovi e ciò che è memorizzato resta. I frammenti morti (nascosti, ancora incompleti dopo una settimana) vengono raccolti in ogni caso. |
| Filtri di ingresso | Regole JSON che filtrano cosa entra nell'indice: tipi (la spazzatura offuscata viene scartata di default), anno/risoluzione/lingua, limiti di dimensione. |
| Scansiona ora / riscansione profonda | Esegue subito una passata; con una profondità, riscansiona quel numero di header recenti. |
| Chiave OMDb / aggiornamento metadati / azzeramento | Controlli di arricchimento della bacheca (§6). Azzera ricostruisce il database da zero - la via di recupero se mai dovesse corrompersi. |
| Feed dei pre | Spento finché non lo accendi. Molti caricamenti vengono pubblicati senza il nome, e una scansione non ha nulla da leggere. Canali relay pubblici annunciano il nome vero, l'unica via aperta per ricondurre quei post. Accenderlo tiene aperta una connessione a una rete IRC e ascolta: non viene mai inviato nulla e non si crea alcun account. Richiede l'indicizzatore acceso, perché un feed senza dove riporre ciò che sente è solo un socket aperto per niente. |
| Server relay, Canali relay | La rete IRC che porta gli annunci (host o host:porta) e i canali da ascoltare, separati da virgole. Una modifica ha effetto alla connessione successiva: spegni e riaccendi il feed per applicarla subito. |
| Assegna il nome per correlazione | I relay pubblici dal vivo non portano nomi di file, quindi la maggior parte dei post offuscati non si può ricondurre direttamente. Quello che un annuncio fissa è quando una release è comparsa e quanto è grande. Questo confronta ora e dimensione annunciate con i post senza nome e, quando combaciano, propone il nome vero in Sfoglia. Un suggerimento è segnalato come tale, richiede il tuo clic e non rinomina mai file su disco. |
| Applica automaticamente le corrispondenze forti | Spento per impostazione predefinita, e severo quando è acceso: la dimensione deve combaciare strettamente, nessun altro annuncio deve adattarsi quasi altrettanto bene, e l'annuncio deve riscegliere questo post nella verifica inversa. Un nome applicato cambia solo come la release viene mostrata, è marcato come dedotto e si ritira da solo se un download concluso lo smentisce. Tutto ciò che è più debole resta un suggerimento. |
| Storico degli annunci | Il feed dal vivo sente solo gli annunci successivi all'accensione. Questo recupera circa sei mesi di annunci passati da un database pre pubblico, con garbo e una volta sola, così anche i post già indicizzati possono essere ricondotti. Gira in background per una mezz'ora circa. |
Libreria, Sicurezza, Interfaccia
Libreria: categorie trattate come voci di libreria istantanee + intervallo di ricontrollo. Sicurezza: la chiave API completa (tutto) e la chiave NZB (solo inserimento - sicura da dare ai siti indexer), entrambe ruotabili a caldo. Ciascuna casella sostituisce la chiave a cui appartiene appena esci dal campo, e lasciarne una vuota mantiene la chiave che ha già. La chiave API ha inoltre Show, che mostra e copia la chiave in uso perché tu la incolli in Sonarr, Radarr o NZB360 quando ti fa comodo, e Create new, che ne conia una sostitutiva - la vecchia smette di funzionare subito, quindi tutto ciò che è già collegato va aggiornato con la nuova. Entrambe dipendono dalla chiave API stessa: la chiave NZB di solo inserimento non può leggerla, che è esattamente il senso di quella chiave. Per sapere da dove viene la chiave su un'installazione nuova, vedi §2. Interfaccia: suoni dei clic, notifiche desktop a fine download, intervallo di riordino dei provider.
Unità di velocità live decide come viene mostrata ogni velocità nella dashboard: megabyte (MB/s, la norma dei download manager, il valore predefinito) o megabit (Mb/s, come gli ISP dichiarano le linee). Le dimensioni dei file restano in byte. È una proprietà del daemon, non del tuo browser, quindi vale per ogni dispositivo che guarda questa installazione.
Avanzate: le manopole dietro a quelle ovvie
Sei impostazioni senza opzione da riga di comando. Ognuna ha ora una riga avanzata
sulla scheda di impostazioni che la possiede, e resta impostabile dall'API
(§16), ad es.
/api?mode=config&name=verify_mode&value=lean&apikey=…. Come
tutte le altre finiscono in settings.json.
| Nome | Cosa fa |
|---|---|
verify_mode | full | fast | lean (predefinito fast). lean è la spinta per CPU lente: come fast, ma salta anche il CRC yEnc per articolo non appena PAR2 copre un file, lasciando uno strato di CRC32 invece di due. I download senza PAR2 mantengono i CRC degli articoli, e la verifica e la riparazione di fine lavoro non cambiano in nessun caso. Il selettore Controllo durante lo scaricamento qui sopra è questa impostazione. |
auto_retry_mins | Attesa prima dell'unico ritentativo automatico concesso a un primo fallimento con articoli mancanti (predefinito 20). Il ritardo di propagazione è una causa reale di articoli mancanti e si risolve da sé; grazie al journal la ripetizione recupera solo ciò che manca ancora. I fallimenti per password o rimozione non rientrano mai. |
index_scan_par | Quanti gruppi l'indicizzatore analizza in parallelo (predefinito 3, limitato a 1-8). |
oracle_sample | Budget di STAT a riposo dell'oracolo di disponibilità (§13), sonde all'ora per server. Predefinito 300, massimo 3600, 0 disattiva del tutto il campionamento. |
predb_max_rows | Quanti annunci pre conserva la tabella del feed (predefinito 250000, limitato a 10000-5000000). La pulizia oraria riduce a questo numero e l'importazione storica si rifiuta di partire se lo supererebbe, così un'importazione non aggiunge mai righe che la pulizia successiva cancella. |
predb_seed_days | Quanto indietro arriva un'importazione storica avviata senza una finestra propria (predefinito 180 giorni, massimo 366). Una finestra più ampia significa più richieste alla sorgente pre, cadenzata a una ogni due secondi. |
10 · Automazione
Watchlist
L'automazione più semplice: aggiungi un titolo sulla dashboard, imposta le preferenze di qualità, fatto. Le nuove release vengono prelevate appena compaiono nei tuoi gruppi indicizzati; le copie di qualità migliore fanno l'upgrade dei prelievi precedenti; una vista calendario mostra cosa sta per arrivare.
Feed RSS
Impostazioni → RSS: qualsiasi URL RSS newznab/indexer, con intervallo, categoria e regole di filtro per feed (pattern sul titolo, limiti di dimensione). Gli elementi corrispondenti vengono scaricati automaticamente.
Cartelle smart
Regole valutate all'aggiunta di un job: corrispondenza per pattern/parole chiave
e dimensione, assegnazione di una categoria (vince la prima corrispondenza). Con
l'archiviazione TV attiva, gli episodi TV finiti vengono rinominati e
archiviati come Show/Season 01/Show - S01E02.mkv -
pronti per Plex/Jellyfin senza strumenti esterni.
Pianificatore
La pianificazione settimanale (vedi §9) automatizza pausa/ripresa/velocità in base all'ora del giorno.
Script
Uno script di post-elaborazione riceve gli argomenti posizionali di SABnzbd e le
variabili d'ambiente SAB_* - il vasto ecosistema di script SAB gira
così com'è.
11 · Sonarr, Radarr e compagnia
nzbfast parla nativamente l'API di SABnzbd, quindi ogni *arr funziona senza configurazioni particolari - e può fare anche da loro indexer.
Come client di download
- In Sonarr/Radarr: Settings → Download Clients → aggiungi SABnzbd.
- Host: la macchina con nzbfast · Porta: 6789 · chiave API: la tua chiave API completa (dove trovarla: §2).
- Categoria a piacere (es.
tv/movies). Test → spunta verde → Save.
Coda, storico, stato per job, "rimuovi ed elimina", riprova e instradamento per categoria si comportano tutti come i vari *arr si aspettano.
Come indexer (newznab)
- Settings → Indexers → aggiungi Newznab.
- URL:
http://<host>:6789/· percorso API:/api· chiave: la tua chiave API. - nzbfast serve le query
caps,search,tvsearchemoviedal proprio indice dei tuoi gruppi osservati, e/getnzb/<id>restituisce l'NZB.
<error code="101"> invece che con un
risultato vuoto, così un errore si vede quando aggiungi l'indicizzatore e non settimane
dopo.Perché farlo? Un indicizzatore auto-ospitato esattamente dei gruppi che ti interessano: niente account, niente limiti di chiamate API, retention profonda quanto gli lasci scansionare. È un'aggiunta ai tuoi indicizzatori abituali e non un sostituto, perché trova solo ciò che è stato postato con un nome di file reale.
12 · Telefono e app remote
nzbfast implementa entrambi i principali protocolli di controllo remoto, quindi quasi ogni app per telefono/tablet funziona. Scegli il protocollo che la tua app supporta:
App che parlano NZBGet (nzb360, LunaSea, NZB Unity…)
| Campo nell'app | Valore |
|---|---|
| Tipo | NZBGet |
| Host / porta | la tua macchina : 6789 |
| Nome utente | qualsiasi (es. nzbfast) |
| Password | la tua chiave API |
Viene servita l'intera superficie JSON-RPC usata da queste app: stato, coda con riordino/pausa/eliminazione, storico, aggiunta di NZB, limite di velocità, pausa/ripresa, log.
App che parlano SABnzbd
| Campo nell'app | Valore |
|---|---|
| Tipo | SABnzbd |
| Host / porta | la tua macchina : 6789 |
| Chiave API | la tua chiave API (o la chiave NZB per l'accesso di solo inserimento) |
La dashboard sul telefono
Basta aprire http://<machine>:6789 in un browser mobile -
dashboard e bacheca hanno un layout touch completo. Il pannello Impostazioni →
Accesso remoto mostra gli URL esatti e un codice QR da inquadrare.
Raggiungere nzbfast da fuori casa
Non esiste una pagina di accesso, ed è una scelta voluta. Un login con cookie di sessione è una superficie di sicurezza da mantenere per sempre, e resterebbe comunque la serratura più debole di qualunque cosa esposta su Internet. nzbfast si autentica invece con la tua chiave API, e accetta quella chiave sia in un'intestazione della richiesta sia nell'URL (X-Api-Key, oppure Authorization: Bearer) - ed è proprio questo che permette a un servizio davanti a lui di gestire l'accesso come si deve.
La risposta più semplice è non pubblicarlo affatto. Installa Tailscale su questa macchina e sul telefono: entrambi entrano nella stessa rete privata, non viene esposto nulla, non servono modifiche al router né certificati, e Impostazioni → Accesso remoto mostra un indirizzo che funziona ovunque non appena rileva Tailscale. Preferisci questa strada se non ti serve espressamente un dominio pubblico.
Se ti serve davvero, metti davanti un reverse proxy, affidagli il certificato e lascia che sia lui a fare l'autenticazione. Avvia nzbfast con --bind 127.0.0.1 in modo che il proxy sia l'unica via d'ingresso, e punta il proxy a 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;
}
Aggiungi sopra quello che offre il tuo proxy: autenticazione basic, un servizio di forward-auth come Authelia o Authentik, oppure certificati client. Una cosa frega tutti - Sonarr, Radarr e le app per telefono non possono completare un login da browser, quindi lascia loro una via. Quasi tutti i proxy sanno far passare una richiesta con un'intestazione X-Api-Key valida e chiedere l'autenticazione per tutto il resto.
13 · Strumenti per le prestazioni
Benchmark di sistema
Un clic misura i tuoi tre tetti - velocità di rete (una vera sonda multi-connessione di 8 secondi), velocità di verifica della CPU e velocità di scrittura su disco - e apre con la risposta: la velocità di download massima che puoi aspettarti e quale tetto è il limite. La barra più corta è il tuo collo di bottiglia; le altre mostrano il loro margine. Programmalo (da ogni 6 ore a settimanale) e ogni esecuzione finisce in una tabella storica, così vedi quando provider, ISP o hardware hanno cambiato comportamento. Le esecuzioni pianificate avvengono solo a coda inattiva.
Ottimizzazione connessioni
Misura un provider a numeri di connessioni crescenti e consiglia l'impostazione - più socket aiutano finché il provider o la tua linea non saturano, e alcuni provider puniscono chi chiede troppo. Testa tutti confronta ogni provider, poi li lancia tutti insieme per verificare che il pool saturi la tua linea.
Diversità dei server
Campiona con STAT articoli di varie età su ogni server e raggruppa i provider per lacune condivise: provider con ~100% di articoli mancanti in comune sono lo stesso backbone (ridondante per il recupero); quelli indipendenti estendono davvero la tua copertura. Chiude con una raccomandazione in linguaggio semplice.
Intelligenza automatica della coda
- Rinvio automatico: un download che arranca su un unico server lento mentre altri job attendono viene parcheggiato in fondo (il journal ne conserva l'avanzamento) e ritentato quando la coda è libera.
- Prefetch sui server inattivi: i server che non possono aiutare il job attivo (le loro copie sono sparite) iniziano intanto a scaricare il job successivo in coda. Nessun altro client sovrappone job diversi.
- Staffetta tra job: mentre la fase finale di un job concluso (verifica/estrazione) si completa su disco, il download del job successivo possiede già la linea.
L'oracolo di disponibilità
Le rimozioni sono il motivo principale per cui un download Usenet fallisce, e sono prevedibili: la stessa release sparisce da un backbone mentre un altro ce l'ha ancora. nzbfast tiene un piccolo registro di ciò che i tuoi provider hanno davvero servito e spende un budget minimo di sonde STAT a riposo (qualche centinaio all'ora per server, mai durante un download) per tenerlo aggiornato. Per farlo non scarica mai payload.
Cosa ne ricavi:
- Un verdetto di disponibilità sulle schede del muro e sulle righe dell'indice (§6): «?» ambra per incerto sui tuoi provider, rosso per sicuramente perso. Nessun segno significa che sembra a posto.
- Un distintivo ripulito sui gruppi in cui i post recenti vengono già rimossi, così distingui un gruppo che muore da una release sfortunata.
- Salta i provider che l'oracolo dà per persi (Impostazioni, spenta per impostazione predefinita, sperimentale): quando il controllo è sicuro che il backbone di un provider ha perso una release, lo salta subito per quel download invece di aspettarne il fallimento. Non salterà mai il tuo ultimo provider rimasto.
Il verdetto è una previsione basata su indizi, non una garanzia. Per una
risposta netta su un NZB, nzbfast check (§15) conta gli
articoli reali.
Budget di memoria - e quanto costa poca memoria
Tutte le cache del motore condividono un unico budget (default ¼ della RAM
fisica, limitato a 256 MB–16 GB). Impostalo esplicitamente con Budget di
memoria nelle Impostazioni, o con --mem-limit da riga di comando.
nzbfast è costruito per saturare rete e disco allo stesso tempo, e la RAM è ciò che gli permette di farlo in una passata: gli articoli vengono decodificati, verificati e scritti dritti ai loro offset finali, così i volumi d'archivio possono non toccare mai il disco. Affamalo di memoria e non si rompe nulla - ogni cache ha una via di sfogo, e il motore ripiega su più I/O su disco invece di andare in swap o fallire. Ma quello sfogo non è gratis, e sui job grandi si misura.
Misurato su una macchina e una linea (M1 Ultra, 10 GbE), stessi file a ogni budget. Ogni esecuzione ha prodotto un risultato corretto, pienamente verificato ed estratto:
| Dimensione job | RAM in abbondanza | Budget 2 GB ≈ macchina da 8 GB | Budget 1 GB ≈ macchina da 4 GB | Budget 256 MB ≈ NAS da 2 GB |
|---|---|---|---|---|
| 7 GB | 15 s | 15 s | 15 s | 15 s |
| 35 GB | 65 s | 70 s | 70 s | 65 s |
| 87 GB | 148 s | 206 s +39% | 196 s +32% | 180 s +22% |
| 190 GB | 330 s | 427 s +29% | 402 s +22% | 411 s +25% |
Il picco di memoria segue il budget, non il job: quel download da 190 GB si completa in circa 1,1 GB di RAM. In cambio paghi tempo - e solo sui job grandi.
- Fino a ~35 GB, poca memoria è gratis. Il working set ci sta comunque, quindi una macchina da 4 GB finisce un job del genere alla stessa velocità di una da 64 GB.
- Oltre ~87 GB paghi il 20–40% - ma solo quando la linea corre più del disco. I blocchi di verifica e i volumi d'archivio che sarebbero rimasti in RAM vengono scritti fuori e riletti, e questo costa tempo solo se la rete consegna più in fretta di quanto il disco riesca ad assorbire il traffico extra. Il 20–40% qui sopra è stato misurato su 10 GbE; lo stesso job da 87 GB agli stessi budget su una linea da ~2,4 Gbps non ha mostrato alcuna penalità (da −1 a +7%, dentro il rumore tra esecuzioni). La penalità dipende da quanto la linea supera il disco, non dalla dimensione del job - su una tipica connessione domestica un budget piccolo è quasi gratis anche su job molto grandi.
- La penalità si appiattisce. Quando un job è abbastanza grande da traboccare, ogni budget stretto trabocca più o meno della stessa quantità - le esecuzioni a 2 GB, 1 GB e 256 MB rileggono in pratica lo stesso numero di blocchi da disco e finiscono a distanza di rumore l'una dall'altra. Un po' di RAM in più, sotto la soglia che evita del tutto il trabocco, non ricompra quindi il costo: dagli abbastanza da tenere il job in memoria, oppure la cifra esatta conta poco.
Su un NAS piccolo, abbassa anche le Connessioni (2–4) insieme al budget. Con un budget di 256 MB e 2 connessioni, il picco di memoria resta intorno a 190 MB - comodamente dentro quel che un NAS da 2 GB ha di riserva. Sappi che a quel punto è il numero di connessioni, non la memoria, a limitarti: lo stesso job da 35 GB ha impiegato 286 s invece di 65 s. È la forma onesta del compromesso - finirà sempre, e finirà correttamente; solo, non saturerà la linea.
I benchmark vengono rieseguiti a ogni release; metodo e cifre per macchina sono pubblicati insieme ai risultati.
14 · Aggiornamenti
- Gli aggiornamenti sono solo notifiche: nzbfast non scarica né sostituisce mai il proprio binario, e non contiene codice in grado di farlo. Quando esiste una nuova versione, l'intestazione mostra ⬆ v X disponibile - scarica; il chip porta alla pagina di download ufficiale (il link è fisso nell'app, non arriva mai dal manifesto degli aggiornamenti). Installa la nuova versione nello stesso modo in cui hai installato quella attuale.
- nzbfast controlla le nuove versioni due volte al giorno. Disattiva Controlla aggiornamenti (Impostazioni) e non contatterà più affatto il manifesto degli aggiornamenti; un URL di controllo vuoto fa lo stesso.
Aggiornare senza perdere le impostazioni
Una sola regola vale per ogni installazione: un aggiornamento sostituisce il programma, mai le tue impostazioni. Tutto ciò che hai configurato - server, percorsi, la chiave API, la coda - vive in una manciata di file dentro un'unica cartella (§17), e nessun installer, pull di immagine o aggiornamento di pacchetto tocca quella cartella. Quando le impostazioni sembrano comunque sparite dopo un aggiornamento, è quasi sempre perché la nuova installazione sta leggendo una cartella diversa, vuota, non perché qualcosa sia stato eliminato; i vecchi file sono ancora dove sono sempre stati. §18 ha i passi per recuperarle.
| Installazione | Come aggiornare |
|---|---|
| App macOS | Apri il nuovo DMG e trascina NzbFast in Applicazioni, sostituendo quella vecchia. La tua cartella dei dati è separata e non viene toccata. |
| Installer Windows | Esegui il nuovo setup sopra l'installazione esistente. La tua cartella dei dati è separata e non viene toccata. |
| Docker (riga di comando) | docker pull nzbfast/nzbfast,
rimuovi il vecchio container, poi avvia quello nuovo con esattamente le
stesse mappature -v. L'immagine è usa e getta; la cartella
/config mappata è la tua installazione. Se il tuo comando di avvio
usa un percorso relativo come -v ./config:/config, eseguilo ogni
volta dalla stessa directory - da qualsiasi altro punto, ./config
è una cartella diversa, vuota. |
| Docker Compose | docker compose pull && docker compose
up -d, con lo stesso file compose nello stesso posto. Il
./config nel file è ancorato alla cartella del file stesso, quindi
lascia il file dov'è. |
| Watchtower | Niente da fare: ricrea il container con le stesse mappature quando esce una nuova immagine. |
| Unraid | Scheda Docker → Check for Updates → Apply
Update. Non aggiornare mai rimuovendo e riaggiungendo l'app; se un giorno
reinstalli davvero, mantieni lo stesso percorso appdata così ritrova il tuo
/config esistente. |
| Synology (Container Manager) | Scarica la nuova immagine, ferma il container e ricrealo con le stesse impostazioni dei volumi - la guida Synology lo spiega clic per clic, compreso come farlo a intervalli pianificati. |
| Synology (pacchetto) | Installa il nuovo .spk in
Package Center; si aggiorna sul posto. |
| Homebrew | brew upgrade nzbfast |
| Binario semplice | Sostituisci il binario. La tua config resta dove l'hai creata (§17). |
-e NZBFAST_APIKEY=…, o nel blocco environment del tuo file compose
o del template Unraid). Una chiave salvata lì sopravvive a qualsiasi incidente
del container, perché vive sull'host, nella definizione, e viene riapplicata a
ogni avvio. Una chiave che imposti più tardi nelle Impostazioni prevale comunque
su di essa.15 · Riga di comando
Tutto ciò che fa il daemon è anche scriptabile. I comandi di tutti i giorni:
| Comando | Scopo |
|---|---|
nzbfast setup | Configurazione interattiva dei server. |
nzbfast serve | Esegue il daemon (dashboard + API + automazione). --open apre il browser; --apikey imposta la chiave a mano (§2); --bind sceglie l'indirizzo di ascolto, predefinito 0.0.0.0 (ogni interfaccia), 127.0.0.1 solo per questa macchina. Vedi --help per l'elenco completo dei flag - ogni impostazione della dashboard ha il suo gemello flag. |
nzbfast get file.nzb | Scarica un NZB, pipeline completa, senza daemon. --preflight interrompe subito se il post non può completarsi; --password per i set cifrati. |
nzbfast check file.nzb | Verdetto di disponibilità - COMPLETE / REPAIRABLE / IMPOSSIBLE - senza scaricare il payload. |
nzbfast verify DIR | Verifica i file contro il set PAR2 in una directory. |
nzbfast sysbench | Il benchmark di sistema + il report di diversità, nel terminale. |
nzbfast index / search | Scansiona gruppi nell'indice / lo interroga, senza daemon. |
nzbfast import-sab | Importa i server da un ini di SABnzbd. |
Disponibili anche: inspect, probe,
bench, bench-cpu, soak, fetch,
spots/spot-search/spot-get (Spotnet),
predb-seed (riempie il database dei pre con il periodo precedente all'accensione del feed),
make-release-nzb/make-test-nzb (fixture di test). Ogni
comando accetta --config e --help. Si aggiunge post: carica file come articoli
yEnc e scrive l'NZB corrispondente. È uno strumento operativo, richiede un
--post-server esplicito e non sceglie mai un server al posto tuo.
16 · Panoramica dell'API
Endpoint di base: http://host:6789/api?mode=…&apikey=…&output=json -
compatibile SABnzbd, quindi le integrazioni SAB esistenti funzionano senza
modifiche. Due chiavi: la chiave API (controllo completo) e la chiave
NZB (solo inserimento: addfile/addurl). addnzblnk non fa parte, di proposito, dell'insieme di sola aggiunta: risolvere un link può consumare quota a consumo presso gli indicizzatori, cosa che a una credenziale di sola aggiunta non compete.
| Area | Modalità |
|---|---|
| Coda | queue (con name=delete/pause/resume/priority/switch), pause, resume, addfile, addurl, addnzblnk, retry, set_password |
| Info | history, status/fullstatus, stats, version, server_stats, usage, log, warnings, più /jobnzb/<nzo_id> (restituisce il .nzb conservato del job, in coda o nello Storico; solo con la chiave API completa) |
| Config | get_config, config&name=<setting>&value=… (ogni campo delle Impostazioni), server_save/delete/test/enable/reorder, import_probe/apply |
| Indice e bacheca | index_search, index_get, index_stats, index_scan_now, wall, wall_search/fix/refresh/art, più newznab su /api?t=caps|search|tvsearch|movie e /getnzb/<id> |
| Automazione | watchlist, watchlist_check_now, watch_calendar, feeds, smart_folders, schedule |
| Diagnostica | sysbench, bench_history, connladder, pooltest, diversity, update_check, update_apply |
| NZBGet JSON-RPC | /jsonrpc - status, listgroups, history, append, editqueue, rate, pause, log (Basic auth: utente qualsiasi, chiave API come password) |
| Anteprima / riproduzione | /stream/<nzo_id> (range HTTP; avviare un job di libreria parcheggiato richiede il token ?t= o la chiave), /m3u/<id> (richiede la chiave; conia il token), /wall, /art/… |
17 · File e percorsi
Dove si trova la cartella delle impostazioni dipende da come nzbfast è stato installato. Questa sola cartella contiene tutto ciò che merita un backup:
| Installazione | Cartella delle impostazioni |
|---|---|
| App macOS | ~/Library/Application Support/nzbfast/ |
| Windows | %LOCALAPPDATA%\nzbfast\ |
| Docker / container NAS | /config dentro il container,
cioè la cartella dell'host che ci hai mappato sopra. Su Unraid è la cartella
appdata dell'app. |
| Pacchetto Synology | /var/packages/nzbfast/var/ |
| Terminale | La cartella in cui hai eseguito
nzbfast setup, o dove puntano --config /
$NZBFAST_CONFIG. |
E cosa c'è dentro:
| File | Contenuto |
|---|---|
config.local.json | Credenziali dei server e opzioni per server. Creato dalla procedura guidata; modificabile nelle Impostazioni. Tienilo privato. Le password sono offuscate, non cifrate. |
settings.json | Ogni impostazione cambiata dalla dashboard. Sta accanto al config; i valori dell'interfaccia prevalgono sui flag da riga di comando. Elimina una chiave (o il file) per tornare a flag e valori predefiniti. |
apikey | La chiave API che nzbfast si è creata da sé a un primo avvio (§2). Sta accanto al config; su macOS e Linux è leggibile solo dall'account che esegue nzbfast. Non eliminarlo per ottenere una chiave nuova: su un'installazione che ha già girato non la rimpiazza nulla e il daemon torna su senza alcuna chiave. Impostane invece una nuova in Impostazioni → Sicurezza. |
index.db | L'indice delle release (SQLite) + i metadati della bacheca. Si può eliminare senza rischi - si ricostruisce con la scansione (Impostazioni → Indicizzazione → Azzera lo fa per te). |
<config>/.spool/ | Stato della coda (sopravvive ai riavvii), NZB per job, registro dei consumi, storico dei benchmark, cache delle copertine. |
| Journal degli articoli | Dentro la cartella di output di ogni job finché incompleto - alimenta la ripresa dopo crash e Riprova. Rimosso a successo avvenuto. |
| Strumenti esterni | Nessuno necessario - l'estrazione RAR e la riparazione PAR2 sono native. Se un set esotico dovesse mai richiedere un unrar o par2 esterno come ripiego, nzbfast cerca accanto al proprio eseguibile, poi nel $PATH. |
18 · Risoluzione dei problemi
| Sintomo | Da controllare |
|---|---|
| Download lenti | Esegui il Benchmark di sistema - nomina il collo di bottiglia senza giri di parole. Se è la rete: esegui Ottimizzazione connessioni, controlla le connessioni per server e verifica che i tuoi provider non siano tutti sullo stesso backbone (Diversità dei server). |
| Lento solo sui job molto grandi (NAS o macchina con poca RAM) | Atteso, e misurabile: un budget di memoria affamato riversa le cache su disco e costa il 20–40% oltre ~87 GB. Vedi Budget di memoria per le cifre e per quanta RAM dargli. I job più piccoli non ne risentono. |
| Il download fallisce con "articles missing" | Il post è scaduto o è stato rimosso presso i tuoi provider. Un secondo provider su un backbone diverso salva la maggior parte di questi casi. nzbfast check lo predice prima di scaricare. E il muro segnala in anticipo quelle probabilmente sparite con il suo punto
di disponibilità (§13). Un primo fallimento di questa forma si
ritenta da solo una volta dopo un'attesa, perché il ritardo di propagazione ha lo stesso
aspetto e si risolve da sé. |
| L'archivio finito chiede una password | La riga dello Storico mostra 🔑 - inserisci lì la password; il job si completa sul posto. |
| Un archivio non si estrae | Gli errori di password e di riparazione si presentano da soli nella riga dello Storico. Per tutto il resto c'è una via d'uscita: Impostazioni → Cartella monitorata e post-elaborazione → Estrai con unrar esterno (un'impostazione avanzata) affida l'estrazione al programma unrar installato sulla tua macchina invece che all'estrattore integrato. Altrimenti lascialo disattivato: il percorso integrato è più veloce su ogni forma che abbiamo misurato, e i post offuscati con nomi hash lo usano comunque sempre, perché unrar non può seguire la loro rinomina. Lo stesso interruttore per le esecuzioni di nzbfast get è la variabile d'ambiente NZBFAST_NO_NATIVE_UNRAR=1. Se unrar estrae un archivio che l'estrattore integrato ha rifiutato, segnalacelo così possiamo correggere il percorso integrato. |
| Sonarr/Radarr non si collega | La porta 6789 è raggiungibile? Chiave API corretta (chiave completa, non chiave NZB)? Tipo di client impostato su SABnzbd? |
| La dashboard chiede una chiave API che non ho mai impostato | Una nuova installazione se ne crea una da sé e la stampa una volta all'avvio (§2). Sta nel file apikey accanto al tuo config, e nell'output di avvio. Oppure scrivi una chiave tua in Impostazioni → Sicurezza da un browser già autenticato. |
| Tutte le mie impostazioni sembrano sparite dopo un aggiornamento (server, percorsi, chiave API) | Niente in un aggiornamento elimina le impostazioni; significa che nzbfast sta leggendo una cartella diversa, vuota. Per prima cosa: il campo della chiave API nelle Impostazioni appare vuoto di proposito - clicca Show prima di concludere che è persa. Su Docker, confronta la mappatura /config del nuovo container con quella del vecchio: un percorso host cambiato, un percorso relativo eseguito da un'altra directory o una cartella appdata nuova fanno tutti ripartire nzbfast da zero mentre le tue impostazioni vere restano intatte al percorso precedente. Trova la vecchia cartella (cerca settings.json, il tuo file di config e apikey - i percorsi sono in §17), poi ripunta la mappatura su di essa oppure copia quei file nella nuova cartella e riavvia. Il log di avvio nomina il file di impostazioni esatto in uso: [settings] applying saved settings from … |
| Niente sulla rete riesce a raggiungere il daemon | Controlla --bind: 127.0.0.1 serve solo la macchina su cui gira nzbfast. Il predefinito, 0.0.0.0, serve ogni interfaccia. Poi controlla il firewall della macchina stessa per la porta 6789. |
| La scheda Sfoglia resta piccola | L'indexer cresce in background - controlla che i gruppi in Impostazioni → Indicizzazione siano impostati, e dai all'Approfondimento per scansione il tempo di accumulare storico. "Scansiona ora" forza una passata; la riga di stato mostra l'avanzamento in tempo reale. |
| La bacheca mostra copertine sbagliate o assenti | Scheda di dettaglio → ✎ Correggi corrispondenza o ↻ Aggiorna metadati. Le ricerche dei film migliorano con una chiave OMDb gratuita. |
| macOS dice che l'applicazione "nzbfast" non può essere aperta | Due cause, entrambe rapide. Se usi lo zip semplice -macos-universal.zip, fai doppio clic su Start nzbfast.command, non sul file nzbfast accanto: quello è il programma vero e proprio, e il Finder risponde a un doppio clic con esattamente questo messaggio. È il launcher che prepara tutto e avvia. Se lo stesso messaggio arriva anche dal launcher, la copia ha perso il bit di esecuzione Unix per strada: macOS conserva quel bit dentro lo .zip, ma le app di chat, i dischi cloud e un nuovo zip no, quindi una copia passata a mano arriva non eseguibile. Scarica il .dmg o lo .zip direttamente dalla pagina delle release e non succede. Per recuperare la copia che hai già: apri il Terminale, scrivi chmod +x con uno spazio finale, trascina Start nzbfast.command e il file nzbfast sulla finestra e premi Invio, poi fai di nuovo doppio clic sul launcher. |
| Il daemon non parte: porta occupata | C'è un'altra istanza in esecuzione - oppure cambia --port. |
| Dove sono i log? | Nella scheda Log della dashboard, o nel terminale/file di log con cui hai lanciato serve. |
nzbfast --version.nzbfast - questo manuale accompagna ogni release. Impostazioni, endpoint e valori predefiniti citati qui corrispondono alla versione con cui è stato distribuito.