Passa al contenuto principale Passa alla navigazione Passa al piè di pagina

Applicazione CLI

Guida completa all'uso dell'interfaccia a riga di comando Rediacc per la gestione della piattaforma

Riferimento CLI Rediacc

Panoramica

La **CLI Rediacc** (`rdc`) è un'interfaccia a riga di comando per la gestione dell'infrastruttura self-hosted: macchine, repository, storage, backup e altro ancora.

Installazione

Scarica l'ultimo binario per la tua piattaforma dalla [pagina delle release Rediacc](https://www.rediacc.com) oppure installa tramite il gestore di pacchetti:

# macOS / Linux
curl -fsSL https://www.rediacc.com | sh

# Or use the packaged binary directly
./rdc --help

Opzioni globali

Ogni comando supporta questi flag globali:

FlagDescrizione
--outputFormato di output (table|json|yaml|csv)
--configUsa una config specifica per questo comando
--langOverride della lingua ({{languages}})
--forceSalta le richieste di conferma

1. Gestione della config

Gestisci i file di configurazione: crea, cambia, modifica, riconcilia lo stato e le funzionalità trasversali (campi, audit, chiavi SSH, sincronizzazione remota).

I file di config memorizzano i dettagli di connessione (URL API, credenziali, team/regione/bridge predefiniti) in modo da poter passare rapidamente da un ambiente all'altro.

1.1 prune

Rimuove gli elementi superflui dal file di configurazione locale in ~/.config/rediacc/<config>.json. Vengono puliti tre bucket, tutti puramente locali (nessuna chiamata SSH/renet): (1) voci della cache certificati ACME il cui GUID/repo/macchinario di ancoraggio non è più nella configurazione attiva; (2) repository archiviati il cui periodo di grazia è scaduto (predefinito 7 giorni, vedi defaults.pruneGraceDays); (3) riferimenti incrociati non validi (machine→strategy, strategy→repo). Le risorse ancora in uso, le credenziali, i token di storage e gli host conosciuti non vengono mai toccati. Il comportamento predefinito è applicare le modifiche; usa --dry-run per visualizzare un'anteprima.

rdc config prune [options]
FlagDescrizioneObbligatorioPredefinito
--dry-runVisualizza un'anteprima di cosa verrebbe rimosso senza modificare il file di configurazione. Specchio della semantica predefinita degli altri comandi prune.No-
--certs-onlyLimita al bucket della cache certificati ACME. Ignora l'eliminazione degli archivi e la pulizia dei riferimenti incrociati. Mutuamente esclusivo con --archives-only e --refs-only.No-
--archives-onlyLimita all'eliminazione degli archivi scaduti. Ignora la cache certificati e la pulizia dei riferimenti incrociati. Mutuamente esclusivo con --certs-only e --refs-only.No-
--refs-onlyLimita ai riferimenti incrociati non validi (machine→strategy, strategy→repo excludes/includes). Ignora la cache certificati e gli archivi. Mutuamente esclusivo con --certs-only e --archives-only.No-
--purge-archivedElimina TUTTI i repository archiviati indipendentemente dall'età, non solo quelli oltre il periodo di grazia. Equivale a eseguire 'rdc repo admin archive purge' per ogni repository archiviato. Usalo solo quando sei sicuro di non aver bisogno di nessuna delle credenziali archiviate per il ripristino.No-
--orphan-reposRimuove le voci di repository non associate a nessuna macchina. Ogni voce contiene la credenziale e la chiave SSH di quel repository, quindi l'operazione è irreversibile. Esegui prima 'rdc config reconcile' in modo che l'associazione rifletta le macchine.No-
--grace-days <days>Sovrascrive la finestra di grazia degli archivi (in giorni) per questa esecuzione. Usa defaults.pruneGraceDays dalla configurazione, poi 7 se nessuno dei due è impostato.No-

1.2 init

Crea un nuovo file di configurazione con nome

Puoi aggiungere macchine direttamente:

rdc config init [name] [options]
FlagDescrizioneObbligatorioPredefinito
--ssh-key <path>Percorso della chiave SSH privata (es. ~/.ssh/id_rsa)No-
--renet-path <path>Percorso del binario renet (predefinito: renet nel PATH)No-
--master-password <password>Cifra le risorse con una password principaleNo-
--server <url>URL del server accountNo-

1.3 list

Elenca tutti i file di configurazione

rdc config list

1.4 show

Mostra i dettagli della configurazione corrente

rdc config show [options]
FlagDescrizioneObbligatorioPredefinito
--revealMostra il testo in chiaro per i valori sensibili (solo interattivo)No-

1.5 current

Mostra la configurazione attiva: nome, file, server e canale risolti, stato del token

rdc config current

1.6 delete

Elimina un file di configurazione

rdc config delete <name>

1.7 set

Imposta un valore predefinito (team, regione, bridge)

rdc config set <key> <value>

1.8 clear

Cancella i valori predefiniti (tutti o una chiave specifica)

rdc config clear [key]

1.9 recover

Ripristina la configurazione dal file di backup (.bak)

rdc config recover [name] [options]
FlagDescrizioneObbligatorioPredefinito
-y, --yesSalta la richiesta di confermaNo-

1.10 ssh

Gestisci la configurazione delle chiavi SSH

set

Imposta la chiave SSH per la configurazione corrente

rdc config ssh set [options]
FlagDescrizioneObbligatorioPredefinito
--key <path>Percorso del file della chiave privata SSH-
--embedIncorpora il contenuto della chiave nella configurazione invece di memorizzare il percorsoNo-

show

Mostra la configurazione della chiave SSH corrente

rdc config ssh show

remove

Rimuovi la chiave SSH dalla configurazione corrente

rdc config ssh remove

1.11 remote

Gestisci la connessione allo storage di configurazione remoto

enable

Collega questa configurazione allo storage cifrato remoto

rdc config remote enable [options]
FlagDescrizioneObbligatorioPredefinito
--headlessUsa il flusso device code (per server headless)No-
--passwordIscriviti in modalità headless con un password slot pre-provisionato (senza browser)No-
--api-url <url>URL del server accountNo-
--forceSostituisci il contenuto locale differente con la copia del server senza confermaNo-

disable

Disconnetti dallo storage remoto e salva la configurazione in locale

rdc config remote disable

status

Mostra lo stato della connessione remota

rdc config remote status

refresh

Forza il recupero della configurazione dallo storage remoto

rdc config remote refresh

1.12 field

Operazioni sui campi di configurazione con indirizzo tramite pointer (get/set/unset/rotate/list). Pointer JSON (RFC 6901) come /credentials/cfDnsApiToken.

get

Leggi un singolo valore di configurazione tramite JSON Pointer. I campi sensibili vengono oscurati a meno che non si usi --reveal (solo per utenti).

rdc config field get [options]
FlagDescrizioneObbligatorioPredefinito
--pointer <pointer>JSON Pointer al campo (es. /credentials/cfDnsApiToken)-
--revealMostra il testo in chiaro per i valori sensibili (solo TTY interattivo; registrato)No-
--digestStampa il digest SHA-256 invece del valore (sicuro da condividere con gli agenti)No-

set

Scrivi un valore di configurazione su un JSON Pointer. I percorsi sensibili richiedono --current (knowledge-gate).

rdc config field set [options]
FlagDescrizioneObbligatorioPredefinito
--pointer <pointer>JSON Pointer al campo (es. /credentials/cfDnsApiToken)-
--new <value>Nuovo valore (analizzato come JSON se sembra JSON: {, [, ", true/false/null/numero)-
--current <value>Valore in chiaro corrente -- obbligatorio per le mutazioni su percorsi sensibili (prova per knowledge-gate)No-

unset

Elimina un valore di configurazione su un JSON Pointer. I percorsi sensibili richiedono --current.

rdc config field unset [options]
FlagDescrizioneObbligatorioPredefinito
--pointer <pointer>JSON Pointer al campo (es. /credentials/cfDnsApiToken)-
--current <value>Valore in chiaro corrente -- obbligatorio per le eliminazioni su percorsi sensibiliNo-

rotate

Ruota un valore sensibile senza --current. Solo TTY interattivo; registrato in modo esplicito.

rdc config field rotate [options]
FlagDescrizioneObbligatorioPredefinito
--pointer <pointer>JSON Pointer al campo sensibile (es. /credentials/cfDnsApiToken)-
--new <value>Nuovo valore-

list

Elenca ogni template di pointer sensibile registrato con il suo tipo e la policy di commit/cifratura.

rdc config field list [options]
FlagDescrizioneObbligatorioPredefinito
--sensitiveMostra solo i template sensibili (non pubblici)No-

1.13 edit

Apre la configurazione attiva in $EDITOR come proiezione JSONC oscurata. Solo per utenti; gli agenti vengono rifiutati.

rdc config edit [options]
FlagDescrizioneObbligatorioPredefinito
--revealMostra il testo in chiaro per i valori sensibili (solo TTY interattivo; registrato)No-
--dumpStampa la configurazione corrente come JSONC su stdout (sola lettura; sicuro per gli agenti se oscurato)No-
--apply <file>Applica un file JSONC modificato (ignora l'avvio di $EDITOR)No-
--current-secrets <file>File JSON che mappa pointer→valore in chiaro precedente per il knowledge-gate su --applyNo-
--editor <cmd>Sovrascrittura del comando dell'editor (segue la precedenza di git: flag > $GIT_EDITOR > git config core.editor > $VISUAL > $EDITOR)No-

1.14 audit

Ispeziona il log di audit della configurazione (JSONL con catena di hash in ~/.config/rediacc/audit.log.jsonl)

log

Stampa le voci di audit recenti come JSON

rdc config audit log [options]
FlagDescrizioneObbligatorioPredefinito
--since <spec>Mostra solo le voci più recenti di (es. '24h', '7d', timestamp ISO)No-
--path <glob>Filtra per glob JSON Pointer (es. /credentials/*)No-
--actor <kind>Filtra per tipo di attore (human|agent)No-

tail

Trasmette in streaming le nuove voci di audit man mano che vengono scritte (Ctrl+C per fermare)

rdc config audit tail

verify

Verifica l'integrità della catena di hash SHA-256 su tutte le voci di audit

rdc config audit verify

1.15 reconcile

Ricostruisce lo stato di runtime a partire dallo stato reale delle macchine. Corregge dati di collegamento e instradamento obsoleti.

rdc config reconcile [options]
FlagDescrizioneObbligatorioPredefinito
--machine <m...>Limita la riconciliazione a queste macchineNo-
--dry-runMostra cosa verrebbe fatto senza apportare modificheNo-
--accept-observedRiscrive un posizionamento dichiarato in modo che corrisponda a dove si trova realmente l'immagine, ma solo quando ciò è inequivocabile (osservato su esattamente una macchina). I duplicati restano conflitti.No-

1.16 rotate-cek

Ruota la chiave di cifratura della configurazione dell'organizzazione

rdc config rotate-cek [options]
FlagDescrizioneObbligatorioPredefinito
--api-url <url>URL del server accountNo-

2. Gestione del datastore

Pool di storage con nome che contengono i repository. Un datastore è mobile (collegalo a una macchina, spostalo su un'altra) ed è a montaggio singolo (una sola macchina lo detiene alla volta). Il datastore predefinito implicito di ogni macchina non viene gestito qui.

2.1 resize

Espandi o riduci un datastore. È un'operazione offline: i repository al suo interno devono essere fermati.

rdc datastore resize <datastore> [options]
FlagDescrizioneObbligatorioPredefinito
--size <size>Nuova dimensione (es. 200G)-
--debugAbilita l'output di debugNo-

2.2 fork

Fai il fork copy-on-write di un datastore. Il fork è istantaneo e il suo costo non cresce con la dimensione del pool. Richiede il backend rbd: un datastore local non ha un clone a livello di blocco, quindi i repository al suo interno vengono forkati uno alla volta tramite reflink (rdc repo fork).

rdc datastore fork <datastore> [options]
FlagDescrizioneObbligatorioPredefinito
--tag <tag>Tag per il fork (il risultato è nome:tag)-
--attach-to <machine>Collega subito il fork a questa macchina (richiede --writes)No-
--writes <disposition>Dove vanno le scritture del fork: local (istantaneo, effimero) oppure ceph (clone durevole)No-
--cow-size <size>Dimensione dell'overlay per --writes localNo-
--debugAbilita l'output di debugNo-

2.3 status

Mostra un datastore: il suo backend, collegamento, utilizzo, repository e snapshot. Un datastore scollegato riporta comunque il proprio record.

rdc datastore status <datastore> [options]
FlagDescrizioneObbligatorioPredefinito
--debugAbilita l'output di debugNo-

2.4 create

Crea un datastore aggiuntivo con nome su una macchina. Un backend local è un pool basato su file su quella macchina e vi resta. Un backend rbd risiede in Ceph, quindi può spostarsi su qualsiasi macchina che raggiunga lo stesso cluster. Passa --cluster per renderlo un datastore del mondo kubernetes; questo riferimento viene fissato alla creazione.

rdc datastore create <datastore> [options]
FlagDescrizioneObbligatorioPredefinito
-m, --machine <name>Macchina su cui creare il datastore-
--size <size>Dimensione del datastore (es. 100G)-
--backend <type>Backend di storage: local (basato su file, resta su questa macchina) oppure rbd (Ceph, spostabile)Nolocal
--pool <name>Pool Ceph per il backend rbd (predefinito: rbd)No-
--image <name>Nome dell'immagine RBD per il backend rbd (predefinito: il nome del datastore)No-
--cluster <name>Cluster Kubernetes a cui appartiene questo datastore. Se impostato, solo repository kubernetes; se non impostato, solo repository docker. Fissato alla creazione.No-
--debugAbilita l'output di debugNo-

2.5 list

Elenca i datastore con nome, dove sono collegati e cosa contengono.

rdc datastore list [place]

2.6 attach

Collega un datastore a una macchina. Un datastore è detenuto da una sola macchina alla volta, quindi collegarlo altrove lo sposta: il vecchio detentore lo rilascia per primo, e un handoff fallito lascia intatto il collegamento originale. Un fork deve indicare dove vanno le sue scritture.

rdc datastore attach <datastore> [options]
FlagDescrizioneObbligatorioPredefinito
--to <machine>Macchina a cui collegare il datastore-
--writes <disposition>Dove vanno le scritture di un fork: local (istantaneo, effimero, perso allo scollegamento) oppure ceph (clone durevole nel pool). Obbligatorio per un fork.No-
--cow-size <size>Dimensione dell'overlay per --writes localNo-
--no-autoNon ricollegare automaticamente questo datastore all'avvioNo-
--forceForza il rilascio di un detentore bloccato che non ha ceduto correttamente il datastoreNo-
--debugAbilita l'output di debugNo-

2.7 detach

Scollega un datastore dalla sua macchina. I repository al suo interno vengono prima fermati. Un fork collegato con --writes local non ha un posto in cui riscrivere il proprio overlay, quindi scollegarlo scarta l'overlay e richiede --discard.

rdc datastore detach <datastore> [options]
FlagDescrizioneObbligatorioPredefinito
--discardScarta un fork con scritture locali e il suo overlay. I dati non sono recuperabili.No-
-y, --yesSalta la richiesta di confermaNo-
--debugAbilita l'output di debugNo-

2.8 snapshot

Esegue ed elenca gli snapshot puntuali di un datastore. Uno snapshot non costa nulla a riposo ed è ciò da cui un fork viene clonato.

create

Esegue uno snapshot puntuale di un datastore. Niente viene fermato. L'istante è crash-consistent, non application-consistent: se hai bisogno che una scrittura specifica sia inclusa nello snapshot, sincronizzala prima.

rdc datastore snapshot create <datastore> [options]
FlagDescrizioneObbligatorioPredefinito
--snapshot <label>Etichetta dello snapshot (predefinito: un timestamp UTC)No-
--debugAbilita l'output di debugNo-

list

Elenca gli snapshot di un datastore.

rdc datastore snapshot list <datastore> [options]
FlagDescrizioneObbligatorioPredefinito
--debugAbilita l'output di debugNo-

2.9 delete

Distrugge un datastore e tutto ciò che contiene. Viene prima scollegato; se non si scollega correttamente, l'eliminazione fallisce invece di lasciare orfano un pool montato.

rdc datastore delete <datastore> [options]
FlagDescrizioneObbligatorioPredefinito
-y, --yesSalta la richiesta di confermaNo-
--forceElimina anche se ci sono ancora repository che vi puntano. I loro dati vengono eliminati insieme ad esso.No-
--debugAbilita l'output di debugNo-

3. Gestione delle macchine

Ispeziona lo stato delle macchine remote: risorse di sistema, container in esecuzione, servizi systemd, repository distribuiti e diagnostica di salute. Query di sola lettura; per modificare i repository usa `repo`. Sottocomandi principali: status (stato completo, filtrabile con --system, --containers, --repositories, --services), health, list, add, remove, setup, prune, provision, deprovision.

3.1 list

Elenca le macchine

rdc machine list [options]
FlagDescrizioneObbligatorioPredefinito
--search <text>Cerca nel campo {{field}}No-
--sort <field>Ordina per campoNo-
--descOrdina in ordine decrescenteNo-

3.2 health

Controlla la salute della macchina per pipeline CI/CD

Il comando health restituisce metriche di sistema, stato dei container, stabilità dei servizi e informazioni sullo storage, utile per i gate nelle pipeline CI/CD.

rdc machine health <name> [options]
FlagDescrizioneObbligatorioPredefinito
-t, --team <name>Nome del teamNo-

3.3 provision

Provvisiona una nuova macchina su un provider cloud usando OpenTofu

rdc machine provision <name> [options]
FlagDescrizioneObbligatorioPredefinito
--provider <name>Nome del provider cloud (da machine provider add)-
--region <region>Sostituisci la regione predefinitaNo-
--type <type>Sostituisci il tipo di istanza predefinitoNo-
--image <image>Sostituisci l'immagine OS predefinitaNo-
--ssh-user <user>Nome utente SSH per la nuova VM (predefinito: root)No-
--base-domain <domain>Dominio base per l'infrastruttura (es. example.com). Implica --infraNo-
--no-infraSalta la configurazione dell'infrastruttura (proxy + DNS)No-
--debugAbilita l'output di debugNo-

3.4 deprovision

Distruggi una macchina provisioned nel cloud e rimuovila dalla configurazione

rdc machine deprovision <name> [options]
FlagDescrizioneObbligatorioPredefinito
--forceSalta la richiesta di confermaNo-
--debugAbilita l'output di debugNo-

3.5 prune

Rimuovi risorse del datastore orfane e snapshot obsoleti da una macchina. L'esecuzione base pulisce gli artefatti interni del datastore renet (sottovolumi BTRFS, file di lock, tmpfile). Le opzioni seguenti abilitano pulizie più precise dei repository: --orphaned-repos usa solo la configurazione CLI locale come segnale, mentre --prune-unknown consulta anche il mirror di stato .interim/renet affinché i fork legittimi creati da altri strumenti sopravvivano anche se assenti dalla configurazione locale. Entrambi i percorsi di eliminazione eseguono un controllo di sicurezza del montaggio; usa --force-delete-mounted per ignorarlo.

rdc machine prune <name> [options]
FlagDescrizioneObbligatorioPredefinito
--dry-runMostra cosa verrebbe rimosso senza apportare modificheNo-
--orphaned-reposElimina tutte le immagini repository sulla macchina non presenti nella configurazione CLI locale. Grossolano: rimuove anche i fork creati da altri strumenti senza voce nella configurazione locale, anche se il mirror renet li identifica correttamente come fork. Usa --prune-unknown per il comportamento più ristretto che rispetta il mirror.No-
--prune-unknownElimina solo i repository che il mirror di stato .interim/renet non riesce a classificare (non presenti nella configurazione locale E senza mirror con marcatura fork). Strettamente più ristretto di --orphaned-repos: i fork senza configurazione sono preservati quando il mirror li identifica. In questo bucket rientrano gli orfani legacy pre-mirror e i grand il cui record di configurazione è stato eliminato.No-
--force-delete-mountedIgnora il controllo di sicurezza del montaggio ed elimina i repository anche se sono attualmente montati o hanno container Docker in esecuzione. Distinto da --force (che ignora solo il periodo di grazia dell'archivio). Si applica sia a --orphaned-repos sia a --prune-unknown.No-
--forceSalta le richieste di confermaNo-
--grace-days <days>Periodo di grazia in giorni per i repo archiviati di recente (predefinito: 7)No-
--debugAbilita l'output di debugNo-

3.6 add

Aggiungi un macchinario alla configurazione corrente. Esegue la scansione automatica delle chiavi host SSH. Dopo l'aggiunta, esegui: config machine setup <nome>

rdc machine add <name> [options]
FlagDescrizioneObbligatorioPredefinito
--ip <address>Indirizzo IP o hostname della macchina-
--user <username>Nome utente SSH-
--port <port>Porta SSHNo22

3.7 infra

Gestisci la configurazione dell'infrastruttura (proxy, DNS, certificati)

cert

Gestisci i certificati TLS in cache

clear:

Rimuovi la cache dei certificati

rdc machine infra cert clear

pull:

Scarica e memorizza nella cache i certificati TLS da un macchinario

rdc machine infra cert pull <machine> [options]
FlagDescrizioneObbligatorioPredefinito
--no-pruneIgnora la rimozione dei certificati con ID di rete obsoletiNo-
--debugAbilita l'output di debugNo-

push:

Carica i certificati TLS in cache su un macchinario

rdc machine infra cert push <machine> [options]
FlagDescrizioneObbligatorioPredefinito
--debugAbilita l'output di debugNo-

status:

Mostra l'inventario dei certificati in cache

rdc machine infra cert status

push

Invia la configurazione infrastruttura al macchinario (proxy Traefik, router, DNS Cloudflare). Esegui prima 'machine infra set <machine>'

rdc machine infra push <machine> [options]
FlagDescrizioneObbligatorioPredefinito
--debugAbilita l'output di debugNo-

set

Imposta la configurazione dell'infrastruttura per un macchinario (specifica per macchinario: IP, dominio, porte; condivisa: email certificato, token DNS CF)

rdc machine infra set <machine> [options]
FlagDescrizioneObbligatorioPredefinito
--public-ipv4 <ip>Indirizzo IPv4 pubblico (per macchinario)No-
--public-ipv6 <ip>Indirizzo IPv6 pubblico (per macchinario)No-
--base-domain <domain>Dominio base per le applicazioni (per macchinario)No-
--cert-email <email>Email per le notifiche dei certificati TLS (condivisa tra i macchinari)No-
--cf-dns-token <token>Token API DNS Cloudflare per la challenge ACME DNS-01 (condiviso tra i macchinari)No-
--tcp-ports <ports>Porte TCP da inoltrare (separate da virgola, es. 25,143,465)No-
--udp-ports <ports>Porte UDP da inoltrare (separate da virgola, es. 53)No-

show

Mostra la configurazione dell'infrastruttura per un macchinario

rdc machine infra show <machine>

3.8 provider

Gestisci i provider cloud per il provisioning automatizzato dei macchinari

add

Aggiungi un provider cloud

rdc machine provider add <name> [options]
FlagDescrizioneObbligatorioPredefinito
--provider <source>Sorgente provider nota (es. linode/linode, hetznercloud/hcloud)No-
--source <source>Sorgente provider OpenTofu personalizzata (es. vultr/vultr)No-
--token <token>Token API per il provider cloud-
--region <region>Regione predefinita per i nuovi macchinariNo-
--type <type>Tipo/dimensione istanza predefinitaNo-
--image <image>Immagine SO predefinitaNo-
--ssh-user <user>Nome utente SSH per le nuove VM (predefinito: root)No-
--resource <type>Personalizzato: tipo di risorsa OpenTofu per la VMNo-
--label-attr <attr>Personalizzato: nome dell'attributo per la label della VMNo-
--region-attr <attr>Personalizzato: nome dell'attributo per la regioneNo-
--size-attr <attr>Personalizzato: nome dell'attributo per il tipo di istanzaNo-
--image-attr <attr>Personalizzato: nome dell'attributo per l'immagine SONo-
--ipv4-output <attr>Personalizzato: attributo di output per l'indirizzo IPv4No-
--ipv6-output <attr>Personalizzato: attributo di output per l'indirizzo IPv6No-
--ssh-key-attr <attr>Personalizzato: nome dell'attributo per le chiavi SSHNo-
--ssh-key-format <format>Personalizzato: formato della chiave SSH (inline_list o resource_id)No-
--ssh-key-resource <type>Personalizzato: tipo di risorsa OpenTofu per le chiavi SSHNo-

list

Elenca i provider cloud configurati

rdc machine provider list

remove

Rimuovi una configurazione di provider cloud

rdc machine provider remove <name>

3.9 remove

Rimuovi un macchinario dalla configurazione corrente

rdc machine remove <name> [options]
FlagDescrizioneObbligatorioPredefinito
-y, --yesSalta la richiesta di confermaNo-
--forceRimuovi il macchinario anche se vi sono ancora repository posizionati su di esso, lasciando quei posizionamenti pendenti.No-

3.10 scan-keys

Esegui la scansione delle chiavi host SSH per i macchinari nella configurazione corrente

rdc machine scan-keys [name]

3.11 setup

Provisioning di un macchinario remoto per i repository (installa renet, configura Docker, datastore BTRFS). Idempotente. Obbligatorio dopo 'config machine add' e prima di 'repo create'.

rdc machine setup <name> [options]
FlagDescrizioneObbligatorioPredefinito
--datastore-path <path>Percorso del datastore sul macchinario remotoNo/mnt/rediacc
--datastore-size <size>Dimensione del datastore (es. 95%, 100G)No95%
--debugAbilita l'output di debugNo-

3.12 status

Mostra lo stato completo della macchina (infrastruttura, sistema, repository con nome/guid, container con repository/repository_guid/dominio/autoRoute, servizi con repository/repository_guid)

rdc machine status [name] [options]
FlagDescrizioneObbligatorioPredefinito
--debugAbilita l'output di debugNo-
--systemIncludi solo le informazioni di sistemaNo-
--repositoriesIncludi solo i repositoryNo-
--containersIncludi solo i containerNo-
--servicesIncludi solo i serviziNo-
--networkIncludi solo le interfacce di reteNo-
--block-devicesIncludi solo i dispositivi a blocchiNo-
--licensesIncludi gli stati delle licenze dei repositoryNo-
--storage-healthMostra la frammentazione BTRFS e i risparmi di reflink per ogni repositoryNo-
--datastoresMostra i datastore collegati (mount, collegamento, utilizzo)No-
--health-checkModalita controllo salute: esce con codice 2 se ci sono container non saniNo-
--stability-checkModalita controllo stabilita: esce con codice 2 se ci sono servizi in errore/riavvioNo-
--search <text>Filtra i repository per nomeNo-
--sync-certsScarica anche la cache dei certificati ACME dalla macchina dopo la queryNo-
--strictEsci con codice non zero (codice 2) se un container ha superato la soglia di deriva di integritàNo-

4. Gestione cluster

Esegue il provisioning e gestisce i cluster: insiemi denominati di pool di nodi (ceph, k8s-server, k8s-agent, hyperconverged) su una rete privata. I membri di un pool diventano macchinari a tutti gli effetti, quindi ogni comando -m funziona su di essi.

4.1 create

Dichiara ed esegui il provisioning di un cluster: macchine, pool Ceph e Kubernetes. Passa --provider e --pool per dichiararlo in un solo passaggio; un create senza opzioni esegue il provisioning di un cluster già dichiarato.

rdc cluster create <cluster> [options]
FlagDescrizioneObbligatorioPredefinito
--provider <provider>Provider: una chiave cloudProviders, oppure 'kvm'No-
--pool <spec...>Specifica del pool name:role:count[:size] (role: ceph|k8s-server|k8s-agent|hyperconverged)No-
--declare-onlyRegistra il cluster in configurazione senza eseguirne il provisioningNo-
--network-cidr <cidr>CIDR della rete privata (es. 10.0.0.0/24)No-
--network-primitive <primitive>Primitiva di rete (es. vlan, vpc, network)No-
--control-node <machine>Macchinario esplicito per il nodo di controllo (predefinito: primo membro k8s-server)No-
--net-name <name>KVM: rete libvirt per questo cluster (es. renet12)No-
--net-base <prefix>KVM: prefisso di rete, i primi tre ottetti (es. 192.168.112)No-
--net-offset <n>KVM: offset aggiunto all'id di ogni VM nel derivarne l'indirizzoNo-
--control-id <n>KVM: id della VM del nodo di controllo e registry (predefinito: 1)No-
--docker-registry <endpoint>KVM: endpoint del registry Docker dentro la VM per questo clusterNo-
--ssh-user <user>Utente SSH per i membri sottoposti a provisioningNo-
--base-domain <domain>Dominio base per il DNS pubblico del cluster (altrimenti ereditato da un macchinario dello stesso gruppo)No-
--control-ds-size <size>Dimensione del datastore di controllo di ancoraggio (predefinito 10G)No-
--control-ds-backend <backend>Backend del datastore di controllo di ancoraggio: local | ceph (predefinito: ceph se il cluster include ceph, altrimenti local)No-
--control-ds-pool <pool>Pool Ceph RBD per il datastore di controllo di ancoraggio (backend ceph)No-
--debugAbilita l'output di debugNo-

4.2 status

Elenca tutti i cluster, oppure mostra la configurazione completa di un cluster con --name.

rdc cluster status [cluster]

4.3 scale

Modifica il numero di membri di un pool (aggiunge/rimuove macchinari e fa entrare/uscire nodi). I pool k8s-agent vengono scalati sul posto; la crescita del pool ceph avviene direttamente tramite cephadm.

rdc cluster scale <cluster> [options]
FlagDescrizioneObbligatorioPredefinito
--pool <pool>Nome del pool-
--count <n>Numero di membri desiderato-
--debugAbilita l'output di debugNo-

4.4 destroy

Smantella i membri sottoposti a provisioning e rimuove il cluster e i suoi macchinari dalla configurazione.

rdc cluster destroy <cluster> [options]
FlagDescrizioneObbligatorioPredefinito
--forceSalta la conferma e continua anche in caso di errori di smantellamentoNo-
--debugAbilita l'output di debugNo-

4.5 kubeconfig

Recupera il kubeconfig dal nodo di controllo del cluster via SSH e lo mette in cache localmente (0600) per kubectl.

rdc cluster kubeconfig <cluster>

4.6 fork

Clona un intero cluster, compresi i dati dei suoi repository, in un nuovo cluster: copy-on-write coordinato delle immagini del cluster e dei PV, seguito dalla riscrittura dell'identità dei nodi affinché il fork si avvii con nuovi indirizzi. Il cluster di origine continua a funzionare.

rdc cluster fork <cluster> [options]
FlagDescrizioneObbligatorioPredefinito
--tag <tag>Tag del fork-
--to <dest-cluster>Cluster di destinazione i cui nodi ospitano il fork (il suo nodo di controllo e gli agent; un cluster non può fare il fork sulle proprie macchine, poiché due k3s non possono condividere lo stesso network namespace host)-
--writes <disposition>Modalità di scrittura del fork: local (overlay dm-COW effimero, impronta Ceph pari a zero) | ceph (clone durevole). Predefinito: localNo-
--upAvvia i repository forkati e verifica la salute del cluster dopo l'avvio del forkNo-
--debugAbilita l'output di debugNo-

4.7 migrate

Sposta un intero cluster, compresi i dati dei suoi repository, su un altro macchinario o datacenter con un breve cutover (pre-copia a caldo, poi arresto e riavvio sulla destinazione).

rdc cluster migrate <cluster> [options]
FlagDescrizioneObbligatorioPredefinito
--to <dest-cluster>Destinazione-
--debugAbilita l'output di debugNo-

4.8 join

Adotta un macchinario registrato esistente come nodo agent Kubernetes di un cluster, usando lo stesso token di adesione derivato dalla CA impiegato per l'ancoraggio e il rientro.

rdc cluster join <machine> [options]
FlagDescrizioneObbligatorioPredefinito
--cluster <name>Cluster a cui aggiungere il macchinario-
--debugAbilita l'output di debugNo-

4.9 evict

Esegue il drain del nodo, elimina il suo oggetto Node e cancella la sua appartenenza al cluster. Il cluster viene derivato dal macchinario; un macchinario che monta ancora un datastore viene rifiutato.

rdc cluster evict <machine> [options]
FlagDescrizioneObbligatorioPredefinito
--forceSalta il drain se il nodo è già offlineNo-
--debugAbilita l'output di debugNo-

4.10 rehearse

Prova un rilascio/aggiornamento: forka il cluster su una destinazione come istanza effimera e usa-e-getta (writes=local, ruolo senza segreti: rehearsal), la avvia, ne verifica la salute, quindi la scarta. Il cluster di origine non viene mai toccato.

rdc cluster rehearse <cluster> [options]
FlagDescrizioneObbligatorioPredefinito
--on <dest-cluster>Cluster di destinazione su cui avviare la prova usa-e-getta-
--tag <tag>Tag opzionale per il fork di prova (predefinito: basato su timestamp)No-
--debugAbilita l'output di debugNo-

4.11 snapshot

Snapshot puntuali dell'intero cluster. Un unico istante crash-consistent su ogni datastore basato su rbd di proprietà del cluster, ottenuto tramite il group snapshot di Ceph: niente si ferma e il cluster non se ne accorge. I datastore con backend locale non hanno una primitiva di gruppo a livello di blocco, quindi restano fuori dall'istante e vengono segnalati come tali. L'istante è crash-consistent, non application-consistent: se hai bisogno che una scrittura specifica sia inclusa nello snapshot, sincronizzala prima.

create

Esegue lo snapshot di ogni datastore basato su rbd nel cluster in UN SOLO istante. Niente viene fermato. Qualsiasi datastore con backend locale nel cluster viene elencato come escluso dall'istante: non fa parte dello snapshot. L'istante è crash-consistent, non application-consistent: se hai bisogno che una scrittura specifica sia inclusa nello snapshot, sincronizzala prima.

rdc cluster snapshot create <cluster> [options]
FlagDescrizioneObbligatorioPredefinito
--snapshot <label>Etichetta dello snapshot (predefinito: un timestamp UTC)No-
--debugAbilita l'output di debugNo-

list

Elenca i group snapshot del cluster.

rdc cluster snapshot list <cluster> [options]
FlagDescrizioneObbligatorioPredefinito
--debugAbilita l'output di debugNo-

5. Server MCP

Espone la CLI come server Model Context Protocol (MCP) per l'integrazione con agenti AI. Il server racchiude i comandi CLI come strumenti MCP con input/output JSON strutturato. Sottocomando principale: serve (avvia il server MCP basato su stdio).

5.1 serve

Avvia il server MCP (trasporto stdio)

rdc mcp serve [options]
FlagDescrizioneObbligatorioPredefinito
--config <name>Nome della configurazione da usare per tutti i comandiNo-
--timeout <ms>Timeout predefinito dei comandi in millisecondiNo120000

6. Ciclo di vita del repository

Distribuisci e gestisci repository cifrati sui macchinari. Sottocomandi principali: create, up (distribuisci), down (ferma), fork (clone CoW istantaneo), delete, push/pull (backup), sync (trasferimento file). Ciclo di vita: repo create → repo up → repo down. Consulta Concetti Chiave in rdc --help per architettura, routing e variabili d'ambiente.

6.1 up

Distribuisce o aggiorna un repository (mount, esegue Rediaccfile up che chiama renet compose). La macchina viene determinata dal posizionamento del riferimento. Le route proxy impiegano circa 3s per diventare attive dopo il deploy. Al termine stampa il pattern URL per i servizi esposti via HTTP (label rediacc.service_port). Il primo deploy e i fork vengono montati automaticamente. Il ripristino del checkpoint CRIU è rilevato automaticamente; usa --skip-checkpoint per forzare un avvio pulito. Usa --all --machine <m> per distribuire tutti i repository su una macchina.

rdc repo up [ref] [options]
FlagDescrizioneObbligatorioPredefinito
--no-startMonta e prepara il repository senza eseguire i suoi passaggi up() (incorpora il comando ritirato 'repo mount'; apertura LUKS e, per i repo su cluster, generazione dei PV).No-
--skip-checkpointIgnora il ripristino del checkpoint CRIU anche se i dati del checkpoint esistono (forza avvio pulito)No-
--tlsRichiedi un certificato TLS dedicato per questo repo (i fork usano il certificato condiviso del macchinario per impostazione predefinita)No-
--no-waitRitorna appena i container sono avviati; gli health check proseguono in backgroundNo-
--allDistribuisci tutti i repository ospitati su --machine (forma collettiva)No-
-m, --machine <name>Con --all: la macchina i cui repository sono interessati dall'operazione collettivaNo-
--include-forksMonta e avvia anche i repository forkedNo-
--parallelAvvia i repository in modo concorrenteNo-
--concurrency <n>Numero massimo di repository concorrenti (predefinito: 3)No3
-y, --yesSalta la conferma per le operazioni in batchNo-
--debugAbilita l'output di debugNo-
--skip-router-restartSalta il riavvio del server di routing dopo l'aggiornamento del binarioNo-
--dry-runMostra cosa verrebbe fatto senza apportare modificheNo-

6.2 down

Ferma i container Docker del repository (esegue Rediaccfile down tramite renet compose). La macchina viene determinata dal posizionamento del riferimento. NON smonta il volume cifrato: il repo rimane montato e può essere riavviato con 'repo up'. Usa --unmount per chiudere anche il contenitore LUKS dopo l'arresto (incorpora il comando ritirato 'repo unmount'). Usa --checkpoint per salvare lo stato del processo CRIU prima dell'arresto (il successivo 'repo up' lo ripristina automaticamente). Usa --all --machine <m> per fermare tutti i repository su una macchina.

rdc repo down [ref] [options]
FlagDescrizioneObbligatorioPredefinito
--unmountSmonta (chiude il contenitore LUKS) anche dopo l'arresto. Obbligatorio prima di 'repo resize' o per proteggere completamente il volumeNo-
--checkpointCrea un checkpoint CRIU prima dell'arresto (salva lo stato in memoria dei processi per un ripristino successivo tramite 'repo up')No-
--allFerma tutti i repository ospitati su --machine (forma collettiva)No-
-m, --machine <name>Con --all: la macchina i cui repository sono interessati dall'operazione collettivaNo-
--parallelAvvia i repository in modo concorrenteNo-
--concurrency <n>Numero massimo di repository concorrenti (predefinito: 3)No3
-y, --yesSalta la conferma per le operazioni in batchNo-
--debugAbilita l'output di debugNo-
--skip-router-restartSalta il riavvio del server di routing dopo l'aggiornamento del binarioNo-
--dry-runMostra cosa verrebbe fatto senza apportare modificheNo-

6.3 status

Ottieni lo stato del repository (stato del mount, daemon Docker in esecuzione, numero di contenitori, utilizzo del disco)

rdc repo status <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--debugAbilita l'output di debugNo-
--skip-router-restartSalta il riavvio del server di routing dopo l'aggiornamento del binarioNo-

6.4 cat

Legge una finestra delimitata di un file all'interno di un repository e la scrive su stdout (delimitato lato server; i messaggi diagnostici vanno su stderr)

rdc repo cat <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--remote-file <path>Percorso del file da leggere, relativo alla root di mount del repository-
--max-bytes <n>Numero massimo di byte da leggere e stampare (predefinito 1 MiB, limite massimo 50 MiB)No-
--offset <n>Offset in byte da cui iniziare la letturaNo-
--head <lines>Stampa solo le prime N righe (non combinabile con l'intervallo di byte)No-
--tail <lines>Stampa solo le ultime N righe (non combinabile con l'intervallo di byte)No-
--statStampa solo dimensione, tipo e data di modifica; non legge contenutoNo-
--force-binaryConsenti la lettura di contenuti binari (con NUL)No-
--debugAbilita l'output di debugNo-
--skip-router-restartSalta il riavvio del server di routing dopo l'aggiornamento del binarioNo-

6.5 diff

Diff a livello di file in stile git fra due repository forkati con copy-on-write. Riporta i file aggiunti, modificati, eliminati e rinominati. Confronta il repository indicato da --name (lato target/nuovo) con il suo padre, risolto dalla configurazione locale, oppure con un repository --base esplicito (lato base/vecchio). Solo metadati e indipendente dalla dimensione: confronta le immagini LUKS cifrate a livello di blocco senza decifrarle, quindi un repo da 1 GB e uno da 100 GB vengono confrontati negli stessi millisecondi.

rdc repo diff <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--base <ref>Repository con cui confrontare (lato base/vecchio); predefinito il padre di --nameNo-
--name-onlyStampa solo i percorsi dei file modificati, uno per riga (senza lettere di stato)No-
--statMostra la magnitudine del cambiamento per file (delta in byte e blocchi) e i totaliNo-
--content [path]Mostra un diff testuale unificato per un singolo file (richiede un percorso file)No-
--fastAffidati al filtro a blocchi; salta la conferma via hash del contenuto (può sovra-segnalare Modificato)No-
--debugAbilita l'output di debugNo-
--skip-router-restartSalta il riavvio del server di routing dopo l'aggiornamento del binarioNo-

6.6 list

Elenca i repository su un macchinario

rdc repo list [options]
FlagDescrizioneObbligatorioPredefinito
-m, --machine <name>Nome del macchinario di destinazioneNo-
--datastore <name>Elenca i repository in questo datastore (risolto sulla macchina che attualmente lo detiene)No-
--debugAbilita l'output di debugNo-
--skip-router-restartSalta il riavvio del server di routing dopo l'aggiornamento del binarioNo-

6.7 create

Crea un nuovo repository. Indica la sua destinazione una volta sola: una macchina o un datastore.

rdc repo create <name> [options]
FlagDescrizioneObbligatorioPredefinito
-m, --machine <name>Nome del macchinario di destinazioneNo-
--datastore <name>Datastore con nome che ospita il repo (tiering docker, oppure la forma cluster)No-
--size <size>Dimensione del repository (es. 10G, 100G, 1T)No-
--no-dockerNon avviare il daemon Docker dopo la creazioneNo-
--debugAbilita l'output di debugNo-
--skip-router-restartSalta il riavvio del server di routing dopo l'aggiornamento del binarioNo-

6.8 delete

Elimina un repository e i suoi dati. La voce di configurazione viene conservata; usa --archive-config per spostare le credenziali in deletedRepositories per un eventuale recupero tramite 'repo admin archive restore'. Accetta un <ref> posizionale; un nome semplice si risolve nella linea grand e viene rifiutato quando più repo condividono lo stesso nome base, quindi passa nome:tag per indicare un fork.

rdc repo delete <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--archive-configSposta la voce di configurazione in deletedRepositories per un recupero successivoNo-
-y, --yesSalta la richiesta di confermaNo-
--debugAbilita l'output di debugNo-
--skip-router-restartSalta il riavvio del server di routing dopo l'aggiornamento del binarioNo-
--dry-runMostra cosa verrebbe fatto senza apportare modificheNo-

6.9 commit

Congela lo stato corrente di un fork di lavoro montato in un nuovo commit immutabile (in stile git). Il commit registra il proprio messaggio, autore, timestamp e parent all'interno del volume (in modo da viaggiare con il push) e viene contrassegnato come di sola lettura: ne rifiuta il montaggio. Il fork di lavoro prosegue invariato, proprio come git lascia intatto il working tree. Esegui il checkout di un commit con 'rdc repo checkout' per ottenerne una copia scrivibile.

rdc repo commit <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--message <msg>Messaggio del commit-
--author <author>Autore del commitNo-
--debugAbilita l'output di debugNo-

6.10 branch

Crea un riferimento branch con nome che punta al commit corrente del fork di lavoro (il suo tip). I riferimenti branch risiedono nella configurazione della CLI (machine = object store, config = ref store).

rdc repo branch <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--branch <branch>Nome del nuovo ramo-

6.11 checkout

Clona via reflink un commit immutabile (o il tip di un branch) in un nuovo fork di lavoro scrivibile e fa puntare HEAD a esso. Quasi istantaneo e a tempo costante (reflink BTRFS).

rdc repo checkout <commit-or-branch-ref> [options]
FlagDescrizioneObbligatorioPredefinito
--tag <name>Nome per il nuovo fork di lavoro scrivibile-
--from <workingFork>Risolvi l'argomento posizionale <commit-or-branch-ref> come nome di ramo su questo working forkNo-
--debugAbilita l'output di debugNo-
--skip-router-restartSalta il riavvio del server di routing dopo l'aggiornamento del binarioNo-

6.12 log

Stampa la cronologia dei commit raggiungibile dal commit corrente di un fork di lavoro (o da un riferimento a un commit), percorrendo la catena dei parent registrata da 'rdc repo commit'. Legge il mirror esterno al volume, quindi nessun commit viene sbloccato.

rdc repo log <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--debugAbilita l'output di debugNo-

6.13 merge

Esegue il merge di un commit o fork di origine in un fork di lavoro di destinazione. La destinazione attiva non viene mai modificata sul posto: il risultato viene costruito in un clone reflink e sostituito atomicamente. Una destinazione montata o in esecuzione viene rifiutata a meno che non si usi --force, che la mette prima in quiescenza in modo pulito. Senza --resolve si tratta di un take-theirs sull'intera immagine (la destinazione diventa l'origine); con --resolve ours|theirs si tratta di un merge a tre vie per singolo file rispetto all'antenato comune, prendendo le modifiche uniche di ciascun lato e risolvendo i conflitti bilaterali in base al flag.

rdc repo merge <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--from <source>Commit o fork di origine da cui eseguire il merge-
--forceMette prima in quiescenza una destinazione montata/in esecuzione, poi esegue il merge (non modifica mai un mount attivo)No-
`—resolve <ourstheirs>`Risoluzione dei conflitti per file in un merge a tre vie: 'ours' mantiene la versione della destinazione, 'theirs' prende quella dell'origine. Ometti per un fast-forward dell'intera immagine (take-theirs).No
--base <guid>GUID del commit antenato comune per un merge a tre vie (usato con --resolve). Predefinito il padre del commit di origine o il commit attuale della destinazione.No-
--debugAbilita l'output di debugNo-

6.14 gc

Elimina gli oggetti commit immutabili su una macchina che nessun ramo o HEAD raggiunge (GC per raggiungibilita). La macchina e l'archivio degli oggetti; la configurazione della CLI e l'archivio dei ref. Dry-run per impostazione predefinita: usa --apply per eliminare. Non tocca mai un oggetto montato o un fork di lavoro.

rdc repo gc [options]
FlagDescrizioneObbligatorioPredefinito
-m, --machine <name>Nome del macchinario di destinazione-
--applyElimina effettivamente i commit non raggiungibili (per impostazione predefinita è un'anteprima dry-run)No-
--debugAbilita l'output di debugNo-

6.15 fork

Crea un fork CoW (Copy-on-Write) di un repository. IL FORK È QUASI ISTANTANEO E A TEMPO COSTANTE indipendentemente dalla dimensione del repo: il reflink BTRFS clona l'immagine sottostante, quindi un repo da 100 GB e uno da 1 GB vengono forked nello stesso tempo (~secondi). Il fork ottiene un NUOVO GUID, networkId, intervallo IP e dominio di auto-route ({service}-fork-{tag}.{repo}.{machine}.{baseDomain}) ed è una copia completamente indipendente. Il fork online è supportato: il genitore può rimanere in esecuzione. Il fork eredita automaticamente le credenziali di cifratura del genitore. Usa --checkpoint per catturare lo stato del processo CRIU prima del fork: il fork si ripristina automaticamente al primo 'repo up' (stato in memoria preservato). FORK SU MACCHINARIO DIVERSO: fai prima il fork in locale, poi trasferisci: (1) rdc repo fork <parent-ref> --tag <nome>, (2) rdc repo push <fork-ref> --to <macchina-destinazione>, (3) rdc backup restore <fork-ref> --as <nome-fork> -m <macchina-destinazione> --up. AVVISO: NON usare "repo push" da solo per il fork: crea una copia grezza con lo STESSO GUID (non un fork indipendente). Esegui sempre prima il fork per ottenere una nuova identità. Le auto-route usano il nome del repo, quindi ogni fork ottiene un dominio univoco automaticamente.

rdc repo fork <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--tag <name>Tag per il fork (crea nome:tag)-
--checkpointCrea un checkpoint CRIU sulla sorgente prima del fork (cattura lo stato in memoria dei processi per il ripristino sul fork)No-
--immutableContrassegna il fork come di sola lettura: rifiuta il mount e mantiene la sua immagine stabile a livello di byte per sempre (un commit/una base congelato per il delta push tra macchine)No-
--upMonta e avvia i servizi dopo il fork (fork + mount + up in un unico comando)No-
--no-waitCon --up: ritorna appena i container sono avviati; gli healthcheck proseguono in background (ideale per fork usa e getta)No-
--debugAbilita l'output di debugNo-
--skip-router-restartSalta il riavvio del server di routing dopo l'aggiornamento del binarioNo-

6.16 replicate

Crea N repliche di lettura di un repository in pochi secondi, indipendentemente dalla dimensione del database. Esegue UN SOLO snapshot del datastore, poi effettua N fork-attach a tempo costante (copy-on-write, scritture locali usa-e-getta) distribuiti sui nodi del cluster, e applica un overlay generato: un PersistentVolume fissato per ogni replica, uno StatefulSet e due Service ({repo}-rw verso il primario, {repo}-ro verso le repliche). Le repliche sono copie PUNTUALI (point-in-time): nessuno stream di replica, nessuna coerenza read-your-writes; ogni replica esegue un passaggio di crash-recovery prima di servire traffico. Aggiornale con 'repo replicate refresh'. I set di repliche sono stato gestito: consulta 'repo replicate status' e rimuovili con 'repo replicate remove'.

status

Mostra i set di repliche gestiti: repliche, nodi ospitanti, datastore forkati, snapshot e timestamp di aggiornamento.

rdc repo replicate status <ref>

remove

Rimuove un set di repliche: elimina i suoi oggetti k8s generati (con ambito limitato alle label), scarta i suoi datastore forkati, elimina il suo snapshot e dimentica lo stato. I passaggi infrastrutturali sono best-effort, così la rimozione converge anche su un cluster parzialmente già smantellato.

rdc repo replicate remove <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--debugAbilita l'output di debugNo-

refresh

Porta ogni replica su un nuovo snapshot puntuale, UNA alla volta: riavvia il pod della replica, scarta e riesegue il fork del suo datastore sullo stesso percorso, e lascia che la readiness la riammetta. Le altre N-1 repliche continuano a servire traffico per tutta la durata dell'operazione.

rdc repo replicate refresh <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--debugAbilita l'output di debugNo-

6.17 canary

Esegue una NUOVA immagine accanto a quella stabile e divide il traffico live tra le due in base a una percentuale (gradino 2 della scala di rilascio). Crea un Deployment + Service canary sugli STESSI dati live (nessun fork: gli utenti del canary su dati forkati leggerebbero dati non aggiornati e scriverebbero in una copia destinata a essere scartata) e indica al proxy Rediacc di instradare verso di esso la percentuale indicata del traffico dell'hostname stabile. Un peso pari a 0 mantiene il canary dark; un peso di 100 corrisponde al passaggio blue/green completo. Prima di ogni modifica al canary viene eseguito automaticamente uno snapshot di gruppo dei datastore del cluster (gradino 0 della scala di rilascio), come undo universale. La compatibilità dello schema tra le due versioni (expand-contract) è responsabilità dell'applicazione. Per i rilasci che ROMPONO lo schema, usa invece il blue/green: fai il fork del repository (istantaneo, dati inclusi), punta qui il Service del fork con peso 100 e, per tornare indietro, riavvia il genitore rimasto intatto; le scritture effettuate dopo il passaggio esistono solo nella nuova copia, quindi la finestra di rollback è una decisione di policy.

status

Mostra i set di canary gestiti: peso, immagini, Service stabile e l'ultimo snapshot di release-undo.

rdc repo canary status <ref>

weight

Modifica la percentuale di traffico instradata verso un canary. Esegue prima un nuovo snapshot di gruppo di release-undo, poi riapplica l'overlay; il proxy recepisce la nuova suddivisione al successivo ciclo di aggiornamento. Un peso di 100 invia tutto il traffico alla nuova versione (il passaggio blue/green).

rdc repo canary weight <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--weight <percent>Percentuale di traffico instradata verso il canary (intero 0-100; 0 = dark, 100 = passaggio completo)-
--debugAbilita l'output di debugNo-

remove

Rimuove il Deployment e il Service di un canary (con ambito limitato alle label); il Service stabile torna a servire il 100% del traffico. Gli snapshot di release-undo vengono conservati; eliminali con i comandi snapshot del datastore.

rdc repo canary remove <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--debugAbilita l'output di debugNo-

create

Esegue una NUOVA immagine accanto a quella stabile e le invia una percentuale del traffico live. Il canary condivide i dati live del repository (nessun fork), quindi la compatibilità dello schema tra le due versioni è responsabilità dell'applicazione. Come undo, viene prima eseguito un group snapshot dei datastore del cluster.

rdc repo canary create <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--image <image>Nuova immagine eseguita dal Deployment canary (sugli stessi dati live condivisi)-
--port <port>Porta su cui l'app è in ascolto (deve corrispondere al Service stabile)-
--weight <percent>Percentuale di traffico instradata verso il canary (intero 0-100; 0 = dark, 100 = passaggio completo)-
--service <name>Service stabile con cui dividere il traffico (predefinito: il nome del repository)No-
--replicas <n>Numero di repliche del Deployment canary (predefinito: 1)No-
--debugAbilita l'output di debugNo-

6.18 resize

Ridimensiona un repository offline (supporta sia la crescita che la riduzione). Il repo deve essere smontato prima ('repo down --unmount'). Per una crescita senza downtime senza fermare i servizi, usa invece 'repo expand'.

rdc repo resize <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--size <size>Nuova dimensione del repository (es. 10G, 100G, 1T)-
--debugAbilita l'output di debugNo-
--skip-router-restartSalta il riavvio del server di routing dopo l'aggiornamento del binarioNo-

6.19 expand

Espande un repository montato online (zero downtime, solo crescita). Aumenta il contenitore LUKS e il filesystem mentre i contenitori continuano a girare. Non può ridurre: usa 'repo resize' per questo (richiede lo smontaggio).

rdc repo expand <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--size <size>Nuova dimensione del repository (es. 10G, 100G, 1T)-
--debugAbilita l'output di debugNo-
--skip-router-restartSalta il riavvio del server di routing dopo l'aggiornamento del binarioNo-

6.20 trim

Recupera spazio del pool del datastore dai repository montati (online, senza interruzioni). I blocchi eliminati nei repository tornano al pool tramite fstrim. Senza un riferimento, vengono trimmati tutti i repository montati su -m più il datastore stesso. fstrim viene saltato per i repository con un backup attivo; la pulizia --docker viene comunque eseguita

rdc repo trim [ref] [options]
FlagDescrizioneObbligatorioPredefinito
--dockerLiberare lo spazio Docker (container fermi, immagini dangling, cache di build); viene eseguito anche durante uno snapshot di backup attivoNo-
--docker-volumesEliminare anche i volumi Docker inutilizzatiNo-
--report-onlyMostrare lo stato dei discard e la stima recuperabile senza trimmareNo-
-m, --machine <name>Nome del macchinario di destinazioneNo-
--debugAbilita l'output di debugNo-

6.21 policy

Gestisce la politica di dimensione automatica applicata dal manutentore dello storage della macchina: amplia online la quota di un repository quando si riempie (mai oltre max-quota, mai con il pool scarso) ed esegue trim pianificati. Non esiste riduzione automatica; per quella usare 'repo resize'. Senza un riferimento, viene interessata la politica predefinita a livello di macchina su -m

set

Imposta i campi della politica di dimensione. Cambiano solo i flag passati; gli altri campi salvati mantengono i valori. Abilitare l'auto-crescita richiede --max-quota: il tetto è il consenso esplicito al sovra-provisioning del pool

rdc repo policy set [ref] [options]
FlagDescrizioneObbligatorioPredefinito
--auto-grow <bool>Abilitare la crescita automatica online della quota (true/false)No-
--max-quota <size>Tetto dell'auto-crescita (es. 200G); obbligatorio per l'auto-crescitaNo-
--grow-threshold <percent>% di uso del filesystem che attiva una crescita (predefinito 85)No-
--grow-step <step>Crescita per passo: assoluta (10G) o percentuale della quota (20%)No-
--auto-trim <bool>Abilitare il trim pianificato (true/false)No-
--trim-interval <hours>Ore minime tra trim automatici (predefinito 24)No-
-m, --machine <name>Nome del macchinario di destinazioneNo-
--debugAbilita l'output di debugNo-

get

Mostra il predefinito macchina salvato, l'override del repository (con un riferimento) e la politica effettiva unita su cui agisce il manutentore

rdc repo policy get [ref] [options]
FlagDescrizioneObbligatorioPredefinito
-m, --machine <name>Nome del macchinario di destinazioneNo-
--debugAbilita l'output di debugNo-

6.22 push

Invia un repository a una destinazione remota (macchinario o storage). Il tipo di destinazione viene rilevato automaticamente dalla configurazione. Per il trasferimento tra macchinari, l'immagine cifrata del repo viene copiata con lo STESSO GUID: si tratta di un backup/migrazione, non di un fork. Per creare un fork indipendente, usa prima 'repo fork', poi push. Una copia inviata con push diventa un ARTEFATTO di backup: avviala sulla destinazione con 'backup restore <ref> --as <nome> -m <destinazione> --up'

rdc repo push <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--to <remote>Macchinario o storage di destinazione (rilevato automaticamente dalla configurazione)No-
--to-machine <machine>No-
--provision <provider>Provisioning automatico del macchinario di destinazione tramite il provider cloud se non esisteNo-
--checkpointCrea un checkpoint CRIU prima del backup (cattura lo stato in memoria dei processi per la migrazione live)No-
--forceForza la sovrascrittura del backup esistenteNo-
-w, --watchOsserva le modificheNo-
--bwlimit <limit>Limite di banda per il trasferimento rsync (es. "6M", "10M")No-
--delta-base <guid>GUID di base immutabile presente byte per byte identico su entrambi i macchinari; trasferisci solo i blocchi modificati (destinazione macchinario). Ometti per la base automatica senza interventoNo-
--strategy <strategy>Strategia di delta a blocchi quando si usa una base delta: auto, physical o sharedNo-
--debugAbilita l'output di debugNo-
--skip-router-restartSalta il riavvio del server di routing dopo l'aggiornamento del binarioNo-

6.23 pull

Scarica un repository da una sorgente remota (macchinario o storage). Ometti il nome per scaricare tutti i repo. Il tipo di sorgente viene rilevato automaticamente dalla configurazione. Usa --up per distribuire dopo il pull.

rdc repo pull <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--from <remote>Nome del macchinario o storage di origine (rilevato automaticamente dalla configurazione)No-
--from-machine <machine>No-
--forceForza la sovrascrittura del repository esistenteNo-
--upDopo il pull, monta e distribuisce il repository su questo macchinarioNo-
-w, --watchOsserva le modificheNo-
--bwlimit <limit>Limite di banda per il trasferimento rsync (es. "6M", "10M")No-
--delta-base <guid>GUID di base immutabile presente byte per byte identico su entrambi i macchinari; ricevi solo i blocchi modificati (sorgente macchinario)No-
--strategy <strategy>Strategia di delta a blocchi quando si usa una base delta: auto, physical o sharedNo-
--debugAbilita l'output di debugNo-
--skip-router-restartSalta il riavvio del server di routing dopo l'aggiornamento del binarioNo-

6.24 migrate

Migra a caldo un repository da una macchina a un'altra con tempi di inattività minimi. rsync in due fasi: trasferimento massivo durante l'esecuzione, poi una breve pausa per la sincronizzazione delta. Sposta l'intero repository (l'instradamento viene reindirizzato alla nuova destinazione) e, una volta riuscito lo spostamento, elimina le immagini sorgente (usa --keep-source per mantenerle). Supporta il checkpoint CRIU per la migrazione dello stato di memoria dei processi e il provisioning automatico delle macchine di destinazione

rdc repo migrate <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--to <place>Macchina o cluster di destinazione-
--provision <provider>Provisioning automatico della destinazione tramite il provider cloud (es. hetzner, linode)No-
--bwlimit <limit>Limite di banda per il trasferimento rsync (es. 10M)No-
--checkpointMigrazione live CRIU: cattura e ripristina lo stato in memoria dei processiNo-
--delta-base <guid>GUID di base immutabile per il delta del cutover (avanzato; predefinito alla base della Fase 1)No-
--strategy <strategy>Strategia di delta a blocchi per il cutover: auto, physical o sharedNo-
--skip-dnsIgnora il cambio dei record DNS dopo la migrazioneNo-
--keep-sourceMantieni le immagini sorgente dopo uno spostamento riuscito (per impostazione predefinita vengono eliminate; le copie residue non sono indirizzabili da alcun record di configurazione e reconcile le segnala come orfane)No-
--debugAbilita l'output di debugNo-

6.25 sync

Sincronizza repository e file (push/pull in blocco, trasferimento file)

upload

Carica file in un repository tramite rsync su SSH (trasferimento delta). Usa --mirror per eliminare i file remoti in eccesso, --dry-run per l'anteprima, --exclude per escludere pattern.

rdc repo sync upload <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--local <paths...>Uno o più percorsi locali di file o directory (predefinito: directory corrente)No-
--remote <path>Percorso della sottodirectory remota nel repositoryNo-
--remote-file <path>Percorso del singolo file remoto (relativo alla radice del repo) in cui caricare. Incompatibile con --remote.No-
--mirrorModalità mirror -- elimina i file remoti non presenti in localeNo-
--verifyVerifica i file tramite checksum dopo la sincronizzazioneNo-
--confirmVisualizza l'anteprima delle modifiche e chiedi conferma prima di sincronizzareNo-
--exclude <patterns...>Pattern da escludere dalla sincronizzazioneNo-
--dry-runMostra cosa verrebbe fatto senza apportare modificheNo-

download

Scarica file da un repository tramite rsync su SSH (trasferimento delta). Usa --mirror per eliminare i file locali in eccesso, --dry-run per l'anteprima, --exclude per escludere pattern.

rdc repo sync download <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--local <path>Percorso locale della directory (predefinito: directory corrente)No-
--remote <path>Percorso della sottodirectory remota nel repositoryNo-
--remote-file <path>Percorso del file remoto nel repository (alternativa a --remote per trasferimenti di singoli file)No-
--mirrorModalità mirror -- elimina i file locali non presenti in remotoNo-
--verifyVerifica i file tramite checksum dopo la sincronizzazioneNo-
--confirmVisualizza l'anteprima delle modifiche e chiedi conferma prima di sincronizzareNo-
--exclude <patterns...>Pattern da escludere dalla sincronizzazioneNo-
--dry-runMostra cosa verrebbe fatto senza apportare modificheNo-

status

Confronto in dry-run dei file locali e remoti (mostra cosa verrebbe trasferito senza eseguire il trasferimento)

rdc repo sync status <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--local <path>Percorso locale della directory (predefinito: directory corrente)No-
--remote <path>Percorso della sottodirectory remota nel repositoryNo-
--remote-file <path>Percorso del file remoto nel repository (alternativa a --remote per trasferimenti di singoli file)No-

6.26 tunnel

Crea un tunnel SSH di port-forward verso la porta di un contenitore su un macchinario remoto. Il contenitore e la porta vengono rilevati automaticamente se non ambigui. Il tunnel rimane aperto finché non si preme Ctrl+C.

rdc repo tunnel <ref> [options]
FlagDescrizioneObbligatorioPredefinito
-c, --container <name>Nome del contenitore (rilevato automaticamente se ne è in esecuzione solo uno)No-
--port <port>Porta del contenitore remoto da inoltrareNo-
--local <port>Porta locale (predefinita uguale alla porta remota)No-
--url-onlyStampa solo l'URL locale non appena il tunnel è pronto (leggibile da script)No-

6.27 secret

Gestisci i segreti per repo iniettati al momento del deploy. Solo in scrittura: get restituisce solo il digest (mai il testo in chiaro), set/unset richiedono la corrispondenza del digest --current o --rotate-secret. Due modalità di consegna: env (REDIACC_SECRET_<KEY>) e file (tmpfs in /var/run/rediacc/secrets/<networkId>/<KEY> tramite compose `secrets:`). I segreti non entrano mai nell'immagine LUKS cifrata; i fork non li ereditano.

get

Mostra il digest SHA-256 di un segreto. Il valore in chiaro non viene mai restituito by design (solo scrittura). Usa --current su un successivo set/unset per verificare un valore già noto, oppure ruota tramite `set --rotate-secret`.

rdc repo secret get <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--key <KEY>Chiave del segreto in UPPER_SNAKE_CASE (max 64 caratteri). Verrà esposta come REDIACC_SECRET_<KEY> in modalità env o come /run/secrets/<key> nei contenitori in modalità file.-

list

Elenca le chiavi e le modalità dei segreti (mai i valori, mai i digest).

rdc repo secret list <ref>

set

Imposta o sovrascrive un segreto. I fork non ereditano i segreti: impostali esplicitamente sul fork. In contesto agente, richiede la corrispondenza del digest --current (stile passwd).

rdc repo secret set <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--key <KEY>Chiave del segreto in UPPER_SNAKE_CASE (max 64 caratteri). Verrà esposta come REDIACC_SECRET_<KEY> in modalità env o come /run/secrets/<key> nei contenitori in modalità file.-
--value <value>Valore del segreto. Passa `-` per leggere da stdin (evita l'esposizione nella cronologia della shell).-
--mode <mode>Modalità di consegna: 'env' (visibile nell'env del contenitore, docker inspect) o 'file' (file tmpfs, mai nell'env). Predefinito: file.Nofile
--current <value>Valore in chiaro precedente (precondizione stile passwd). Obbligatorio per sovrascrittura/rimozione; mutuamente esclusivo con --rotate-secret.No-
--rotate-secretConferma la rotazione; ignora la precondizione --current (registrata come rotazione). Da usare quando si ruota intenzionalmente senza verificare il valore precedente.No-

unset

Elimina un segreto. In contesto agente, richiede la corrispondenza del digest --current.

rdc repo secret unset <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--key <KEY>Chiave del segreto in UPPER_SNAKE_CASE (max 64 caratteri). Verrà esposta come REDIACC_SECRET_<KEY> in modalità env o come /run/secrets/<key> nei contenitori in modalità file.-
--current <value>Valore in chiaro precedente (precondizione stile passwd). Obbligatorio per sovrascrittura/rimozione; mutuamente esclusivo con --rotate-secret.No-
--rotate-secretConferma la rotazione; ignora la precondizione --current (registrata come rotazione). Da usare quando si ruota intenzionalmente senza verificare il valore precedente.No-

6.28 admin

Comandi di amministrazione e manutenzione dei repository.

archive

Gestione dei record dei repository archiviati.

list:

Elenca le credenziali dei repository archiviati

rdc repo admin archive list

purge:

Elimina definitivamente tutte le credenziali archiviate

rdc repo admin archive purge [name] [options]
FlagDescrizioneObbligatorioPredefinito
-y, --yesSalta la richiesta di confermaNo-

restore:

Ripristina una credenziale di repository archiviata

rdc repo admin archive restore <name> [options]
FlagDescrizioneObbligatorioPredefinito
--new-name <name>Nuovo nome della risorsaNo-

validate

Verifica l'integrità del repository (contenitore LUKS, coerenza del filesystem, configurazione). Usalo dopo spegnimenti imprevisti o per verificare l'integrità di un backup.

rdc repo admin validate <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--debugAbilita l'output di debugNo-
--skip-router-restartSalta il riavvio del server di routing dopo l'aggiornamento del binarioNo-

fsck

Convalida i ref della configurazione della CLI (rami, HEAD) rispetto agli oggetti effettivamente presenti su una macchina. Segnala i ref pendenti (un ref che punta a un oggetto mancante) e i commit orfani (un commit immutabile che nessun ref raggiunge). Sola lettura.

rdc repo admin fsck [options]
FlagDescrizioneObbligatorioPredefinito
-m, --machine <name>Nome del macchinario di destinazione-

ownership

Modifica l'UID di proprietà della directory del repository sul volume montato (predefinito: 7111). Usalo quando i contenitori necessitano di un UID specifico per accedere ai file del repo.

rdc repo admin ownership <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--uid <uid>UID del proprietario (predefinito: 7111)No-
--debugAbilita l'output di debugNo-
--skip-router-restartSalta il riavvio del server di routing dopo l'aggiornamento del binarioNo-

autostart

Gestisci l'avvio automatico del repository al boot

enable:

Abilita l'avvio automatico per un repository (ometti il nome per abilitare tutti)

rdc repo admin autostart enable [ref] [options]
FlagDescrizioneObbligatorioPredefinito
--debugAbilita l'output di debugNo-
--skip-router-restartSalta il riavvio del server di routing dopo l'aggiornamento del binarioNo-

disable:

Disabilita l'avvio automatico per un repository (ometti il nome per disabilitare tutti)

rdc repo admin autostart disable [ref] [options]
FlagDescrizioneObbligatorioPredefinito
--debugAbilita l'output di debugNo-
--skip-router-restartSalta il riavvio del server di routing dopo l'aggiornamento del binarioNo-

list:

Elenca i repository con avvio automatico abilitato

rdc repo admin autostart list [options]
FlagDescrizioneObbligatorioPredefinito
-m, --machine <name>Nome del macchinario di destinazione-
--debugAbilita l'output di debugNo-
--skip-router-restartSalta il riavvio del server di routing dopo l'aggiornamento del binarioNo-

template

Gestisci e applica template di distribuzione (scrive docker-compose.yml, Rediaccfile e file aggiuntivi). Il Rediaccfile deve usare 'renet compose' (non 'docker compose'). Le policy di restart sono sicure (gestite automaticamente dal watchdog di renet). Renet inietta automaticamente network_mode:host, le capability CRIU e le label rediacc. Le impostazioni pericolose (privileged, pid:host) sono bloccate. Usa 'list' per vedere i template integrati disponibili, 'apply' per distribuirne uno su un repository.

list:

Elenca tutti i template di distribuzione incorporati forniti con la CLI

rdc repo admin template list

apply:

Applica un template a un repository. Usa il nome di un template integrato (es. app-postgres) o --file per un template JSON personalizzato. Ciclo di vita del Rediaccfile: up() avvia i contenitori (scarica immagini, genera configurazioni qui), down() li ferma. Rediaccfile minimale: up() { renet compose -- pull; renet compose -- up -d; } down() { renet compose -- down; }. IMPORTANTE: il Rediaccfile DEVE usare 'renet compose': 'docker compose' viene rifiutato. VARIABILI D'AMBIENTE: due livelli: (a) shell Rediaccfile: ${SVCNAME_IP} (es. APP_IP), ${REDIACC_WORKING_DIR}, ${REDIACC_NETWORK_ID}. (b) Nei contenitori: renet inietta automaticamente le variabili d'ambiente SERVICE_IP e REDIACC_NETWORK_ID. La riscrittura bind eBPF gestisce l'isolamento IP in modo trasparente, quindi le app possono fare bind su 0.0.0.0 e il kernel riscrive sull'IP loopback corretto. Gli health check possono usare localhost. network_mode:host viene iniettato e ports: vengono ignorati. STORAGE: sia i bind mount ${REDIACC_WORKING_DIR}/... che i volumi Docker con nome sono sicuri: il data-root Docker è all'interno del mount LUKS cifrato. POLICY DI RESTART: le policy di restart sono sicure: renet le rimuove automaticamente per compatibilità CRIU e il watchdog gestisce il recupero. Compose: NON aggiungere network_mode o label rediacc.* (renet le inietta). Multi-progetto: inserisci ogni sotto-progetto nella propria sottodirectory con il proprio Rediaccfile: renet li rileva automaticamente e li esegue in ordine. Routing HTTPS: (A) Auto-route (compatibile con i fork, consigliato): NON aggiungere traefik.enable. Renet genera automaticamente https://{serviceName}.{repoName}.{machineName}.{baseDomain}. Aggiungi la label rediacc.service_port=<porta> per porte diverse da 80. Ogni fork ottiene un dominio univoco. (B) Label Traefik (dominio personalizzato, NON compatibile con i fork): traefik.enable=true, traefik.http.routers.<n>.rule=Host(`dominio`), traefik.http.routers.<n>.entrypoints=websecure,websecure-v6, traefik.http.routers.<n>.tls.certresolver=letsencrypt, traefik.http.services.<n>.loadbalancer.server.port=<porta>. Per TCP/UDP: rediacc.tcp_ports=3306 / rediacc.udp_ports=53

rdc repo admin template apply <ref> [options]
FlagDescrizioneObbligatorioPredefinito
--template <name>Template da applicare-
--file <path>Percorso del file JSON del template personalizzato ({"version":"2","files":{"Rediaccfile":"...","docker-compose.yml":"..."}}): sovrascrive il nome del template integratoNo-
--grand <name>Repository delle credenziali genitore (risolve automaticamente il nome in GUID). Solo per repo che condividono segreti con un genitore.No-
--debugAbilita l'output di debugNo-
--skip-router-restartSalta il riavvio del server di routing dopo l'aggiornamento del binarioNo-

6.29 promote

Sostituisce i dati del repo grand con i dati di un fork. Il grand conserva la propria identità (GUID, networkId, domini, autostart, catena di backup) ma acquisisce i dati aggiornati del fork. I vecchi dati di produzione vengono conservati come fork di backup. Usalo per: testare un aggiornamento sul fork, verificarlo, poi eseguire il takeover in produzione.

rdc repo promote <fork-ref> [options]
FlagDescrizioneObbligatorioPredefinito
-y, --yesSalta la richiesta di confermaNo-
--debugAbilita l'output di debugNo-
--skip-router-restartSalta il riavvio del server di routing dopo l'aggiornamento del binarioNo-

6.30 logs

Mostra i log applicativi dei container di un repository. I repository docker leggono dal daemon Docker del repository stesso; i repository kubernetes leggono i log dei pod nel namespace del repository. Se il repository esegue più di un container, indica quello desiderato con --container.

rdc repo logs <ref> [options]
FlagDescrizioneObbligatorioPredefinito
-c, --container <name>Container da leggere (necessario solo se il repository ne esegue più di uno)No-
-f, --followContinua a trasmettere nuove righe fino all'interruzioneNo-
--lines <n>Numero di righe di cronologia da mostrare (predefinito: 100)No100
--timestampsAntepone a ogni riga il proprio timestampNo-
--debugAbilita l'output di debugNo-

6.31 exec

Esegue un comando all'interno di un container del repository. Il codice di uscita del comando viene propagato direttamente, quindi funziona in script e condizionali. I repository docker lo eseguono tramite il daemon Docker del repository; i repository kubernetes lo eseguono nel namespace del repository.

rdc repo exec <ref> <cmd...> [options]
FlagDescrizioneObbligatorioPredefinito
-c, --container <name>Container in cui eseguire (necessario solo se il repository ne esegue più di uno)No-
-i, --interactiveAlloca un terminale (per un comando che se lo aspetta)No-
-u, --user <user>Utente con cui eseguire il comandoNo-
--debugAbilita l'output di debugNo-

7. Job in background

Gestisce i job in background su una macchina: elencali, controlla lo stato, riproduci o segui i log degli eventi, annullane uno o elimina (garbage collection) quelli terminati. Un job in background viene eseguito sotto systemd sulla macchina, quindi sopravvive a una disconnessione e può essere riagganciato in seguito.

7.1 list

Elenca i job in background su una macchina, dal più recente

rdc job list [options]
FlagDescrizioneObbligatorioPredefinito
-m, --machine <name>Nome del macchinario di destinazione-

7.2 status

Mostra lo stato di un job in background

rdc job status <job-id> [options]
FlagDescrizioneObbligatorioPredefinito
-m, --machine <name>Nome del macchinario di destinazione-

7.3 logs

Riproduce o segue il log degli eventi di un job in background

rdc job logs <job-id> [options]
FlagDescrizioneObbligatorioPredefinito
-m, --machine <name>Nome del macchinario di destinazione-
-f, --followTrasmette in streaming finché il job non terminaNo-
--since-line <n>Riprende dopo questo numero di righe (il conteggio già ricevuto)No-
--debugAbilita l'output di debugNo-

7.4 cancel

Annulla un job in background in esecuzione

rdc job cancel <job-id> [options]
FlagDescrizioneObbligatorioPredefinito
-m, --machine <name>Nome del macchinario di destinazione-
-y, --yesSalta la richiesta di confermaNo-

7.5 gc

Rimuove i job terminati e i relativi log

rdc job gc [options]
FlagDescrizioneObbligatorioPredefinito
-m, --machine <name>Nome del macchinario di destinazione-
--older-than <duration>Raccoglie i job terminati da più di questo numero di ore (predefinito: 168)No-
-y, --yesSalta la richiesta di confermaNo-

8. Backup e ripristino

Gestisci le strategie di backup, le loro esecuzioni pianificate e gli artefatti che producono: dichiara una strategia per un repository, eseguila o ripristinala su richiesta e ispeziona gli archivi scritti su un endpoint di storage.

8.1 schedule

Distribuisci la programmazione dei backup su una macchina remota (timer systemd)

rdc backup schedule [options]
FlagDescrizioneObbligatorioPredefinito
-m, --machine <name>Nome della macchina-
--dry-runVisualizza le unità generate senza distribuirleNo-
--forceProcedi anche se un backup è in esecuzione (la nuova unità si applica al prossimo tick; l'invocazione in corso mantiene la vecchia unità)No-
--reset-failedCancella lo stato di errore sui servizi modificati dopo una distribuzione riuscita (disabilitato per default, preserva il segnale di errore)No-
--debugAbilita l'output di debugNo-

8.2 cancel

Annulla un backup in esecuzione su una macchina remota

rdc backup cancel [strategy] [options]
FlagDescrizioneObbligatorioPredefinito
-m, --machine <name>Nome della macchina-
--debugAbilita l'output di debugNo-

8.3 list

Elenca gli artefatti di backup su una macchina o uno storage.

rdc backup list [artifact-ref] [options]
FlagDescrizioneObbligatorioPredefinito
-m, --machine <name>Nome della macchinaNo-
--storage <name>Elenca gli artefatti su questo endpoint di storageNo-
--path <subdir>Sottodirectory all'interno della radice dello storage. Se omessa, hot/ e cold/ vengono elencate e unite.No-
-w, --watchOsserva le modificheNo-
--debugAbilita l'output di debugNo-

8.4 restore

Trasforma un artefatto di backup in un repository attivo. Il posizionamento si specifica qui.

rdc backup restore <artifact-ref> [options]
FlagDescrizioneObbligatorioPredefinito
--as <name>Nome per il repository ripristinato (predefinito: il nome dell'artefatto)No-
-m, --machine <name>Nome della macchinaNo-
--datastore <name>Ripristina in questo datastore con nome (la macchina a cui è collegato lo ospita)No-
--upDistribuisci il repository ripristinato dopo il trasferimentoNo-
--health-window <seconds>Finestra totale del gate di salute in secondi (predefinito 300)No-
--health-timeout <seconds>Timeout dell'health check per singolo tentativo in secondi (predefinito 30)No-
-y, --yesSalta la richiesta di confermaNo-
--debugAbilita l'output di debugNo-

8.5 run

Avvia immediatamente un backup su una macchina remota

rdc backup run [strategy] [options]
FlagDescrizioneObbligatorioPredefinito
-m, --machine <name>Nome della macchina-
-w, --watchOsserva le modificheNo-
--debugAbilita l'output di debugNo-

8.6 status

Mostra lo stato del backup e dei timer su una macchina remota

rdc backup status [strategy] [options]
FlagDescrizioneObbligatorioPredefinito
-m, --machine <name>Nome della macchina-
--debugAbilita l'output di debugNo-

8.7 strategy

Gestisci le strategie di backup con nome (modalità hot/cold, destinazioni, pianificazione)

set

Crea o aggiorna una strategia di backup

rdc backup strategy set <strategy> [options]
FlagDescrizioneObbligatorioPredefinito
--destination <name>Nome della destinazione all'interno della strategiaNo-
--storage <name>Nome della configurazione di storage (credenziali rclone)No-
--cron <expression>Pianificazione cron (es. "0 * * * *" per ogni ora)No-
--mode <mode>Modalità di backup: "hot" (zero downtime) o "cold" (ferma, snapshot, riavvia)No-
--bwlimit <limit>Limite di banda rclone (es. "6M", "10M:off", "08:00,3M;22:00,10M")No-
--include <repos>Esegui il backup solo di questi repo (nomi separati da virgola)No-
--exclude <repos>Escludi questi repo dal backup (nomi separati da virgola)No-
--folder <path>Sottocartella sotto il bucket di storage per questa destinazione (es. hot, cold)No-
--enableAbilita la strategia o la destinazioneNo-
--disableDisabilita la strategia o la destinazioneNo-

bind

Associa una strategia di backup a una macchina per distribuirvi la sua pianificazione

rdc backup strategy bind <strategy> [options]
FlagDescrizioneObbligatorioPredefinito
-m, --machine <name>Nome del macchinario di destinazione-

unbind

Dissocia una strategia di backup da una macchina

rdc backup strategy unbind <strategy> [options]
FlagDescrizioneObbligatorioPredefinito
-m, --machine <name>Nome del macchinario di destinazione-

remove

Rimuovi una strategia o destinazione di backup

rdc backup strategy remove <strategy> [options]
FlagDescrizioneObbligatorioPredefinito
--destination <name>Rimuovi solo questa destinazione (conserva le altre destinazioni)No-

list

Elenca tutte le strategie di backup

rdc backup strategy list

show

Mostra i dettagli della strategia di backup

rdc backup strategy show [strategy]

9. Gestione dello storage

Gestisci gli endpoint di storage esterni per il backup (S3 e altri target compatibili con rclone): registrali e rimuovili, elenca quelli registrati, esplora gli artefatti che contengono e rimuovi i backup orfani.

9.1 list

Elenca gli endpoint di storage. Indica un nome per il dettaglio completo.

rdc storage list [name] [options]
FlagDescrizioneObbligatorioPredefinito
--revealMostra la configurazione dello storage in chiaro (solo TTY interattivo; registrato)No-

9.2 browse

Naviga i file in un sistema di storage

rdc storage browse <storage> [options]
FlagDescrizioneObbligatorioPredefinito
--path <subpath>Percorso della sottodirectory da elencareNo

9.3 prune

Elimina i backup orfani dallo storage che non sono più presenti in nessuna configurazione. Sicuro per configurazioni multiple con protezione del periodo di grazia. Le chiamate rclone vengono eseguite su --machine (l'esecutore), non sul tuo laptop, quindi i client non necessitano di rclone installato localmente; --machine è l'esecutore, non la fonte di verità.

rdc storage prune <storage> [options]
FlagDescrizioneObbligatorioPredefinito
-m, --machine <name>Macchina esecutore: esegue le chiamate rclone list/delete sullo storage. Obbligatorio perché non si prevede che i client abbiano rclone installato localmente; le credenziali dello storage provengono comunque dalla configurazione locale.-
--dry-runMostra cosa verrebbe fatto senza apportare modificheNo-
--forceSalta le richieste di confermaNo-
--force-delete-mountedIgnora il controllo di sicurezza del montaggio ed elimina i backup cloud anche se il GUID sorgente è attualmente montato o ha un container in esecuzione sulla macchina esecutore. Distinto da --force (che ignora solo il periodo di grazia per i repository archiviati).No-
--grace-days <days>Periodo di grazia in giorni per i repo archiviati di recente (predefinito: 7)No-
--debugAbilita l'output di debugNo-
--skip-router-restartSalta il riavvio del server di routing dopo l'aggiornamento del binarioNo-

9.4 add

Registra un endpoint di storage.

rdc storage add <name> [options]
FlagDescrizioneObbligatorioPredefinito
--vault <json>Contenuto del vault come stringa JSON-

9.5 import

Importa gli storage da un file di configurazione rclone

rdc storage import <file> [options]
FlagDescrizioneObbligatorioPredefinito
--name <name>Importa solo questa sezione con nomeNo-

9.6 remove

Rimuove un endpoint di storage dalla configurazione.

rdc storage remove <name> [options]
FlagDescrizioneObbligatorioPredefinito
-y, --yesSalta la richiesta di confermaNo-
--dry-runMostra cosa verrebbe fatto senza apportare modificheNo-

10. Integrazione VS Code

Apri VS Code con Remote SSH su una macchina o un repository con ambiente per repository isolato. Stessa connessione SSH di `term` ma avvia VS Code invece. Sottocomandi principali: connect (o abbreviazione posizionale), list (mostra le connessioni configurate), cleanup (rimuove le voci di configurazione SSH), check (verifica l'installazione di VS Code).

10.1 connect

Apri VS Code su una macchina o all'interno di un repository.

rdc vscode connect <target> [options]
FlagDescrizioneObbligatorioPredefinito
-f, --folder <path>Percorso della cartella remota da aprireNo-
--url-onlyStampa l'URI di VS Code invece di avviarloNo-
-n, --new-windowApri in una nuova finestra di VS CodeNo-
--skip-env-setupSalta la configurazione dell'ambiente remotoNo-
--insidersUsa le impostazioni di VS Code InsidersNo-
--browserServe VS Code nel browser dalla sandbox del repository (non serve VS Code locale)No-
--no-openStampa l'URL senza aprire il browser localeNo-
--local <port>Porta locale (predefinita uguale alla porta remota)No-
--server-provider <id>Implementazione del server VS Code nel browser (openvscode, code-server)No-
--server-archive <file>Percorso del tarball del server pre-caricato sul macchinario (installazioni air-gap)No-

10.2 list

Elenca le connessioni SSH VS Code configurate

rdc vscode list

10.3 cleanup

Rimuovi le configurazioni SSH di VS Code

rdc vscode cleanup [options]
FlagDescrizioneObbligatorioPredefinito
--allRimuovi tutte le configurazioni SSH di rediaccNo-
-c, --connection <name>Rimuovi una connessione specificaNo-

10.4 check

Controlla l'installazione e la configurazione di VS Code

rdc vscode check [options]
FlagDescrizioneObbligatorioPredefinito
--insidersUsa le impostazioni di VS Code InsidersNo-

10.5 serve

Gestisci il server VS Code nel browser all'interno della sandbox

status

Mostra se il server VS Code nel browser è in esecuzione

rdc vscode serve status <target> [options]
FlagDescrizioneObbligatorioPredefinito
--server-provider <id>Implementazione del server VS Code nel browser (openvscode, code-server)No-

stop

Ferma il server VS Code nel browser

rdc vscode serve stop <target> [options]
FlagDescrizioneObbligatorioPredefinito
--server-provider <id>Implementazione del server VS Code nel browser (openvscode, code-server)No-

11. Accesso SSH al terminale

Apri un terminale SSH verso una macchina o un repository. La destinazione è un nome di macchina o un riferimento di repository, e il contesto del repository (DOCKER_HOST, directory di lavoro, ambiente) viene configurato automaticamente. Usa `-c` per eseguire un singolo comando in modalità non interattiva. Per i log dei container o un comando singolo in un container, usa `repo logs` e `repo exec`. Per VS Code, usa `vscode`.

11.1 connect

Apri una shell su una macchina, oppure all'interno di un repository con il suo Docker configurato.

rdc term connect <target> [options]
FlagDescrizioneObbligatorioPredefinito
-c, --command <cmd>Esegui un comando invece della shell interattivaNo-
--externalForza l'apertura in una finestra di terminale esternaNo-
--reset-homeReimposta l'overlay home per-repo per un avvio pulitoNo-

12. Comandi rapidi (scorciatoie)

12.1 run

ATTENZIONE: Comando di basso livello per debug e sperimentazione soltanto. Non per uso in produzione. Usa i comandi di livello superiore (repo up, repo down, ecc.) in alternativa. Esegue una funzione bridge grezza su una macchina.

rdc run

12.2 trace

Traccia un task (scorciatoia per: queue trace)

rdc trace

12.3 cancel

Annulla un task (scorciatoia per: queue cancel)

rdc cancel

12.4 retry

Riprova un task in errore (scorciatoia per: queue retry)

rdc retry

13. Gestione dell'abbonamento

Gestisci le licenze e i token di abbonamento. Accedi con login, ispeziona con status, riemetti le licenze con refresh.

13.1 login

Autentica tramite browser o token API

rdc subscription login [options]
FlagDescrizioneObbligatorioPredefinito
-t, --token <token>Token API (rdt_...)No-
--server <url>URL del server accountNo-

13.2 logout

Cancella il token di abbonamento memorizzato

rdc subscription logout

13.3 status

Mostra l'abbonamento e lo stato delle licenze per una macchina.

rdc subscription status [options]
FlagDescrizioneObbligatorioPredefinito
-m, --machine <name>Nome della macchinaNo-

13.4 refresh

Aggiorna le licenze dal server account.

rdc subscription refresh [options]
FlagDescrizioneObbligatorioPredefinito
-m, --machine <name>Nome della macchinaNo-
--repo <ref>Riferimento di repository: nome, oppure nome:tag, opzionalmente con @macchina (es. shop oppure shop:test)No-

14. Aggiornamenti CLI

Controlla le nuove versioni della CLI e applica gli aggiornamenti. Supporta --check-only per verificare senza installare e --force per aggiornare anche se si è già all'ultima versione.

rdc update [options]
FlagDescrizioneObbligatorioPredefinito
--forceForza l'aggiornamento anche se è già aggiornatoNo-
--check-onlyControlla solo gli aggiornamenti senza scaricareNo-
--rollbackRipristina la versione precedenteNo-
--statusMostra lo stato dell'auto-aggiornamento e la diagnosticaNo-
--channel <channel>Imposta il canale di rilascio (stable o edge)No-

15. Crediti di terze parti

Stampa i componenti di terze parti inclusi in rdc: i binari che renet incorpora e distribuisce (CRIU, rsync, rclone), il runtime Node.js incorporato e le dipendenze npm incluse. Mostra versioni, identificatori di licenza SPDX e gli URL degli archivi sorgente a versione esatta richiesti per la conformità GPL. Usa --licenses per stampare il testo completo THIRD_PARTY_LICENSES incluso nelle build di release.

rdc credits [options]
FlagDescrizioneObbligatorioPredefinito
--licensesStampa il testo completo THIRD_PARTY_LICENSES incluso nelle build di releaseNo-

16. Diagnostica di sistema

Esegue controlli diagnostici sull'ambiente CLI: versione di Node.js, disponibilita del binario renet, validita del file di configurazione, stato delle chiavi SSH e connettivita di rete. Produce un report di salute strutturato con indicatori di successo/errore.

rdc doctor

17. Operazioni VM locali

Provisioning e gestione locale di VM usando KVM/QEMU/Hyper-V (rilevamento automatico della piattaforma). Non per macchine remote: usa `machine` per quelle. Sottocomandi principali: up (avvia VM), down (arresta), status (elenca VM in esecuzione), ssh (connettiti alla VM), setup (installa prerequisiti), check (verifica idoneità dell'host).

17.1 up

Provisioning del cluster VM in locale

rdc ops up [options]
FlagDescrizioneObbligatorioPredefinito
--forceForza il riavvio di tutte le VMNo-
--parallelCrea le VM in paralleloNo-
--basicCluster minimale (bridge + 1 worker)No-
--liteSalta il provisioning delle VM (solo stato)No-
--skip-orchestrationSalta l'orchestrazione del clusterNo-
--backend <backend>Backend di virtualizzazione (kvm|qemu, rilevato automaticamente)No-
--os <name>Sistema operativo della VM (es. ubuntu-24.04, debian-13)No-
--debugAbilita l'output di debugNo-

17.2 down

Distruggi il cluster VM

rdc ops down [options]
FlagDescrizioneObbligatorioPredefinito
--backend <backend>Backend di virtualizzazione (kvm|qemu, rilevato automaticamente)No-
--debugAbilita l'output di debugNo-

17.3 status

Mostra lo stato del cluster VM

rdc ops status [options]
FlagDescrizioneObbligatorioPredefinito
--backend <backend>Backend di virtualizzazione (kvm|qemu, rilevato automaticamente)No-

17.4 ssh

Connettiti a una VM via SSH

rdc ops ssh [options]
FlagDescrizioneObbligatorioPredefinito
--vm-id <id>ID della macchina virtuale-
-c, --command <cmd>Esegui un comando invece della shell interattivaNo-
--backend <backend>Backend di virtualizzazione (kvm|qemu, rilevato automaticamente)No-
--user <user>Nome utente SSH per la connessione alla VMNo-

17.5 setup

Installa i prerequisiti per la virtualizzazione

rdc ops setup [options]
FlagDescrizioneObbligatorioPredefinito
--debugAbilita l'output di debugNo-

17.6 check

Verifica i prerequisiti per la virtualizzazione

rdc ops check

18. Servizio executor

Esegui questo processo come esecutore in modo che i client possano eseguire comandi tramite esso invece di connettersi da soli via SSH

rdc serve [options]
FlagDescrizioneObbligatorioPredefinito
-p, --port <port>Porta su cui restare in ascoltoNo8080
--host <host>Indirizzo a cui associarsiNo0.0.0.0
--mode <mode>Posizionamento: daemon (host del cliente) o containerNodaemon

Messaggi di errore comuni

Quando qualcosa va storto, la CLI fornisce messaggi di errore chiari:

ErroreSignificato
Autenticazione richiesta. Esegui: rdc subscription loginDevi effettuare il login prima
Nessuna config attiva. Creane una con: rdc config init <name>Nessuna config attiva: creane una con `rdc config init`
Permesso negatoIl tuo account non ha i permessi necessari
Nome macchina obbligatorio. Usa --machine <name>Specifica una macchina con `--machine` o imposta un valore predefinito nella config
Nome team obbligatorio. Usa --team o imposta il valore predefinito con: rdc config set team <name>Specifica un team con `--team` o imposta un valore predefinito nella config
Nome regione obbligatorio. Usa --region o imposta il valore predefinito con: rdc config set region <name>Specifica una regione con `--region` o imposta un valore predefinito nella config

Formati di output

Tutti i comandi list/get supportano più formati di output tramite `--output`:

rdc machine list --output json
rdc machine list --output yaml
rdc machine list --output csv
rdc machine list --output table   # default

Questo semplifica l'integrazione della CLI Rediacc in script, pipeline CI/CD e flussi di automazione.