IT

Inizializzazione

Under review — wording may still change.

warden init trasforma un binario nudo in uno scaffold funzionante — utente di sistema, directory e un primo config.toml — con un solo comando.

Ogni guida di installazione lo esegue già per te, come uno dei tanti passi. Questa pagina è dedicata al comando in sé: cosa crea, cosa chiede, e cosa fare quando si rifiuta.

Cosa crea

Eseguito senza --config, warden init predispone il layout storico:

CosaDove
Utente di sistemapurge-warden — nessuna shell di login, nessuna home
Radice dello stato/var/lib/purge-warden/
Liste scaricate/var/lib/purge-warden/lists/
Snapshot statistiche/var/lib/purge-warden/data/
Socket di controllo + PID/run/purge-warden/
Config master/var/lib/purge-warden/config.toml — scritto solo se assente, o se passi --force

Passa --config <percorso> e ognuno di questi si sposta con il percorso indicato — directory, socket e master. Fonte: src/cli/commands/init/mod.rs (InitLayout::for_config).

Il default senza flag non è dove warden cerca per primo in seguito
Senza --config, i comandi successivi risolvono il master in quest’ordine: ./config.toml$XDG_CONFIG_HOME/purge-warden/config.toml/etc/purge-warden/config.toml/var/lib/purge-warden/config.toml (legacy). Un warden init nudo scrive proprio quest’ultimo percorso legacy — quindi un /etc/purge-warden/config.toml rimasto da qualcos’altro nasconde il file appena scritto da init, e ogni comando successivo legge il file sbagliato. warden config show dopo init conferma quale sia quello live. Vedi il riferimento CLI per l’ordine di risoluzione completo.

warden init richiede root, e si rifiuta subito se non viene eseguito come root: warden init requires root. Run with sudo.

Eseguirlo

Ci sono due modalità: rispondere a quattro domande, o saltarle tutte con --yes e flag per singola voce.

Interattivo

Senza --yes, init fa quattro domande in quest’ordine — resolver upstream, profilo default, sottoscrizioni blocklist, reti client consentite — e ognuna accetta un Invio a vuoto per il proprio default:

sudo warden init
$ sudo warden init upstream resolver: 1) 10.10.1.1:53 (detected on this machine) 0) other — type addr:port, comma-separated for several choice [1]: default_profile for unmapped sources (press Enter for "default", or type "none" to REFUSE): blocklist subscriptions (comma-separated; press Enter for all three defaults: security/malicious, privacy/ads, privacy/tracking): allowed client networks (comma-separated CIDRs; press Enter for RFC1918 + loopback: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 127.0.0.0/8): created /var/lib/purge-warden/config.toml

Il menu upstream elenca ciò a cui punta già il /etc/resolv.conf di questa macchina (o, in mancanza, resolvectl status), più eventuali voci da un file upstreams.toml accanto alla config — nessun comando lo scrive per te; lo crei a mano se vuoi un menu curato. Scegliere 0 permette di digitare un indirizzo che non compare in nessuno dei due elenchi.

Non interattivo (--yes)

Le installazioni scriptate saltano ogni prompt:

bash
sudo warden init --yes

--yes accetta i default incorporati per il profilo (default), le liste (le tre sotto) e allow_from (RFC 1918 + loopback) — ma non per il resolver upstream. Senza flag --upstream, --yes adotta quanto già indicato dalla configurazione DNS di questa macchina, e stampa cosa ha scelto così da non essere silenzioso in un transcript di installazione:

text
upstream: adopting 10.10.1.1:53 (detected on this machine)

Se non viene rilevato nulla, o ogni indirizzo rilevato risulta essere il listener di Warden stesso, --yes si rifiuta invece di inventare un valore — vedi Risoluzione problemi.

Flag

FlagArgomentoSignificato
--force(bool)Sovrascrive una config esistente al percorso target. Rifiutato di default; vedi Rieseguire init.
--yes(bool)Salta ogni prompt, accetta i default incorporati dove esistono.
--listen<addr:port>Indirizzo di bind per [server].listen. Default 0.0.0.0:53.
--upstream<addr:port>[,...]Resolver upstream separati da virgola, DNS in chiaro. Nessun default — vince sia sul rilevamento sia sul prompt.
--upstream-catalog<percorso>Percorso del file di menu upstreams.toml. Default: upstreams.toml accanto alla config target; un file assente accorcia semplicemente il menu.
--allow-from<cidr>[,...]CIDR separati da virgola per [server].allow_from. Default RFC 1918 + loopback. Deve essere non vuoto — un bind non specificato con ACL vuota è un resolver aperto, e il validatore rifiuta questa combinazione.
--lists<id>[,...]Id catalogo separati da virgola da sottoscrivere (es. security/malicious,privacy/ads). Vedi warden lists catalog.
--install-manpages(bool)Genera anche le manpage in /usr/local/share/man/man1/.
--man-dir<percorso>Directory target per --install-manpages. Default /usr/local/share/man/man1.
--config<percorso>Flag di livello root (precede init, non lo segue) — sposta l’intero layout. Vedi Cosa crea.

Fonte: src/cli/mod.rs (Commands::Init), src/cli/commands/init/mod.rs, src/cli/commands/init/upstream.rs.

Le tre liste di default

--yes, o un Invio a vuoto al prompt di sottoscrizione, sottoscrive queste — indicate qui con l’id di entità con cui vengono generate, perché è quello che serve a un successivo warden blocklist tag add <id> …:

Slug catalogoid entità
security/malicioussecurity-malicious
privacy/adsprivacy-ads
privacy/trackingprivacy-tracking

--lists accetta solo id di catalogo — non URL diretti, né slug sconosciuti; entrambi sono errori bloccanti prima di scrivere qualunque cosa. Sfoglia il catalogo completo con warden lists catalog; aggiungi una sorgente con URL dopo l’init con warden blocklist add <id> --url <url>. Vedi Blocklist e Tag — ogni lista sottoscritta viene taggata uncategorized, il sentinel riservato di sistema, così il filtraggio è attivo di default ancora prima che tu nomini i tuoi tag.

Nessun upstream di default, di proposito

--upstream non ha alcun resolver incorporato. Versioni precedenti avevano un provider di default: questo significava che ogni nuova installazione instradava l’intero flusso DNS della famiglia verso un’unica azienda scelta da Warden, non dall’operatore. Non esiste un default non vuoto neutrale — qualsiasi indirizzo favorisce qualcuno — quindi lo scaffold parte vuoto e chiede. Ometti il flag e init rileva ciò che questa macchina già usa (interattivo: offerto per primo nel menu; --yes: adottato automaticamente), oppure si rifiuta e indica esattamente cosa passare. Fonte: src/cli/commands/init/mod.rs (UPSTREAM_MISSING, NO_DEFAULT_UPSTREAMS).

Rieseguire init (--force)

Senza --force, init si rifiuta prima di toccare qualunque cosa se la config target esiste già:

text
config already exists: /var/lib/purge-warden/config.toml. Pass --force to overwrite
(the existing file will be renamed with a .pre-init-<ts> suffix).

Con --force, il file esistente viene rinominato — config.toml diventa config.toml.pre-init-20260731T140502Z — prima che il nuovo venga scritto, quindi una re-init per errore è recuperabile con una rinomina, non equivale a un file perso. warden init --force ricrea comunque l’utente di sistema e fa chown -R sulla directory di stato; su un’installazione live con dati già in lists/ e data/, quella ricorsione è sicura sui symlink (chown -R -h) ma tocca comunque la proprietà di tutto ciò che c’è sotto.

Fai un backup vero prima di --force su un'installazione live
La rinomina protegge il file di config. Non protegge nulla che vorresti confrontare, scriptare o ripristinare selettivamente. Lancia prima warden config backup — vedi Backup e ripristino.

Dopo init

init scrive la config ma non crea nessun token IPC — ogni comando mutante o admin (stop, reload, ogni verbo che modifica la config) si rifiuta senza uno. Il comando stesso stampa i tre passi successivi:

passi successivi, come stampati da init
next steps: 1. (optional) edit /var/lib/purge-warden/config.toml to customize lists 2. create the admin token — every mutating command needs one: warden --config /var/lib/purge-warden/config.toml token generate 3. start the daemon: sudo -u purge-warden warden --config /var/lib/purge-warden/config.toml start --daemon

Se [server].listen si lega a una porta sotto la 1024 (il default dello scaffold, 0.0.0.0:53, lo fa), il daemon ha bisogno di CAP_NET_BIND_SERVICE per legarsi — sudo -u purge-warden da solo non concede quella capability. init aggiunge il rimedio esatto ai passi stampati:

bash
setcap cap_net_bind_service=+ep /usr/local/bin/warden

— oppure esegui il daemon dall’unit systemd pacchettizzata, che concede la stessa capability via AmbientCapabilities= e non richiede alcun setcap. Vedi servizio systemd.

Risoluzione problemi

no upstream resolver configuredinit --yes si rifiuta del tutto. Non è stato trovato nulla di utilizzabile su questa macchina (nessuna voce in /etc/resolv.conf, resolvectl assente o vuoto). Passane uno esplicitamente:

bash
sudo warden init --yes --upstream 192.0.2.53:53

the only resolver(s) this machine uses are warden itself (…) — un rifiuto diverso, stesso comando. È lo stato normale di un’installazione già funzionante che viene re-inizializzata: una volta che la rete punta già a Warden e la vecchia voce resolver è sparita, /etc/resolv.conf nomina solo l’indirizzo di Warden stesso, e adottarlo farebbe sì che Warden interroghi se stesso. È un messaggio distinto dal precedente di proposito — non trattarlo come “nulla rilevato”. Passa --upstream con un resolver esterno a questa macchina.

config already exists: … Atteso — vedi Rieseguire init. Aggiungi --force, oppure punta --config a un percorso nuovo se volevi tenere quella vecchia.

--lists rifiuta una voce con “raw URLs are not accepted”. --lists accetta solo id di catalogo. Sottoscrivi per id, poi aggiungi una sorgente URL personalizzata dopo con warden blocklist add <id> --url <url>.

Un comando mutante fallisce dopo init con errore di autenticazione / “no token”. Atteso — init non ne crea mai uno. Esegui warden token generate come mostrato in Dopo init.

sudo -u purge-warden warden start --daemon fallisce con un errore di bind / permessi sulla porta 53. Vedi il passo setcap in Dopo init, oppure usa l’unit systemd pacchettizzata.

Per altro, vedi risoluzione problemi.

Vedi anche

  • Avvio rapido — il percorso in quattro tappe di cui questo comando è la prima.
  • Impostazioni globali — modificare [server] / [upstream] dopo init, con warden config edit.
  • Blocklist e Tag — il modello di sottoscrizione a cui si agganciano le liste dello scaffold.
  • Backup e ripristinowarden config backup, prima di una re-init con --force.
  • Servizio systemd — l’alternativa a un setcap manuale.
  • Riferimento CLI — ordine di risoluzione del percorso config e il resto della superficie warden config.
↑↓ per navigare · Invio per aprire · Esc per chiudere Vedi tutti i risultati