Passer au contenu principal Passer à la navigation Passer au pied de page

Application CLI

Guide complet pour utiliser l'interface en ligne de commande Rediacc pour la gestion de la plateforme

Référence CLI Rediacc

Aperçu

La **CLI Rediacc** (`rdc`) est une interface en ligne de commande pour gérer une infrastructure auto-hébergée — machines, dépôts, stockage, sauvegardes et plus encore.

Guide d'installation

Téléchargez le dernier binaire pour votre plateforme depuis la [page des versions Rediacc](https://www.rediacc.com) ou installez via votre gestionnaire de paquets :

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

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

Options Globales

Chaque commande prend en charge ces flags globaux :

OptionLibellé
--outputFormat de sortie (table|json|yaml|csv). Remplacer la valeur par défaut avec REDIACC_DEFAULT_OUTPUT.
--configUtiliser une configuration spécifique pour cette commande
--langRemplacement de langue ({{languages}})
--forceIgnorer les invites de confirmation

1. Gestion de la Configuration

Gérer les fichiers de configuration : créer, changer, modifier, réconcilier l'état, et fonctionnalités transverses (champs, audit, clés SSH, synchronisation distante).

Les fichiers de configuration stockent les informations de connexion (URL API, identifiants, équipe/région/pont par défaut) pour basculer rapidement entre les environnements.

1.1 prune

Supprime le poids mort du fichier de configuration local dans ~/.config/rediacc/<config>.json. Trois catégories sont nettoyées, toutes purement locales (aucun appel SSH/renet) : (1) les entrées du cache de certificats ACME dont l'ancre GUID/repo/machine n'est plus dans la configuration active ; (2) les dépôts archivés dont la période de grâce a expiré (7 jours par défaut, voir defaults.pruneGraceDays) ; (3) les références croisées orphelines (machine→strategy, strategy→repo). Les ressources actives, identifiants, jetons de stockage et known-hosts ne sont jamais touchés. Le comportement par défaut applique les changements ; passez --dry-run pour prévisualiser uniquement.

rdc config prune [options]
OptionLibelléRequisDéfaut
--dry-runPrévisualise ce qui serait supprimé sans modifier le fichier de configuration. Reflète la sémantique désactivée par défaut des autres commandes prune.Non-
--certs-onlyLimite au bucket du cache de certificats ACME. Ignore la purge d'archives et le nettoyage de références croisées. Mutuellement exclusif avec --archives-only et --refs-only.Non-
--archives-onlyLimite à la purge des archives expirées. Ignore le cache de certificats et le nettoyage de références croisées. Exclusif avec --certs-only et --refs-only.Non-
--refs-onlyLimite aux références croisées orphelines (machine→strategy, strategy→repo excludes/includes). Ignore le cache de certificats et les archives. Exclusif avec --certs-only et --archives-only.Non-
--purge-archivedSupprimer TOUS les dépôts archivés indépendamment de leur âge, pas seulement ceux après la grâce. Équivalent à exécuter 'rdc repo admin archive purge' pour chaque dépôt archivé. À n'utiliser que si vous êtes sûr de ne plus avoir besoin des identifiants stockés pour la restauration.Non-
--orphan-reposSupprime les entrées de dépôt qui ne sont associées à aucune machine. Chaque entrée contient les identifiants et la clé SSH de ce dépôt, cette action est donc irréversible. Exécute d'abord 'rdc config reconcile' pour que l'association reflète les machines.Non-
--grace-days <days>Remplace la fenêtre de grâce d'archive (en jours) pour cette invocation. Repli sur defaults.pruneGraceDays dans la configuration, puis sur 7 si aucun n'est défini.Non-

1.2 init

Créer un nouveau fichier de configuration nommé

En mode local, vous pouvez ajouter des machines directement :

rdc config init [name] [options]
OptionLibelléRequisDéfaut
--ssh-key <path>Chemin vers la clé privée SSH (ex. ~/.ssh/id_rsa)Non-
--renet-path <path>Chemin vers le binaire renet (par défaut : renet dans PATH)Non-
--master-password <password>Chiffrer les ressources avec un mot de passe principalNon-
--server <url>URL du serveur de compteNon-

1.3 list

Lister tous les fichiers de configuration

rdc config list

1.4 show

Afficher les détails de la configuration actuelle

rdc config show [options]
OptionLibelléRequisDéfaut
--revealAfficher en clair les valeurs sensibles (mode interactif uniquement)Non-

1.5 current

Afficher la configuration active : nom, fichier, serveur et canal résolus, état du jeton

rdc config current

1.6 delete

Supprimer un fichier de configuration

rdc config delete <name>

1.7 set

Définir une valeur par défaut (équipe, région, pont)

rdc config set <key> <value>

1.8 clear

Effacer les valeurs par défaut (toutes ou une clé spécifique)

rdc config clear [key]

1.9 recover

Restaurer la configuration depuis le fichier de sauvegarde (.bak)

rdc config recover [name] [options]
OptionLibelléRequisDéfaut
-y, --yesIgnorer l'invite de confirmationNon-

1.10 ssh

Gérer la configuration de la clé SSH

set

Définir la clé SSH pour la configuration actuelle

rdc config ssh set [options]
OptionLibelléRequisDéfaut
--key <path>Chemin vers le fichier de clé SSH privéeOui-
--embedIntégrer le contenu de la clé dans la configuration au lieu de stocker le cheminNon-

show

Afficher la configuration actuelle de la clé SSH

rdc config ssh show

remove

Supprimer la clé SSH de la configuration actuelle

rdc config ssh remove

1.11 remote

Gérer la connexion au stockage distant de configuration

enable

Lier cette configuration au stockage distant chiffré

rdc config remote enable [options]
OptionLibelléRequisDéfaut
--headlessUtiliser le flux de code d'appareil (pour les serveurs sans interface)Non-
--passwordS'inscrire en mode headless avec un password slot préprovisionné (sans navigateur)Non-
--api-url <url>URL du serveur de compteNon-
--forceRemplacer le contenu local différent par la copie du serveur sans confirmationNon-

disable

Déconnecter du stockage distant et sauvegarder la configuration localement

rdc config remote disable

status

Afficher l'état de la connexion distante

rdc config remote status

refresh

Forcer la récupération de la configuration depuis le stockage distant

rdc config remote refresh

1.12 field

Opérations sur les champs de configuration adressés par pointeur (get/set/unset/rotate/list). Pointeurs JSON (RFC 6901) tels que /credentials/cfDnsApiToken.

get

Lire une valeur de configuration via un pointeur JSON. Les champs sensibles sont masqués sauf avec --reveal (humains uniquement).

rdc config field get [options]
OptionLibelléRequisDéfaut
--pointer <pointer>Pointeur JSON vers le champ (ex : /credentials/cfDnsApiToken)Oui-
--revealAfficher les valeurs sensibles en clair (TTY interactif uniquement ; audité)Non-
--digestAfficher l'empreinte SHA-256 au lieu de la valeur (sûr à partager avec des agents)Non-

set

Écrire une valeur de configuration à un pointeur JSON. Les chemins sensibles exigent --current (preuve de connaissance).

rdc config field set [options]
OptionLibelléRequisDéfaut
--pointer <pointer>Pointeur JSON vers le champ (ex : /credentials/cfDnsApiToken)Oui-
--new <value>Nouvelle valeur (interprétée comme JSON si elle commence par {, [, ", true, false, null ou un nombre)Oui-
--current <value>Valeur actuelle en clair — requise pour modifier les chemins sensibles (preuve de connaissance)Non-

unset

Supprimer une valeur de configuration à un pointeur JSON. Les chemins sensibles exigent --current.

rdc config field unset [options]
OptionLibelléRequisDéfaut
--pointer <pointer>Pointeur JSON vers le champ (ex : /credentials/cfDnsApiToken)Oui-
--current <value>Valeur actuelle en clair — requise pour supprimer les chemins sensiblesNon-

rotate

Rotation d'une valeur sensible sans --current. TTY interactif uniquement ; audité en évidence.

rdc config field rotate [options]
OptionLibelléRequisDéfaut
--pointer <pointer>Pointeur JSON vers le champ sensible (ex : /credentials/cfDnsApiToken)Oui-
--new <value>Nouvelle valeurOui-

list

Lister chaque modèle de pointeur enregistré avec son type et sa politique de commit/chiffrement.

rdc config field list [options]
OptionLibelléRequisDéfaut
--sensitiveAfficher uniquement les modèles sensibles (non publics)Non-

1.13 edit

Ouvre la configuration active dans $EDITOR comme projection JSONC caviardée. Humains uniquement ; les agents sont refusés.

rdc config edit [options]
OptionLibelléRequisDéfaut
--revealAfficher les valeurs sensibles en clair (TTY interactif uniquement ; audité)Non-
--dumpAfficher la configuration actuelle en JSONC sur stdout au lieu d'ouvrir l'éditeur (lecture seule ; sûr pour les agents si caviardé)Non-
--apply <file>Appliquer un fichier JSONC modifié (saute le lancement de $EDITOR)Non-
--current-secrets <file>Fichier JSON mappant pointeur→ancien texte en clair pour la porte de connaissance sur --applyNon-
--editor <cmd>Commande d'éditeur (suit la priorité git : --editor > $GIT_EDITOR > git config core.editor > $VISUAL > $EDITOR)Non-

1.14 audit

Inspecter le journal d'audit de configuration (JSONL chaîné par hachage dans ~/.config/rediacc/audit.log.jsonl)

log

Afficher les entrées d'audit récentes au format JSON

rdc config audit log [options]
OptionLibelléRequisDéfaut
--since <spec>Afficher les entrées postérieures à (ex. : '24h', '7d', horodatage ISO)Non-
--path <glob>Filtrer par motif de pointeur JSON (ex. : /credentials/*)Non-
--actor <kind>Filtrer par type d'acteur (human|agent)Non-

tail

Diffuser les nouvelles entrées en temps réel (Ctrl+C pour arrêter)

rdc config audit tail

verify

Vérifier l'intégrité de la chaîne SHA-256 de toutes les entrées d'audit

rdc config audit verify

1.15 reconcile

Reconstruit l'état d'exécution à partir de la vérité des machines. Corrige les données d'attachement et de routage obsolètes.

rdc config reconcile [options]
OptionLibelléRequisDéfaut
--machine <m...>Limiter la réconciliation à ces machinesNon-
--dry-runAfficher les actions prévues sans effectuer de modificationsNon-
--accept-observedRéécrit un placement déclaré pour qu'il corresponde à l'emplacement réel de l'image, mais uniquement lorsque cela est sans ambiguïté (observé sur exactement une machine). Les doublons restent des conflits.Non-

1.16 rotate-cek

Faire tourner la clé de chiffrement de la configuration de l'organisation

rdc config rotate-cek [options]
OptionLibelléRequisDéfaut
--api-url <url>URL du serveur de compteNon-

2. Gestion du stockage de données

Pools de stockage nommés qui contiennent des dépôts. Un datastore est mobile (attachez-le à une machine, déplacez-le vers une autre) et à monteur unique (une seule machine le détient à la fois). Le datastore par défaut implicite de chaque machine n'est pas géré ici.

2.1 resize

Agrandir ou réduire un datastore. Il s'agit d'une opération hors ligne : les dépôts qu'il contient doivent être arrêtés.

rdc datastore resize <datastore> [options]
OptionLibelléRequisDéfaut
--size <size>Nouvelle taille (par exemple 200G)Oui-
--debugActiver la sortie de débogage (mode local)Non-

2.2 fork

Forker un datastore en copy-on-write. Le fork est instantané et son coût ne croît pas avec la taille du pool. Nécessite le backend rbd : un datastore local n'a pas de clone au niveau bloc, les dépôts qu'il contient se forkent donc un par un par reflink à la place (rdc repo fork).

rdc datastore fork <datastore> [options]
OptionLibelléRequisDéfaut
--tag <tag>Tag pour le fork (le résultat est name:tag)Oui-
--attach-to <machine>Attacher immédiatement le fork à cette machine (nécessite --writes)Non-
--writes <disposition>Où vont les écritures du fork : local (instantané, éphémère) ou ceph (clone durable)Non-
--cow-size <size>Taille de l'overlay pour --writes localNon-
--debugActiver la sortie de débogage (mode local)Non-

2.3 status

Afficher un datastore : son backend, son attachement, son utilisation, ses dépôts et ses snapshots. Un datastore détaché rapporte quand même son enregistrement.

rdc datastore status <datastore> [options]
OptionLibelléRequisDéfaut
--debugActiver la sortie de débogage (mode local)Non-

2.4 create

Créer un datastore nommé supplémentaire sur une machine. Un backend local est un pool basé sur fichier sur cette machine et y reste. Un backend rbd vit dans Ceph, il peut donc se déplacer vers toute machine atteignant le même cluster. Passez --cluster pour en faire un datastore du monde kubernetes ; cette référence arrière est fixée à la création.

rdc datastore create <datastore> [options]
OptionLibelléRequisDéfaut
-m, --machine <name>Machine sur laquelle créer le datastoreOui-
--size <size>Taille du datastore (par exemple 100G)Oui-
--backend <type>Backend de stockage : local (basé sur fichier, reste sur cette machine) ou rbd (Ceph, déplaçable)Nonlocal
--pool <name>Pool Ceph pour le backend rbd (par défaut : rbd)Non-
--image <name>Nom de l'image RBD pour le backend rbd (par défaut : le nom du datastore)Non-
--cluster <name>Cluster Kubernetes auquel appartient ce datastore. Défini signifie dépôts kubernetes uniquement ; non défini signifie dépôts docker uniquement. Fixé à la création.Non-
--debugActiver la sortie de débogage (mode local)Non-

2.5 list

Lister les datastores nommés, où ils sont attachés et ce qu'ils contiennent.

rdc datastore list [place]

2.6 attach

Attacher un datastore à une machine. Une seule machine détient un datastore à la fois, donc l'attacher ailleurs le déplace : l'ancien détenteur le libère d'abord, et un transfert échoué laisse l'attachement d'origine intact. Un fork doit indiquer où vont ses écritures.

rdc datastore attach <datastore> [options]
OptionLibelléRequisDéfaut
--to <machine>Machine à laquelle attacher le datastoreOui-
--writes <disposition>Où vont les écritures d'un fork : local (instantané, éphémère, perdu au détachement) ou ceph (clone durable dans le pool). Requis pour un fork.Non-
--cow-size <size>Taille de l'overlay pour --writes localNon-
--no-autoNe pas rattacher automatiquement ce datastore au démarrageNon-
--forceForcer la déconnexion d'un détenteur périmé qui n'a pas libéré le datastore proprementNon-
--debugActiver la sortie de débogage (mode local)Non-

2.7 detach

Détacher un datastore de sa machine. Les dépôts qu'il contient s'arrêtent d'abord. Un fork attaché avec --writes local n'a nulle part où réécrire son overlay ; le détacher jette donc l'overlay et nécessite --discard.

rdc datastore detach <datastore> [options]
OptionLibelléRequisDéfaut
--discardJeter un fork à écritures locales et son overlay. Les données ne sont pas récupérables.Non-
-y, --yesIgnorer l'invite de confirmationNon-
--debugActiver la sortie de débogage (mode local)Non-

2.8 snapshot

Prendre et lister les snapshots à un instant T d'un datastore. Un snapshot au repos ne coûte rien et c'est ce dont un fork clone.

create

Prendre un snapshot à un instant T d'un datastore. Rien ne s'arrête. L'instant est cohérent au crash près, pas cohérent au niveau applicatif : si vous avez besoin qu'une écriture précise soit DANS le snapshot, synchronisez-la d'abord.

rdc datastore snapshot create <datastore> [options]
OptionLibelléRequisDéfaut
--snapshot <label>Libellé du snapshot (par défaut : un horodatage UTC)Non-
--debugActiver la sortie de débogage (mode local)Non-

list

Lister les snapshots d'un datastore.

rdc datastore snapshot list <datastore> [options]
OptionLibelléRequisDéfaut
--debugActiver la sortie de débogage (mode local)Non-

2.9 delete

Détruire un datastore et tout ce qu'il contient. Il se détache d'abord ; s'il ne peut pas se détacher proprement, la suppression échoue plutôt que de laisser un pool monté orphelin.

rdc datastore delete <datastore> [options]
OptionLibelléRequisDéfaut
-y, --yesIgnorer l'invite de confirmationNon-
--forceSupprimer même si des dépôts pointent encore dessus. Leurs données disparaissent avec lui.Non-
--debugActiver la sortie de débogage (mode local)Non-

3. Gestion des Machines

Inspecter l'état d'une machine distante : ressources système, conteneurs en cours d'exécution, services systemd, dépôts déployés et diagnostics de santé. Requêtes en lecture seule ; pour modifier des dépôts, utilisez `repo`. Sous-commandes clés : status (état complet, filtré avec --system, --containers, --repositories, --services), health, list, add, remove, setup, prune, provision, deprovision.

3.1 list

Lister les machines

rdc machine list [options]
OptionLibelléRequisDéfaut
--search <text>Rechercher dans {{field}}Non-
--sort <field>Trier par champNon-
--descTrier par ordre décroissantNon-

3.2 health

Vérifier la santé de la machine pour les pipelines CI/CD

La commande health affiche les métriques système, l'état des conteneurs, la stabilité des services et les informations de stockage — utile pour les vérifications de pipeline CI/CD.

rdc machine health <name> [options]
OptionLibelléRequisDéfaut
-t, --team <name>Nom de l'équipeNon-

3.3 provision

Provisionner une nouvelle machine chez un fournisseur cloud avec OpenTofu

rdc machine provision <name> [options]
OptionLibelléRequisDéfaut
--provider <name>Nom du fournisseur cloud (depuis machine provider add)Oui-
--region <region>Remplacer la région par défautNon-
--type <type>Remplacer le type d'instance par défautNon-
--image <image>Remplacer l'image OS par défautNon-
--ssh-user <user>Nom d'utilisateur SSH pour la nouvelle VM (par défaut : root)Non-
--base-domain <domain>Domaine de base pour l'infrastructure (ex. example.com). Implique --infraNon-
--no-infraIgnorer la configuration d'infrastructure (proxy + DNS)Non-
--debugActiver la sortie de débogage (mode local)Non-

3.4 deprovision

Détruire une machine provisionnée dans le cloud et la supprimer de la configuration

rdc machine deprovision <name> [options]
OptionLibelléRequisDéfaut
--forceIgnorer l'invite de confirmationNon-
--debugActiver la sortie de débogage (mode local)Non-

3.5 prune

Supprimer les ressources orphelines du datastore et les instantanés périmés d'une machine

rdc machine prune <name> [options]
OptionLibelléRequisDéfaut
--dry-runAfficher ce qui serait supprimé sans effectuer de modificationsNon-
--orphaned-reposSupprimer chaque image de dépôt sur la machine absente de votre configuration CLI locale. Comportement grossier : supprime aussi les forks créés par d'autres outils sans entrée de configuration locale, même quand leur miroir renet les identifie correctement comme des forks. Utilisez --prune-unknown pour le comportement plus fin qui respecte le miroir.Non-
--prune-unknownSupprime uniquement les dépôts que le miroir renet .interim/state ne peut pas classer (pas dans la configuration locale ET pas de miroir marqué fork). Strictement plus restreint que --orphaned-repos : les forks sans configuration sont préservés quand le miroir les identifie. Les orphelins hérités pré-miroir et les grands obsolètes dont l'entrée de configuration a été supprimée tombent tous dans cette catégorie.Non-
--force-delete-mountedRemplace la vérification de sécurité de montage et supprime les dépôts même s'ils sont actuellement montés ou ont des conteneurs Docker en cours. Distinct de --force (qui ne remplace que la période de grâce d'archive). S'applique à la fois à --orphaned-repos et à --prune-unknown.Non-
--forceIgnorer les invites de confirmationNon-
--grace-days <days>Période de grâce en jours pour les dépôts récemment archivés (par défaut : 7)Non-
--debugActiver la sortie de débogage (mode local)Non-

3.6 add

Ajouter une machine à la configuration actuelle

rdc machine add <name> [options]
OptionLibelléRequisDéfaut
--ip <address>Adresse IP ou nom d'hôte de la machineOui-
--user <username>Nom d'utilisateur SSHOui-
--port <port>Port SSHNon22

3.7 infra

Gérer la configuration d'infrastructure (proxy, DNS, certificats)

cert

Gérer les certificats TLS en cache

clear:

Supprimer le cache de certificats

rdc machine infra cert clear

pull:

Télécharger et mettre en cache les certificats TLS depuis une machine

rdc machine infra cert pull <machine> [options]
OptionLibelléRequisDéfaut
--no-pruneNe pas nettoyer les certificats d'ID réseau obsolètesNon-
--debugActiver la sortie de débogage (mode local)Non-

push:

Envoyer les certificats TLS en cache vers une machine

rdc machine infra cert push <machine> [options]
OptionLibelléRequisDéfaut
--debugActiver la sortie de débogage (mode local)Non-

status:

Afficher l'inventaire des certificats en cache

rdc machine infra cert status

push

Envoyer la configuration d'infrastructure à la machine (proxy Traefik, routeur, Cloudflare DNS). Exécutez d'abord 'machine infra set <machine>'

rdc machine infra push <machine> [options]
OptionLibelléRequisDéfaut
--debugActiver la sortie de débogage (mode local)Non-

set

Définir la configuration d'infrastructure pour une machine (spécifique à la machine : IPs, domaine, ports ; partagé : email de certificat, token DNS Cloudflare)

rdc machine infra set <machine> [options]
OptionLibelléRequisDéfaut
--public-ipv4 <ip>Adresse IPv4 publique (par machine)Non-
--public-ipv6 <ip>Adresse IPv6 publique (par machine)Non-
--base-domain <domain>Domaine de base pour les applications (par machine)Non-
--cert-email <email>E-mail pour les notifications de certificats TLS (partagé entre machines)Non-
--cf-dns-token <token>Jeton Cloudflare DNS API pour le défi ACME DNS-01 (partagé entre machines)Non-
--tcp-ports <ports>Ports TCP à rediriger (séparés par des virgules, ex., 25,143,465)Non-
--udp-ports <ports>Ports UDP à rediriger (séparés par des virgules, ex., 53)Non-

show

Afficher la configuration d'infrastructure pour une machine

rdc machine infra show <machine>

3.8 provider

Gérer les fournisseurs cloud pour le provisionnement automatique de machines

add

Ajouter un fournisseur cloud

rdc machine provider add <name> [options]
OptionLibelléRequisDéfaut
--provider <source>Source de fournisseur connue (ex., linode/linode, hetznercloud/hcloud)Non-
--source <source>Source personnalisée de fournisseur OpenTofu (ex., vultr/vultr)Non-
--token <token>Jeton API pour le fournisseur cloudOui-
--region <region>Région par défaut pour les nouvelles machinesNon-
--type <type>Type/taille d'instance par défautNon-
--image <image>Image OS par défautNon-
--ssh-user <user>Nom d'utilisateur SSH pour les nouvelles VMs (par défaut : root)Non-
--resource <type>Personnalisé : type de ressource OpenTofu pour les VMsNon-
--label-attr <attr>Personnalisé : nom d'attribut pour le libellé de la VMNon-
--region-attr <attr>Personnalisé : nom d'attribut pour la régionNon-
--size-attr <attr>Personnalisé : nom d'attribut pour le type d'instanceNon-
--image-attr <attr>Personnalisé : nom d'attribut pour l'image du système d'exploitationNon-
--ipv4-output <attr>Personnalisé : attribut de sortie pour l'adresse IPv4Non-
--ipv6-output <attr>Personnalisé : attribut de sortie pour l'adresse IPv6Non-
--ssh-key-attr <attr>Personnalisé : nom d'attribut pour les clés SSHNon-
--ssh-key-format <format>Personnalisé : format de clé SSH (inline_list ou resource_id)Non-
--ssh-key-resource <type>Personnalisé : type de ressource OpenTofu pour les clés SSHNon-

list

Lister les fournisseurs cloud configurés

rdc machine provider list

remove

Supprimer la configuration d'un fournisseur cloud

rdc machine provider remove <name>

3.9 remove

Supprimer une machine de la configuration actuelle

rdc machine remove <name> [options]
OptionLibelléRequisDéfaut
-y, --yesIgnorer l'invite de confirmationNon-
--forceSupprimer la machine même si des dépôts y sont encore placés, laissant ces placements orphelins.Non-

3.10 scan-keys

Scanner les clés d'hôte SSH pour les machines de la configuration actuelle

rdc machine scan-keys [name]

3.11 setup

Provisionner une machine distante pour les dépôts (installe renet, configure Docker, datastore BTRFS). Idempotent. Requis après config machine add et avant repo create

rdc machine setup <name> [options]
OptionLibelléRequisDéfaut
--datastore-path <path>Chemin du datastore sur la machine distanteNon/mnt/rediacc
--datastore-size <size>Taille du datastore (ex. : 95%, 100G)Non95%
--debugActiver la sortie de débogage (mode local)Non-

3.12 status

Afficher l'état complet de la machine (système, dépôts, conteneurs, services)

rdc machine status [name] [options]
OptionLibelléRequisDéfaut
--debugActiver la sortie de débogage (mode local)Non-
--systemInclure uniquement les informations systèmeNon-
--repositoriesInclure uniquement les dépôtsNon-
--containersInclure uniquement les conteneursNon-
--servicesInclure uniquement les servicesNon-
--networkInclure uniquement les interfaces réseauNon-
--block-devicesInclure uniquement les périphériques de blocNon-
--licensesInclure les statuts de licences des dépôtsNon-
--storage-healthAfficher la fragmentation BTRFS et les économies reflink par dépôtNon-
--datastoresAfficher les datastores attachés (montage, attachement, utilisation)Non-
--health-checkMode de vérification de santé - sort avec le code 2 si des conteneurs ne sont pas sainsNon-
--stability-checkMode de vérification de stabilité - sort avec le code 2 si des services échouent/redémarrentNon-
--search <text>Filtrer les dépôts par nomNon-
--sync-certsRécupère aussi le cache de certificats ACME de la machine après la requêteNon-
--strictSortir avec un code non nul (code 2) si un conteneur a dépassé le seuil de dérive de santéNon-

4. Gestion des clusters

Provisionner et gérer des clusters : des ensembles nommés de pools de nœuds (ceph, k8s-server, k8s-agent, hyperconverged) sur un réseau privé. Les membres d'un pool deviennent des machines à part entière, si bien que toutes les commandes -m fonctionnent sur eux.

4.1 create

Déclarer et provisionner un cluster : machines, pools Ceph et Kubernetes. Passez --provider et --pool pour déclarer en une étape ; un create seul provisionne un cluster déjà déclaré.

rdc cluster create <cluster> [options]
OptionLibelléRequisDéfaut
--provider <provider>Fournisseur : une clé cloudProviders, ou 'kvm'Non-
--pool <spec...>Spécification de pool name:role:count[:size] (role : ceph|k8s-server|k8s-agent|hyperconverged)Non-
--declare-onlyEnregistrer le cluster dans la configuration sans le provisionnerNon-
--network-cidr <cidr>CIDR du réseau privé (ex. 10.0.0.0/24)Non-
--network-primitive <primitive>Primitive réseau (ex. vlan, vpc, network)Non-
--control-node <machine>Machine explicite pour le nœud de contrôle (par défaut : premier membre k8s-server)Non-
--net-name <name>KVM : réseau libvirt pour ce cluster (ex. renet12)Non-
--net-base <prefix>KVM : préfixe réseau, les trois premiers octets (ex. 192.168.112)Non-
--net-offset <n>KVM : décalage ajouté à l'id de chaque VM lors du calcul de son adresseNon-
--control-id <n>KVM : id de VM du nœud de contrôle et de registre (par défaut : 1)Non-
--docker-registry <endpoint>KVM : point de terminaison du registre Docker dans la VM pour ce clusterNon-
--ssh-user <user>Utilisateur SSH pour les membres provisionnésNon-
--base-domain <domain>Domaine de base pour le DNS public du cluster (hérité d'une machine voisine à défaut)Non-
--control-ds-size <size>Taille du datastore de contrôle d'ancrage (par défaut : 10G)Non-
--control-ds-backend <backend>Backend du datastore de contrôle d'ancrage : local | ceph (par défaut : ceph si le cluster a Ceph, sinon local)Non-
--control-ds-pool <pool>Pool RBD Ceph pour le datastore de contrôle d'ancrage (backend ceph)Non-
--debugActiver la sortie de débogage (mode local)Non-

4.2 status

Liste tous les clusters, ou affiche la configuration complète d'un cluster avec --name.

rdc cluster status [cluster]

4.3 scale

Modifie le nombre de membres d'un pool (ajoute/retire des machines et fait rejoindre/évacuer des nœuds). Les pools k8s-agent sont redimensionnés sur place ; la croissance du pool ceph se fait directement via cephadm.

rdc cluster scale <cluster> [options]
OptionLibelléRequisDéfaut
--pool <pool>Nom du poolOui-
--count <n>Nombre de membres souhaitéOui-
--debugActiver la sortie de débogage (mode local)Non-

4.4 destroy

Détruit les membres provisionnés et retire le cluster ainsi que ses machines de la configuration.

rdc cluster destroy <cluster> [options]
OptionLibelléRequisDéfaut
--forceIgnorer la confirmation et poursuivre malgré les erreurs de destructionNon-
--debugActiver la sortie de débogage (mode local)Non-

4.5 kubeconfig

Récupère le kubeconfig depuis le nœud de contrôle du cluster via SSH et le met en cache localement (0600) pour kubectl.

rdc cluster kubeconfig <cluster>

4.6 fork

Clone un cluster entier, données de ses dépôts incluses, dans un nouveau cluster : copy-on-write coordonné des images du cluster et des PV, puis réécriture de l'identité des nœuds pour que le fork démarre avec de nouvelles adresses. Le cluster parent continue de tourner.

rdc cluster fork <cluster> [options]
OptionLibelléRequisDéfaut
--tag <tag>Tag du forkOui-
--to <dest-cluster>Cluster de destination dont les nœuds hébergent le fork (son nœud de contrôle et ses agents ; un cluster ne peut pas forker sur ses propres machines, car deux k3s ne peuvent pas partager un namespace réseau hôte)Oui-
--writes <disposition>Mode d'écriture du fork : local (overlay dm-COW éphémère, aucune empreinte Ceph) | ceph (clone durable). Défaut : localNon-
--upDémarrer les dépôts forkés et bloquer sur l'état de santé du cluster une fois le fork démarréNon-
--debugActiver la sortie de débogage (mode local)Non-

4.7 migrate

Déplace un cluster entier, données de ses dépôts incluses, vers une autre machine ou un autre datacenter avec une bascule courte (pré-copie à chaud, puis arrêt-redémarrage sur la destination).

rdc cluster migrate <cluster> [options]
OptionLibelléRequisDéfaut
--to <dest-cluster>CibleOui-
--debugActiver la sortie de débogage (mode local)Non-

4.8 join

Adopter une machine déjà enregistrée comme nœud agent Kubernetes d'un cluster, en utilisant le même jeton de connexion dérivé de la CA que lors de l'ancrage initial et d'un nouveau rattachement.

rdc cluster join <machine> [options]
OptionLibelléRequisDéfaut
--cluster <name>Cluster à rejoindreOui-
--debugActiver la sortie de débogage (mode local)Non-

4.9 evict

Drainer le nœud, supprimer son objet Node et effacer son appartenance au cluster. Le cluster est déduit de la machine ; une machine qui monte encore un datastore est refusée.

rdc cluster evict <machine> [options]
OptionLibelléRequisDéfaut
--forceIgnorer le drainage lorsque le nœud est déjà hors serviceNon-
--debugActiver la sortie de débogage (mode local)Non-

4.10 rehearse

Répéter une release ou une mise à niveau : forker le cluster vers une destination comme fork éphémère et jetable (writes=local, role=rehearsal, sans secrets), le démarrer, bloquer sur son état de santé, puis le jeter. Le cluster parent n'est jamais touché.

rdc cluster rehearse <cluster> [options]
OptionLibelléRequisDéfaut
--on <dest-cluster>Cluster de destination sur lequel démarrer la répétition jetableOui-
--tag <tag>Tag optionnel pour le fork de répétition (par défaut : horodaté)Non-
--debugActiver la sortie de débogage (mode local)Non-

4.11 snapshot

Snapshots à un instant T de tout le cluster. Un instant cohérent au crash près sur chaque datastore adossé à rbd que possède le cluster, pris via le group snapshot de Ceph : rien ne s'arrête et le cluster ne le remarque jamais. Les datastores à backend local n'ont pas de primitive de groupe au niveau bloc, ils tombent donc hors de cet instant et sont signalés comme tels. L'instant est cohérent au crash près, pas cohérent au niveau applicatif : si vous avez besoin qu'une écriture précise soit DANS le snapshot, synchronisez-la d'abord.

create

Prend un snapshot de chaque datastore adossé à rbd dans le cluster à UN seul instant. Rien n'est arrêté. Tout datastore à backend local dans le cluster est signalé comme hors de cet instant : il ne fait pas partie du snapshot. L'instant est cohérent au crash près, pas cohérent au niveau applicatif : si vous avez besoin qu'une écriture précise soit DANS le snapshot, synchronisez-la d'abord.

rdc cluster snapshot create <cluster> [options]
OptionLibelléRequisDéfaut
--snapshot <label>Libellé du snapshot (par défaut : un horodatage UTC)Non-
--debugActiver la sortie de débogage (mode local)Non-

list

Lister les group snapshots du cluster.

rdc cluster snapshot list <cluster> [options]
OptionLibelléRequisDéfaut
--debugActiver la sortie de débogage (mode local)Non-

5. Serveur MCP

Serveur Model Context Protocol pour les agents IA

5.1 serve

Démarrer le serveur MCP (transport stdio)

rdc mcp serve [options]
OptionLibelléRequisDéfaut
--config <name>Nom de la configuration à utiliser pour toutes les commandesNon-
--timeout <ms>Délai d'expiration par défaut des commandes en millisecondesNon120000

6. Cycle de vie des dépôts

Déployer et gérer des dépôts chiffrés sur les machines. Sous-commandes clés : create, up (déployer), down (arrêter), fork (clone CoW instantané), delete, push/pull (sauvegarde), sync (transfert de fichiers). Cycle de vie : repo create → repo up → repo down. Consultez Concepts clés dans rdc --help pour l'architecture, le routage et le détail des variables d'environnement.

6.1 up

Déployer ou mettre à jour un dépôt (montage, exécution de Rediaccfile up qui appelle renet compose). La machine est dérivée du placement de la réf. Les routes du proxy prennent ~3s pour devenir actives après le déploiement. Affiche le motif d'URL pour les services exposés en HTTP (label rediacc.service_port) à la fin. Le premier déploiement et les forks sont montés automatiquement. La restauration du checkpoint CRIU est détectée automatiquement ; utilisez --skip-checkpoint pour forcer un démarrage propre. Utilisez --all --machine <m> pour déployer tous les dépôts d'une machine.

rdc repo up [ref] [options]
OptionLibelléRequisDéfaut
--no-startMonter et préparer le dépôt sans exécuter ses étapes up() (fusionne l'ancien 'repo mount' ; ouverture LUKS et, pour les dépôts de cluster, génération des PV).Non-
--skip-checkpointIgnorer la restauration du checkpoint CRIU même si des données de checkpoint existent (forcer un démarrage propre)Non-
--tlsDemander un certificat TLS dédié pour ce dépôt (les forks utilisent le certificat partagé de la machine par défaut)Non-
--no-waitRendre la main dès que les conteneurs sont démarrés ; les healthchecks continuent en arrière-planNon-
--allDéployer tous les dépôts dont la machine d'origine est --machine (forme par lots)Non-
-m, --machine <name>Avec --all : la machine dont les dépôts sont concernés par l'opération par lotsNon-
--include-forksÉgalement monter/démarrer les dépôts forkésNon-
--parallelDémarrer les dépôts simultanémentNon-
--concurrency <n>Nombre maximum de dépôts simultanés (par défaut : 3)Non3
-y, --yesPasser la confirmation pour les opérations par lotsNon-
--debugActiver la sortie de débogage (mode local)Non-
--skip-router-restartNe pas redémarrer le serveur de routes après la mise à jour du binaireNon-
--dry-runAfficher les actions prévues sans effectuer de modificationsNon-

6.2 down

Arrêter les conteneurs Docker du dépôt (exécute Rediaccfile down via renet compose). La machine est dérivée du placement de la réf. Ne démonte PAS le volume chiffré : le dépôt reste monté et peut être redémarré avec 'repo up'. Utilisez --unmount pour aussi fermer le conteneur LUKS après l'arrêt (fusionne l'ancien 'repo unmount'). Utilisez --checkpoint pour sauvegarder l'état du processus CRIU avant l'arrêt (le prochain 'repo up' le restaure automatiquement). Utilisez --all --machine <m> pour arrêter tous les dépôts d'une machine.

rdc repo down [ref] [options]
OptionLibelléRequisDéfaut
--unmountAussi démonter (fermer le conteneur LUKS) après l'arrêt. Requis avant 'repo resize' ou pour sécuriser complètement le volumeNon-
--checkpointCréer un checkpoint CRIU avant l'arrêt (sauvegarder l'état mémoire des processus pour restauration ultérieure via 'repo up')Non-
--allArrêter tous les dépôts dont la machine d'origine est --machine (forme par lots)Non-
-m, --machine <name>Avec --all : la machine dont les dépôts sont concernés par l'opération par lotsNon-
--parallelDémarrer les dépôts simultanémentNon-
--concurrency <n>Nombre maximum de dépôts simultanés (par défaut : 3)Non3
-y, --yesPasser la confirmation pour les opérations par lotsNon-
--debugActiver la sortie de débogage (mode local)Non-
--skip-router-restartNe pas redémarrer le serveur de routes après la mise à jour du binaireNon-
--dry-runAfficher les actions prévues sans effectuer de modificationsNon-

6.3 status

Obtenir le statut du dépôt

rdc repo status <ref> [options]
OptionLibelléRequisDéfaut
--debugActiver la sortie de débogage (mode local)Non-
--skip-router-restartNe pas redémarrer le serveur de routes après la mise à jour du binaireNon-

6.4 cat

Lire une fenêtre bornée d'un fichier dans un dépôt et l'écrire sur stdout (borné côté serveur ; les diagnostics vont sur stderr)

rdc repo cat <ref> [options]
OptionLibelléRequisDéfaut
--remote-file <path>Chemin du fichier à lire, relatif à la racine de montage du dépôtOui-
--max-bytes <n>Nombre maximum d'octets à lire et afficher (défaut 1 MiB, plafond absolu 50 MiB)Non-
--offset <n>Décalage en octets à partir duquel commencer la lectureNon-
--head <lines>N'afficher que les N premières lignes (incompatible avec une plage d'octets)Non-
--tail <lines>N'afficher que les N dernières lignes (incompatible avec une plage d'octets)Non-
--statN'afficher que la taille, le type et la date de modification ; ne pas lire le contenuNon-
--force-binaryAutoriser la lecture de contenu binaire (contenant NUL)Non-
--debugActiver la sortie de débogage (mode local)Non-
--skip-router-restartNe pas redémarrer le serveur de routes après la mise à jour du binaireNon-

6.5 diff

Diff fichier-par-fichier façon git entre deux dépôts forkés en copy-on-write. Signale les fichiers ajoutés, modifiés, supprimés et renommés. Compare le dépôt donné par --name (côté cible/nouveau) à son parent, résolu depuis la configuration locale, ou à un dépôt --base explicite (côté base/ancien). Métadonnées uniquement et indépendant de la taille : compare les images LUKS chiffrées au niveau bloc sans les déchiffrer, donc un dépôt de 1 Go et un de 100 Go sont comparés en les mêmes millisecondes.

rdc repo diff <ref> [options]
OptionLibelléRequisDéfaut
--base <ref>Dépôt avec lequel comparer (côté base/ancien) ; par défaut le parent de --nameNon-
--name-onlyAfficher uniquement les chemins de fichiers modifiés, un par ligne (sans lettres de statut)Non-
--statAfficher la magnitude de changement par fichier (deltas en octets et blocs) et les totauxNon-
--content [path]Afficher un diff textuel unifié pour un seul fichier (nécessite un chemin de fichier)Non-
--fastFaire confiance au filtre de blocs ; sauter la confirmation par hash de contenu (peut sur-signaler Modifié)Non-
--debugActiver la sortie de débogage (mode local)Non-
--skip-router-restartNe pas redémarrer le serveur de routes après la mise à jour du binaireNon-

6.6 list

Lister les dépôts sur une machine

rdc repo list [options]
OptionLibelléRequisDéfaut
-m, --machine <name>Nom de la machine cibleNon-
--datastore <name>Lister les dépôts de ce datastore (résolu vers la machine qui le détient actuellement)Non-
--debugActiver la sortie de débogage (mode local)Non-
--skip-router-restartNe pas redémarrer le serveur de routes après la mise à jour du binaireNon-

6.7 create

Créer un nouveau dépôt. Indiquez sa machine d'origine une fois : une machine ou un datastore.

rdc repo create <name> [options]
OptionLibelléRequisDéfaut
-m, --machine <name>Nom de la machine cibleNon-
--datastore <name>Datastore nommé qui héberge le dépôt (répartition docker, ou la forme cluster)Non-
--size <size>Taille du dépôt (ex. 10G, 100G, 1T)Non-
--no-dockerNe pas démarrer le démon Docker après la créationNon-
--debugActiver la sortie de débogage (mode local)Non-
--skip-router-restartNe pas redémarrer le serveur de routes après la mise à jour du binaireNon-

6.8 delete

Supprimer un dépôt et ses données. L'entrée de configuration est conservée ; utilisez --archive-config pour déplacer les identifiants vers deletedRepositories en vue d'une récupération via 'repo admin archive restore'. Prend une <ref> positionnelle ; un nom seul se résout vers la ligne grand et est refusé quand plusieurs dépôts partagent le même nom de base — passez name:tag pour cibler un fork.

rdc repo delete <ref> [options]
OptionLibelléRequisDéfaut
--archive-configDéplacer l'entrée de configuration vers deletedRepositories pour récupération ultérieureNon-
-y, --yesIgnorer l'invite de confirmationNon-
--debugActiver la sortie de débogage (mode local)Non-
--skip-router-restartNe pas redémarrer le serveur de routes après la mise à jour du binaireNon-
--dry-runAfficher les actions prévues sans effectuer de modificationsNon-

6.9 commit

Fige l'état actuel d'un fork de travail monté dans un nouveau commit immuable (à la manière de git). Le commit enregistre son message, son auteur, son horodatage et son parent dans le volume (afin qu'il voyage lors du push) et il est marqué en lecture seule — il refuse d'être monté. Le fork de travail reste inchangé, comme git qui laisse l'arbre de travail intact. Récupérez une copie modifiable d'un commit avec 'rdc repo checkout'.

rdc repo commit <ref> [options]
OptionLibelléRequisDéfaut
--message <msg>Message du commitOui-
--author <author>Auteur du commitNon-
--debugActiver la sortie de débogage (mode local)Non-

6.10 branch

Crée une réf de branch nommée pointant sur le commit actuel du fork de travail (son sommet). Les réfs de branch sont stockées dans la configuration CLI (machine = magasin d'objets, config = magasin de réfs).

rdc repo branch <ref> [options]
OptionLibelléRequisDéfaut
--branch <branch>Nom de la nouvelle brancheOui-

6.11 checkout

Clone par reflink un commit immuable (ou le sommet d'une branch) dans un nouveau fork de travail modifiable et fait pointer HEAD dessus. Quasi instantané et en temps constant (reflink BTRFS).

rdc repo checkout <commit-or-branch-ref> [options]
OptionLibelléRequisDéfaut
--tag <name>Nom du nouveau fork de travail modifiableOui-
--from <workingFork>Résoudre le paramètre positionnel <commit-or-branch-ref> comme nom de branche sur ce working forkNon-
--debugActiver la sortie de débogage (mode local)Non-
--skip-router-restartNe pas redémarrer le serveur de routes après la mise à jour du binaireNon-

6.12 log

Affiche l'historique des commits accessibles depuis le commit actuel d'un fork de travail (ou une référence de commit), en parcourant la chaîne de parents enregistrée par 'rdc repo commit'. Lit le miroir hors volume, donc aucun commit n'est déverrouillé.

rdc repo log <ref> [options]
OptionLibelléRequisDéfaut
--debugActiver la sortie de débogage (mode local)Non-

6.13 merge

Fusionne (merge) un commit source ou un fork dans un fork de travail cible. La cible active n'est jamais modifiée sur place : le résultat est construit dans un clone reflink puis permuté de manière atomique. Une cible montée ou en cours d'exécution est refusée, sauf avec --force, qui la met d'abord proprement au repos. Sans --resolve, il s'agit d'un take-theirs sur l'image entière (la cible devient la source) ; avec --resolve ours|theirs, il s'agit d'une fusion à trois sources (three-way) par fichier face à l'ancêtre commun, prenant les modifications uniques de chaque côté et résolvant les conflits bilatéraux selon le drapeau.

rdc repo merge <ref> [options]
OptionLibelléRequisDéfaut
--from <source>Commit ou fork source à partir duquel fusionner (merge)Oui-
--forceMettre d'abord au repos une cible montée/en cours d'exécution, puis fusionner (merge) (ne modifie jamais un montage actif)Non-
`—resolve <ourstheirs>`Résolution de conflit par fichier pour une fusion à trois sources : 'ours' conserve la version de la cible, 'theirs' prend celle de la source. Omettez pour un fast-forward sur l'image entière (take-theirs).Non
--base <guid>GUID du commit ancêtre commun pour une fusion à trois sources (utilisé avec --resolve). Par défaut, le parent du commit source ou le commit actuel de la cible.Non-
--debugActiver la sortie de débogage (mode local)Non-

6.14 gc

Supprime les objets de commit immuables d'une machine qu'aucune branche ni HEAD n'atteint (GC par accessibilité). La machine est le magasin d'objets ; la configuration CLI est le magasin de références. À blanc par défaut : passez --apply pour supprimer. Ne touche jamais à un objet monté ni à un fork de travail.

rdc repo gc [options]
OptionLibelléRequisDéfaut
-m, --machine <name>Nom de la machine cibleOui-
--applySupprimer réellement les commits inaccessibles (aperçu à blanc par défaut)Non-
--debugActiver la sortie de débogage (mode local)Non-

6.15 fork

Créer un fork CoW (Copy-on-Write) d'un dépôt. LE FORK EST QUASI INSTANTANÉ ET EN TEMPS CONSTANT quelle que soit la taille du dépôt, le reflink BTRFS clone l'image sous-jacente, si bien qu'un dépôt de 100 Go et un dépôt de 1 Go forkent dans les mêmes ~secondes. Le fork obtient un NOUVEAU GUID, networkId, une nouvelle plage IP et un domaine auto-route ({service}-fork-{tag}.{repo}.{machine}.{baseDomain}), et constitue une copie totalement indépendante. Le fork en ligne est pris en charge, le parent peut continuer de tourner. Le fork hérite automatiquement des identifiants de chiffrement du parent. Utilisez --checkpoint pour capturer l'état du processus CRIU avant le fork ; le fork se restaure automatiquement au premier 'repo up' (l'état en mémoire est préservé). FORK INTER-MACHINES : forkez d'abord localement, puis transférez : (1) rdc repo fork <parent-ref> --tag <name>, (2) rdc repo push <fork-ref> --to <target-machine>, (3) rdc backup restore <fork-ref> --as <fork-name> -m <target-machine> --up. ATTENTION : n'utilisez PAS "repo push" seul pour forker, cela crée une copie brute avec le MÊME GUID (pas un fork indépendant). Forkez toujours d'abord pour obtenir une nouvelle identité. Les auto-routes utilisent le nom du dépôt, chaque fork obtient donc automatiquement un domaine unique.

rdc repo fork <ref> [options]
OptionLibelléRequisDéfaut
--tag <name>Tag pour le fork (crée nom:tag)Oui-
--checkpointCréer un checkpoint CRIU sur la source avant le fork (capturer l'état mémoire des processus pour restauration sur le fork)Non-
--immutableMarque le fork en lecture seule : il refuse le montage et conserve son image stable au niveau des octets pour toujours (un commit/une base figé pour le push delta entre machines)Non-
--upMonter et démarrer les services après le fork (fork + mount + up en une seule commande)Non-
--no-waitAvec --up : rend la main dès que les conteneurs sont démarrés ; les healthchecks continuent en arrière-plan (idéal pour les forks jetables)Non-
--debugActiver la sortie de débogage (mode local)Non-
--skip-router-restartNe pas redémarrer le serveur de routes après la mise à jour du binaireNon-

6.16 replicate

Crée N répliques de lecture d'un dépôt en quelques secondes, quelle que soit la taille de la base de données. Prend UN snapshot de datastore, puis effectue N fork-attaches en temps constant (copy-on-write, écritures locales jetables) répartis sur les nœuds du cluster, et applique un overlay généré : un PersistentVolume épinglé par réplique, un StatefulSet, et deux Services ({repo}-rw vers le primaire, {repo}-ro sur l'ensemble des répliques). Les répliques sont des copies à un instant T : aucun flux de réplication, aucune lecture de ses propres écritures ; chaque réplique effectue une passe de récupération après incident avant de servir. Actualisez-les avec 'repo replicate refresh'. Les ensembles de répliques sont un état géré : voir 'repo replicate status' et supprimez avec 'repo replicate remove'.

status

Afficher les ensembles de répliques gérés : répliques, nœuds d'hébergement, datastores de fork, snapshot et horodatages de rafraîchissement.

rdc repo replicate status <ref>

remove

Supprimer un ensemble de répliques : supprimer ses objets k8s générés (limité par labels), abandonner ses datastores de fork, supprimer son snapshot et oublier l'état. Les étapes d'infra sont best-effort, de sorte que la suppression converge même sur un cluster partiellement disparu.

rdc repo replicate remove <ref> [options]
OptionLibelléRequisDéfaut
--debugActiver la sortie de débogage (mode local)Non-

refresh

Faire basculer chaque réplique, UNE à la fois, vers un nouveau snapshot à un instant T : redémarrer le pod de la réplique, abandonner puis reforker son datastore sous le même chemin, et laisser la vérification de disponibilité (readiness) la réadmettre. N-1 répliques continuent de servir pendant ce temps.

rdc repo replicate refresh <ref> [options]
OptionLibelléRequisDéfaut
--debugActiver la sortie de débogage (mode local)Non-

6.17 canary

Faire tourner une NOUVELLE image à côté de la stable et répartir le trafic en direct entre les deux selon un pourcentage (échelon 2 de l'échelle de release). Crée un Deployment + Service canary sur les MÊMES données en production (pas de fork : les utilisateurs du canary sur des données forkées liraient des données obsolètes et écriraient dans une copie vouée à l'échec) et indique au proxy Rediacc de router le pourcentage donné du trafic du nom d'hôte stable vers lui. Un poids de 0 laisse le canary invisible ; un poids de 100 correspond au basculement blue/green. Avant chaque changement de canary, un snapshot de groupe automatique des datastores du cluster est pris (échelon 0 de l'échelle de release) comme annulation universelle. La compatibilité de schéma entre les deux versions (expand-contract) relève de la responsabilité de l'application. Pour les releases qui CASSENT le schéma, utilisez plutôt le blue/green : forkez le dépôt (instantané, données incluses), pointez le Service du fork ici avec un poids de 100, puis effectuez un rollback en redémarrant le parent intact ; les écritures effectuées après le basculement n'existent que dans la nouvelle copie, la fenêtre de rollback est donc une décision de politique.

status

Afficher les ensembles canary gérés : poids, images, Service stable et le dernier snapshot d'annulation de release.

rdc repo canary status <ref>

weight

Modifier le pourcentage de trafic routé vers un canary. Prend d'abord un nouveau snapshot de groupe d'annulation de release, puis réapplique l'overlay ; le proxy prend en compte la nouvelle répartition à son prochain cycle de rafraîchissement. Un poids de 100 envoie tout le trafic vers la nouvelle version (le basculement blue/green).

rdc repo canary weight <ref> [options]
OptionLibelléRequisDéfaut
--weight <percent>Pourcentage de trafic routé vers le canary (entier 0-100 ; 0 = invisible, 100 = bascule complète)Oui-
--debugActiver la sortie de débogage (mode local)Non-

remove

Supprimer le Deployment et le Service d'un canary (limité par labels) ; le Service stable sert à nouveau 100 %. Les snapshots d'annulation de release sont conservés ; nettoyez-les avec les commandes de snapshot du datastore.

rdc repo canary remove <ref> [options]
OptionLibelléRequisDéfaut
--debugActiver la sortie de débogage (mode local)Non-

create

Faire tourner une NOUVELLE image à côté de la stable et lui envoyer un pourcentage du trafic en direct. Le canary partage les données en production du dépôt (pas de fork), la compatibilité de schéma entre les deux versions relève donc de la responsabilité de l'application. Un snapshot de groupe des datastores du cluster est pris d'abord, comme annulation.

rdc repo canary create <ref> [options]
OptionLibelléRequisDéfaut
--image <image>Nouvelle image exécutée par le Deployment du canary (sur les données de production partagées)Oui-
--port <port>Port sur lequel l'application écoute (doit correspondre au Service stable)Oui-
--weight <percent>Pourcentage de trafic routé vers le canary (entier 0-100 ; 0 = invisible, 100 = bascule complète)Oui-
--service <name>Service stable avec lequel répartir le trafic (par défaut : le nom du dépôt)Non-
--replicas <n>Nombre de répliques du Deployment canary (par défaut : 1)Non-
--debugActiver la sortie de débogage (mode local)Non-

6.18 resize

Redimensionner un dépôt hors ligne (supporte l'expansion et la réduction)

rdc repo resize <ref> [options]
OptionLibelléRequisDéfaut
--size <size>Nouvelle taille du dépôt (ex. 10G, 100G, 1T)Oui-
--debugActiver la sortie de débogage (mode local)Non-
--skip-router-restartNe pas redémarrer le serveur de routes après la mise à jour du binaireNon-

6.19 expand

Étendre un dépôt monté en ligne (sans interruption)

rdc repo expand <ref> [options]
OptionLibelléRequisDéfaut
--size <size>Nouvelle taille du dépôt (ex. 10G, 100G, 1T)Oui-
--debugActiver la sortie de débogage (mode local)Non-
--skip-router-restartNe pas redémarrer le serveur de routes après la mise à jour du binaireNon-

6.20 trim

Récupère l'espace du pool de datastore depuis les dépôts montés (en ligne, sans interruption). Les blocs supprimés dans les dépôts sont rendus au pool via fstrim. Sans réf, traite tous les dépôts montés sur -m ainsi que le datastore lui-même. fstrim est ignoré pour les dépôts en cours de sauvegarde ; la récupération --docker s'exécute quand même

rdc repo trim [ref] [options]
OptionLibelléRequisDéfaut
--dockerLibérer l'espace Docker (conteneurs arrêtés, images orphelines, cache de build) ; s'exécute même pendant un instantané de sauvegarde actifNon-
--docker-volumesSupprimer également les volumes Docker inutilisésNon-
--report-onlyAfficher l'état des discards et l'estimation récupérable sans rien modifierNon-
-m, --machine <name>Nom de la machine cibleNon-
--debugActiver la sortie de débogage (mode local)Non-

6.21 policy

Gère la politique de taille automatique appliquée par le mainteneur de stockage de la machine : agrandit le quota d'un dépôt en ligne quand il se remplit (jamais au-delà de max-quota, jamais quand le pool est bas) et lance des trims planifiés. Il n'y a pas de réduction automatique ; utilisez 'repo resize' pour cela. Sans réf, la politique par défaut à l'échelle de la machine sur -m est visée

set

Définit des champs de la politique de taille. Seuls les drapeaux passés sont modifiés ; les autres champs conservent leurs valeurs. Activer l'auto-agrandissement exige --max-quota : le plafond est votre consentement explicite au surprovisionnement du pool

rdc repo policy set [ref] [options]
OptionLibelléRequisDéfaut
--auto-grow <bool>Activer l'agrandissement automatique du quota en ligne (true/false)Non-
--max-quota <size>Plafond de l'auto-agrandissement (ex. 200G) ; requis pour l'auto-agrandissementNon-
--grow-threshold <percent>% d'occupation du système de fichiers déclenchant un agrandissement (défaut 85)Non-
--grow-step <step>Croissance par étape : absolue (10G) ou pourcentage du quota (20%)Non-
--auto-trim <bool>Activer le trim planifié (true/false)Non-
--trim-interval <hours>Heures minimales entre trims automatiques (défaut 24)Non-
-m, --machine <name>Nom de la machine cibleNon-
--debugActiver la sortie de débogage (mode local)Non-

get

Affiche le défaut machine enregistré, la surcharge du dépôt (avec une réf), et la politique effective fusionnée appliquée par le mainteneur

rdc repo policy get [ref] [options]
OptionLibelléRequisDéfaut
-m, --machine <name>Nom de la machine cibleNon-
--debugActiver la sortie de débogage (mode local)Non-

6.22 push

Pousser un dépôt vers un distant (machine ou stockage). Le type de cible est détecté automatiquement depuis la configuration. Pour un transfert machine-à-machine, l'image chiffrée du dépôt est copiée avec le MÊME GUID — c'est une sauvegarde/migration, pas un fork. Pour créer un fork indépendant, utilisez d'abord 'repo fork', puis push. Une copie poussée atterrit comme un ARTEFACT de sauvegarde : démarrez-le sur la cible avec 'backup restore <ref> --as <name> -m <target> --up'

rdc repo push <ref> [options]
OptionLibelléRequisDéfaut
--to <remote>Nom de la machine ou du stockage de destination (détecté automatiquement depuis la configuration)Non-
--to-machine <machine>Non-
--provision <provider>Provisionner automatiquement la machine cible via le fournisseur cloud si elle n'existe pasNon-
--checkpointCréer un checkpoint CRIU avant la sauvegarde (capture l'état de la mémoire des processus pour la migration à chaud)Non-
--forceForcer l'écrasement de la sauvegarde existanteNon-
-w, --watchSurveiller les modificationsNon-
--bwlimit <limit>Limite de bande passante pour le transfert rsync (ex : "6M", "10M")Non-
--delta-base <guid>GUID de base immuable présent à l'identique sur les deux machines ; ne transférer que les blocs modifiés (cible machine). Omettre pour une base automatique sans interventionNon-
--strategy <strategy>Stratégie de delta par blocs lors de l'utilisation d'une base de delta : auto, physical ou sharedNon-
--debugActiver la sortie de débogage (mode local)Non-
--skip-router-restartNe pas redémarrer le serveur de routes après la mise à jour du binaireNon-

6.23 pull

Tirer un dépôt depuis un distant (machine ou stockage). Omettre le nom pour tirer tous les dépôts. Le type de source est détecté automatiquement depuis la configuration. Utilisez --up pour déployer après le pull

rdc repo pull <ref> [options]
OptionLibelléRequisDéfaut
--from <remote>Nom de la machine ou du stockage source (détecté automatiquement depuis la configuration)Non-
--from-machine <machine>Non-
--forceForcer l'écrasement du dépôt existantNon-
--upAprès le pull, monter et déployer le dépôt sur cette machineNon-
-w, --watchSurveiller les modificationsNon-
--bwlimit <limit>Limite de bande passante pour le transfert rsync (ex : "6M", "10M")Non-
--delta-base <guid>GUID de base immuable présent à l'identique sur les deux machines ; ne recevoir que les blocs modifiés (source machine)Non-
--strategy <strategy>Stratégie de delta par blocs lors de l'utilisation d'une base de delta : auto, physical ou sharedNon-
--debugActiver la sortie de débogage (mode local)Non-
--skip-router-restartNe pas redémarrer le serveur de routes après la mise à jour du binaireNon-

6.24 migrate

Migrer à chaud un dépôt d'une machine à une autre avec un temps d'arrêt minimal. rsync en deux phases : transfert en masse pendant le fonctionnement, puis brève pause pour la synchronisation delta. Déplace tout le dépôt (le routage est repointé vers le nouvel emplacement) et, une fois le déplacement réussi, supprime les images source (utilisez --keep-source pour les conserver). Prend en charge le checkpoint CRIU pour la migration de l'état mémoire des processus et l'auto-provisionnement des machines cibles

rdc repo migrate <ref> [options]
OptionLibelléRequisDéfaut
--to <place>Machine ou cluster de destinationOui-
--provision <provider>Provisionnement automatique de la cible via un fournisseur cloud (ex : hetzner, linode)Non-
--bwlimit <limit>Limite de bande passante pour le transfert rsync (ex : 10M)Non-
--checkpointMigration en direct CRIU : capturer et restaurer l'état de la mémoire des processusNon-
--delta-base <guid>GUID de base immuable pour le delta de bascule (avancé ; par défaut, la base de la phase 1)Non-
--strategy <strategy>Stratégie de delta par blocs pour la bascule : auto, physical ou sharedNon-
--skip-dnsIgnorer le changement des enregistrements DNS après la migrationNon-
--keep-sourceConserver les images source après un déplacement réussi (elles sont supprimées par défaut ; les copies restantes ne sont adressables par aucun enregistrement de configuration et reconcile les signale comme égarées)Non-
--debugActiver la sortie de débogage (mode local)Non-

6.25 sync

Synchroniser les dépôts et fichiers (push/pull en masse, transfert de fichiers)

upload

Envoyer des fichiers vers un dépôt

rdc repo sync upload <ref> [options]
OptionLibelléRequisDéfaut
--local <paths...>Un ou plusieurs chemins locaux de fichier ou de répertoire (par défaut : répertoire actuel)Non-
--remote <path>Chemin du sous-répertoire distant dans le dépôtNon-
--remote-file <path>Chemin unique d'un fichier distant (relatif à la racine du dépôt) comme cible du téléversement. Mutuellement exclusif avec --remote.Non-
--mirrorMode miroir - supprimer les fichiers distants non présents localementNon-
--verifyVérifier les fichiers à l'aide de sommes de contrôle après synchronisationNon-
--confirmAperçu des modifications et demande de confirmation avant synchronisationNon-
--exclude <patterns...>Motifs à exclure de la synchronisationNon-
--dry-runAfficher les actions prévues sans effectuer de modificationsNon-

download

Télécharger des fichiers depuis un dépôt

rdc repo sync download <ref> [options]
OptionLibelléRequisDéfaut
--local <path>Chemin du répertoire local (par défaut : répertoire actuel)Non-
--remote <path>Chemin du sous-répertoire distant dans le dépôtNon-
--remote-file <path>Chemin d'un fichier distant dans le dépôt (alternative à --remote pour les transferts de fichier unique)Non-
--mirrorMode miroir - supprimer les fichiers locaux non présents à distanceNon-
--verifyVérifier les fichiers à l'aide de sommes de contrôle après synchronisationNon-
--confirmAperçu des modifications et demande de confirmation avant synchronisationNon-
--exclude <patterns...>Motifs à exclure de la synchronisationNon-
--dry-runAfficher les actions prévues sans effectuer de modificationsNon-

status

Vérifier l'état de synchronisation et comparer les fichiers locaux/distants

rdc repo sync status <ref> [options]
OptionLibelléRequisDéfaut
--local <path>Chemin du répertoire local (par défaut : répertoire actuel)Non-
--remote <path>Chemin du sous-répertoire distant dans le dépôtNon-
--remote-file <path>Chemin d'un fichier distant dans le dépôt (alternative à --remote pour les transferts de fichier unique)Non-

6.26 tunnel

Créer un tunnel SSH de redirection de port vers le port d'un conteneur sur une machine distante. Détecte automatiquement le conteneur et le port lorsqu'il n'y a pas d'ambiguïté. Le tunnel reste ouvert jusqu'à ce que vous appuyiez sur Ctrl+C

rdc repo tunnel <ref> [options]
OptionLibelléRequisDéfaut
-c, --container <name>Nom du conteneur (détecté automatiquement s'il n'y en a qu'un en cours d'exécution)Non-
--port <port>Port du conteneur distant à redirigerNon-
--local <port>Port local (par défaut identique au port distant)Non-
--url-onlyAfficher uniquement l'URL locale lorsque le tunnel est prêt (lisible par les scripts)Non-

6.27 secret

Gérer les secrets par dépôt injectés au déploiement. Écriture seule : get ne renvoie que le digest (jamais la valeur en clair), set/unset exigent une correspondance de digest --current ou --rotate-secret. Deux modes de livraison : env (REDIACC_SECRET_<KEY>) et file (tmpfs à /var/run/rediacc/secrets/<networkId>/<KEY> via `secrets:` du compose). Les secrets n'entrent jamais dans l'image LUKS chiffrée ; les forks n'en héritent aucun.

get

Afficher le digest SHA-256 d'un secret. La valeur en clair n'est jamais renvoyée, par conception (écriture seule). Utilisez --current lors d'un set/unset ultérieur pour vérifier une valeur que vous connaissez déjà, ou effectuez une rotation via `set --rotate-secret`.

rdc repo secret get <ref> [options]
OptionLibelléRequisDéfaut
--key <KEY>Clé secrète en UPPER_SNAKE_CASE (max 64 caractères). Sera exposée comme REDIACC_SECRET_<KEY> pour le mode env ou /run/secrets/<key> dans les conteneurs pour le mode file.Oui-

list

Liste les clés et modes de secret (jamais les valeurs, jamais les digests).

rdc repo secret list <ref>

set

Définir ou écraser un secret. Les forks n'héritent pas ; définissez explicitement sur le fork. Dans un contexte d'agent, nécessite une correspondance de digest --current (style passwd).

rdc repo secret set <ref> [options]
OptionLibelléRequisDéfaut
--key <KEY>Clé secrète en UPPER_SNAKE_CASE (max 64 caractères). Sera exposée comme REDIACC_SECRET_<KEY> pour le mode env ou /run/secrets/<key> dans les conteneurs pour le mode file.Oui-
--value <value>Valeur du secret. Passez `-` pour lire depuis stdin (évite l'exposition dans l'historique du shell).Oui-
--mode <mode>Mode de livraison : 'env' (visible dans l'environnement du conteneur, docker inspect) ou 'file' (fichier tmpfs, jamais dans env). Défaut : file.Nonfile
--current <value>Valeur en clair précédente (précondition de type passwd). Requise pour l'écrasement/la suppression ; mutuellement exclusive avec --rotate-secret.Non-
--rotate-secretReconnaître la rotation ; ignorer la précondition --current (audité comme rotation). À utiliser lors d'une rotation intentionnelle sans vérifier la valeur précédente.Non-

unset

Supprime un secret. Dans un contexte d'agent, nécessite une correspondance de digest --current.

rdc repo secret unset <ref> [options]
OptionLibelléRequisDéfaut
--key <KEY>Clé secrète en UPPER_SNAKE_CASE (max 64 caractères). Sera exposée comme REDIACC_SECRET_<KEY> pour le mode env ou /run/secrets/<key> dans les conteneurs pour le mode file.Oui-
--current <value>Valeur en clair précédente (précondition de type passwd). Requise pour l'écrasement/la suppression ; mutuellement exclusive avec --rotate-secret.Non-
--rotate-secretReconnaître la rotation ; ignorer la précondition --current (audité comme rotation). À utiliser lors d'une rotation intentionnelle sans vérifier la valeur précédente.Non-

6.28 admin

Commandes d'administration et de maintenance des dépôts.

archive

Gestion comptable des enregistrements de dépôts archivés.

list:

Lister les identifiants de dépôts archivés

rdc repo admin archive list

purge:

Supprimer définitivement tous les identifiants archivés

rdc repo admin archive purge [name] [options]
OptionLibelléRequisDéfaut
-y, --yesIgnorer l'invite de confirmationNon-

restore:

Restaurer un identifiant de dépôt archivé

rdc repo admin archive restore <name> [options]
OptionLibelléRequisDéfaut
--new-name <name>Nouveau nom de la ressourceNon-

validate

Valider l'intégrité du dépôt

rdc repo admin validate <ref> [options]
OptionLibelléRequisDéfaut
--debugActiver la sortie de débogage (mode local)Non-
--skip-router-restartNe pas redémarrer le serveur de routes après la mise à jour du binaireNon-

fsck

Valide les références (branches, HEAD) de la configuration CLI par rapport aux objets réellement présents sur une machine. Signale les références cassées (une référence pointant vers un objet manquant) et les commits orphelins (un commit immuable qu'aucune référence n'atteint). Lecture seule.

rdc repo admin fsck [options]
OptionLibelléRequisDéfaut
-m, --machine <name>Nom de la machine cibleOui-

ownership

Changer la propriété du répertoire du dépôt

rdc repo admin ownership <ref> [options]
OptionLibelléRequisDéfaut
--uid <uid>UID du propriétaire (par défaut : 7111)Non-
--debugActiver la sortie de débogage (mode local)Non-
--skip-router-restartNe pas redémarrer le serveur de routes après la mise à jour du binaireNon-

autostart

Gérer le démarrage automatique des dépôts au démarrage

enable:

Activer le démarrage automatique pour un dépôt

rdc repo admin autostart enable [ref] [options]
OptionLibelléRequisDéfaut
--debugActiver la sortie de débogage (mode local)Non-
--skip-router-restartNe pas redémarrer le serveur de routes après la mise à jour du binaireNon-

disable:

Désactiver le démarrage automatique pour un dépôt

rdc repo admin autostart disable [ref] [options]
OptionLibelléRequisDéfaut
--debugActiver la sortie de débogage (mode local)Non-
--skip-router-restartNe pas redémarrer le serveur de routes après la mise à jour du binaireNon-

list:

Lister les dépôts avec le démarrage automatique activé

rdc repo admin autostart list [options]
OptionLibelléRequisDéfaut
-m, --machine <name>Nom de la machine cibleOui-
--debugActiver la sortie de débogage (mode local)Non-
--skip-router-restartNe pas redémarrer le serveur de routes après la mise à jour du binaireNon-

template

Appliquer un modèle à un dépôt

list:

Lister tous les modèles de déploiement intégrés à la CLI

rdc repo admin template list

apply:

Applique un modèle à un dépôt. Utilisez un nom de modèle intégré (par ex. app-postgres) ou --file pour un modèle JSON personnalisé. Cycle de vie du Rediaccfile : up() démarre les conteneurs (pull des images, génération des configurations ici), down() les arrête. Rediaccfile minimal : up() { renet compose -- pull; renet compose -- up -d; } down() { renet compose -- down; }. IMPORTANT : le Rediaccfile DOIT utiliser 'renet compose' : 'docker compose' est rejeté. VARIABLES D'ENVIRONNEMENT : deux niveaux : (a) shell du Rediaccfile : ${SVCNAME_IP} (par ex. APP_IP), ${REDIACC_WORKING_DIR}, ${REDIACC_NETWORK_ID}. (b) à l'intérieur des conteneurs : renet injecte automatiquement les variables d'environnement SERVICE_IP et REDIACC_NETWORK_ID. La réécriture bind eBPF gère l'isolation IP de façon transparente, les applications peuvent donc se lier à 0.0.0.0 et le noyau la réécrit vers la bonne IP loopback. Les health checks peuvent utiliser localhost. network_mode:host est injecté et ports: est ignoré. STOCKAGE : les bind-mounts ${REDIACC_WORKING_DIR}/... et les volumes Docker nommés sont tous deux sûrs : la racine des données Docker se trouve dans le montage LUKS chiffré. POLITIQUE DE REDÉMARRAGE : les politiques de redémarrage sont sûres : renet les retire automatiquement pour la compatibilité CRIU et le watchdog gère la récupération. Compose : n'ajoutez PAS de network_mode ni de labels rediacc.* (renet les injecte). Multi-projet : placez chaque sous-projet dans son propre sous-répertoire avec son propre Rediaccfile : renet les découvre et les exécute automatiquement dans l'ordre. Routage HTTPS : (A) Auto-route (compatible fork, recommandé) : n'ajoutez PAS traefik.enable. Renet génère automatiquement https://{serviceName}.{repoName}.{machineName}.{baseDomain}. Ajoutez le label rediacc.service_port=<port> pour les ports différents de 80. Chaque fork obtient un domaine unique. (B) Labels Traefik (domaine personnalisé, PAS compatible fork) : traefik.enable=true, traefik.http.routers.<n>.rule=Host(`domain`), traefik.http.routers.<n>.entrypoints=websecure,websecure-v6, traefik.http.routers.<n>.tls.certresolver=letsencrypt, traefik.http.services.<n>.loadbalancer.server.port=<port>. Pour TCP/UDP : rediacc.tcp_ports=3306 / rediacc.udp_ports=53

rdc repo admin template apply <ref> [options]
OptionLibelléRequisDéfaut
--template <name>Modèle à appliquerOui-
--file <path>Chemin vers un fichier JSON de modèle personnalisé ({"version":"2","files":{"Rediaccfile":"...","docker-compose.yml":"..."}}) : remplace le nom du modèle intégréNon-
--grand <name>Nom du grand dépôt (résolution automatique vers le GUID)Non-
--debugActiver la sortie de débogage (mode local)Non-
--skip-router-restartNe pas redémarrer le serveur de routes après la mise à jour du binaireNon-

6.29 promote

Remplacer les données du dépôt principal par les données d'un fork. Le principal conserve son identité (GUID, networkId, domaines, démarrage automatique, chaîne de sauvegardes) mais obtient les données mises à jour du fork. Les anciennes données de production sont conservées comme fork de sauvegarde. Utilisation : tester la mise à niveau sur le fork → vérifier → prise de contrôle en production.

rdc repo promote <fork-ref> [options]
OptionLibelléRequisDéfaut
-y, --yesIgnorer l'invite de confirmationNon-
--debugActiver la sortie de débogage (mode local)Non-
--skip-router-restartNe pas redémarrer le serveur de routes après la mise à jour du binaireNon-

6.30 logs

Afficher les journaux applicatifs des conteneurs d'un dépôt. Les dépôts docker lisent depuis le démon Docker propre au dépôt ; les dépôts kubernetes lisent les journaux des pods dans le namespace du dépôt. Si le dépôt fait tourner plusieurs conteneurs, nommez celui voulu avec --container.

rdc repo logs <ref> [options]
OptionLibelléRequisDéfaut
-c, --container <name>Conteneur à lire (nécessaire seulement si le dépôt en fait tourner plusieurs)Non-
-f, --followContinuer à diffuser les nouvelles lignes jusqu'à interruptionNon-
--lines <n>Nombre de lignes d'historique à afficher (par défaut : 100)Non100
--timestampsPréfixer chaque ligne de son horodatageNon-
--debugActiver la sortie de débogage (mode local)Non-

6.31 exec

Exécuter une commande à l'intérieur d'un conteneur de dépôt. Le code de sortie propre de la commande est transmis tel quel, ce qui fonctionne donc dans les scripts et les conditions. Les dépôts docker l'exécutent via le démon Docker du dépôt ; les dépôts kubernetes l'exécutent dans le namespace du dépôt.

rdc repo exec <ref> <cmd...> [options]
OptionLibelléRequisDéfaut
-c, --container <name>Conteneur dans lequel exécuter (nécessaire seulement si le dépôt en fait tourner plusieurs)Non-
-i, --interactiveAllouer un terminal (pour une commande qui en attend un)Non-
-u, --user <user>Utilisateur sous lequel exécuter la commandeNon-
--debugActiver la sortie de débogage (mode local)Non-

7. Jobs détachés

Gérer les jobs détachés sur une machine : les lister, vérifier leur statut, rejouer ou suivre leurs journaux d'événements, en annuler un, ou nettoyer ceux qui sont terminés. Un job détaché s'exécute sous systemd sur la machine : il survit donc à une perte de connexion et peut être réattaché plus tard.

7.1 list

Lister les jobs détachés sur une machine, du plus récent au plus ancien

rdc job list [options]
OptionLibelléRequisDéfaut
-m, --machine <name>Nom de la machine cibleOui-

7.2 status

Afficher le statut d'un job détaché

rdc job status <job-id> [options]
OptionLibelléRequisDéfaut
-m, --machine <name>Nom de la machine cibleOui-

7.3 logs

Rejouer ou suivre le journal d'événements d'un job détaché

rdc job logs <job-id> [options]
OptionLibelléRequisDéfaut
-m, --machine <name>Nom de la machine cibleOui-
-f, --followSuivre le flux jusqu'à la fin du jobNon-
--since-line <n>Reprendre après ce nombre de lignes (le nombre déjà reçu)Non-
--debugActiver la sortie de débogage (mode local)Non-

7.4 cancel

Annuler un job détaché en cours d'exécution

rdc job cancel <job-id> [options]
OptionLibelléRequisDéfaut
-m, --machine <name>Nom de la machine cibleOui-
-y, --yesIgnorer l'invite de confirmationNon-

7.5 gc

Supprimer les jobs terminés et leurs journaux

rdc job gc [options]
OptionLibelléRequisDéfaut
-m, --machine <name>Nom de la machine cibleOui-
--older-than <duration>Nettoyer les jobs terminés il y a plus longtemps que cette valeur, en heures (par défaut : 168)Non-
-y, --yesIgnorer l'invite de confirmationNon-

8. Sauvegarde et restauration

Gérer les stratégies de sauvegarde, leurs exécutions planifiées et les artefacts qu'elles produisent : déclarez une stratégie pour un dépôt, exécutez-la ou restaurez-la à la demande, et inspectez les archives qu'elle a écrites sur un point de terminaison de stockage.

8.1 schedule

Déployer la planification de sauvegarde sur une machine distante (minuteries systemd)

rdc backup schedule [options]
OptionLibelléRequisDéfaut
-m, --machine <name>Nom de la machineOui-
--dry-runPrévisualiser les unités générées sans déployerNon-
--forceContinuer même si une sauvegarde est en cours (la nouvelle unité s'applique au prochain tick du minuteur ; l'invocation en cours conserve son ancienne unité)Non-
--reset-failedEffacer l'état d'échec des services modifiés après un déploiement réussi (désactivé par défaut, préserve le signal d'échec)Non-
--debugActiver la sortie de débogage (mode local)Non-

8.2 cancel

Annuler une sauvegarde en cours sur une machine distante

rdc backup cancel [strategy] [options]
OptionLibelléRequisDéfaut
-m, --machine <name>Nom de la machineOui-
--debugActiver la sortie de débogage (mode local)Non-

8.3 list

Lister les artefacts de sauvegarde sur une machine ou un stockage.

rdc backup list [artifact-ref] [options]
OptionLibelléRequisDéfaut
-m, --machine <name>Nom de la machineNon-
--storage <name>Lister les artefacts sur ce point de terminaison de stockageNon-
--path <subdir>Sous-répertoire dans la racine du stockage. Si omis, hot/ et cold/ sont listés et fusionnés.Non-
-w, --watchSurveiller les modificationsNon-
--debugActiver la sortie de débogage (mode local)Non-

8.4 restore

Transformer un artefact de sauvegarde en dépôt actif. Le placement est indiqué ici.

rdc backup restore <artifact-ref> [options]
OptionLibelléRequisDéfaut
--as <name>Nom du dépôt restauré (par défaut : le nom de l'artefact)Non-
-m, --machine <name>Nom de la machineNon-
--datastore <name>Restaurer dans ce datastore nommé (sa machine attachée l'héberge)Non-
--upDéployer le dépôt restauré après le transfertNon-
--health-window <seconds>Fenêtre totale du health-gate en secondes (par défaut 300)Non-
--health-timeout <seconds>Délai d'expiration par tentative de healthcheck en secondes (par défaut 30)Non-
-y, --yesIgnorer l'invite de confirmationNon-
--debugActiver la sortie de débogage (mode local)Non-

8.5 run

Déclencher une sauvegarde immédiatement sur une machine distante

rdc backup run [strategy] [options]
OptionLibelléRequisDéfaut
-m, --machine <name>Nom de la machineOui-
-w, --watchSurveiller les modificationsNon-
--debugActiver la sortie de débogage (mode local)Non-

8.6 status

Afficher l'état de sauvegarde et l'état du minuteur sur une machine distante

rdc backup status [strategy] [options]
OptionLibelléRequisDéfaut
-m, --machine <name>Nom de la machineOui-
--debugActiver la sortie de débogage (mode local)Non-

8.7 strategy

Gérer les stratégies de sauvegarde nommées (modes chaud/froid, destinations, planification)

set

Créer ou mettre à jour une stratégie de sauvegarde

rdc backup strategy set <strategy> [options]
OptionLibelléRequisDéfaut
--destination <name>Nom de la destination au sein de la stratégieNon-
--storage <name>Nom de la configuration de stockage (identifiants rclone)Non-
--cron <expression>Planification cron (ex. "0 * * * *" pour toutes les heures)Non-
--mode <mode>Mode de sauvegarde : "hot" (sans interruption) ou "cold" (arrêt, instantané, redémarrage)Non-
--bwlimit <limit>Limite de bande passante rclone (ex. "6M", "10M:off", "08:00,3M;22:00,10M")Non-
--include <repos>Sauvegarder uniquement ces repos (noms séparés par des virgules)Non-
--exclude <repos>Exclure ces repos de la sauvegarde (noms séparés par des virgules)Non-
--folder <path>Sous-dossier dans le bucket de stockage pour cette destination (ex. hot, cold)Non-
--enableActiver la stratégie ou la destinationNon-
--disableDésactiver la stratégie ou la destinationNon-

bind

Associer une stratégie de sauvegarde à une machine pour y déployer sa planification

rdc backup strategy bind <strategy> [options]
OptionLibelléRequisDéfaut
-m, --machine <name>Nom de la machine cibleOui-

unbind

Dissocier une stratégie de sauvegarde d'une machine

rdc backup strategy unbind <strategy> [options]
OptionLibelléRequisDéfaut
-m, --machine <name>Nom de la machine cibleOui-

remove

Supprimer une stratégie de sauvegarde ou une destination

rdc backup strategy remove <strategy> [options]
OptionLibelléRequisDéfaut
--destination <name>Supprimer uniquement cette destination (conserve les autres destinations)Non-

list

Lister toutes les stratégies de sauvegarde

rdc backup strategy list

show

Afficher les détails de la stratégie de sauvegarde

rdc backup strategy show [strategy]

9. Gestion du Stockage

Gérer les points de terminaison de stockage de sauvegarde externes (S3 et autres cibles compatibles rclone) : les enregistrer et les supprimer, lister ce qui est enregistré, parcourir les artefacts qu'ils contiennent, et nettoyer les sauvegardes orphelines.

9.1 list

Lister les points de terminaison de stockage. Indiquez un nom pour le détail complet.

rdc storage list [name] [options]
OptionLibelléRequisDéfaut
--revealAfficher la configuration du stockage en clair (TTY interactif uniquement ; audité)Non-

9.2 browse

Parcourir les fichiers dans un système de stockage

rdc storage browse <storage> [options]
OptionLibelléRequisDéfaut
--path <subpath>Chemin du sous-répertoire à listerNon

9.3 prune

Supprimer les sauvegardes orphelines du stockage qui ne sont plus dans aucune configuration. Sécurisé multi-configuration avec protection par période de grâce.

rdc storage prune <storage> [options]
OptionLibelléRequisDéfaut
-m, --machine <name>Machine exécutrice : exécute les appels list/delete de rclone vers le stockage. Requise car les clients ne sont pas censés avoir rclone installé localement ; les identifiants de stockage proviennent toujours de votre configuration locale.Oui-
--dry-runAfficher les actions prévues sans effectuer de modificationsNon-
--forceIgnorer les invites de confirmationNon-
--force-delete-mountedRemplace la vérification de sécurité de montage et supprime les sauvegardes cloud même si le GUID source est actuellement monté ou a un conteneur en cours sur la machine exécutrice. Distinct de --force (qui ne remplace que la période de grâce pour les dépôts archivés).Non-
--grace-days <days>Période de grâce en jours pour les dépôts récemment archivés (par défaut : 7)Non-
--debugActiver la sortie de débogage (mode local)Non-
--skip-router-restartNe pas redémarrer le serveur de routes après la mise à jour du binaireNon-

9.4 add

Enregistrer un point de terminaison de stockage.

rdc storage add <name> [options]
OptionLibelléRequisDéfaut
--vault <json>Contenu du coffre en tant que chaîne JSONOui-

9.5 import

Importer des stockages depuis un fichier de configuration rclone

rdc storage import <file> [options]
OptionLibelléRequisDéfaut
--name <name>Importer uniquement cette section nomméeNon-

9.6 remove

Supprimer un point de terminaison de stockage de la configuration.

rdc storage remove <name> [options]
OptionLibelléRequisDéfaut
-y, --yesIgnorer l'invite de confirmationNon-
--dry-runAfficher les actions prévues sans effectuer de modificationsNon-

10. Intégration VS Code

Ouvrir VS Code Remote SSH vers une machine ou un dépôt

10.1 connect

Ouvrir VS Code sur une machine ou à l'intérieur d'un dépôt.

rdc vscode connect <target> [options]
OptionLibelléRequisDéfaut
-f, --folder <path>Chemin du dossier distant à ouvrirNon-
--url-onlyAfficher l'URI VS Code au lieu de le lancerNon-
-n, --new-windowOuvrir dans une nouvelle fenêtre VS CodeNon-
--skip-env-setupIgnorer la configuration de l'environnement distantNon-
--insidersUtiliser les paramètres VS Code InsidersNon-
--browserServir VS Code navigateur depuis le sandbox du dépôt (aucun VS Code local nécessaire)Non-
--no-openAfficher l'URL sans ouvrir le navigateur localNon-
--local <port>Port local (par défaut identique au port distant)Non-
--server-provider <id>Implémentation du serveur VS Code navigateur (openvscode, code-server)Non-
--server-archive <file>Chemin de l'archive du serveur pré-installée sur la machine (installations hors ligne)Non-

10.2 list

Lister les connexions SSH VS Code configurées

rdc vscode list

10.3 cleanup

Supprimer les configurations SSH VS Code

rdc vscode cleanup [options]
OptionLibelléRequisDéfaut
--allSupprimer toutes les configurations SSH rediaccNon-
-c, --connection <name>Supprimer une connexion spécifiqueNon-

10.4 check

Vérifier l'installation et la configuration de VS Code

rdc vscode check [options]
OptionLibelléRequisDéfaut
--insidersUtiliser les paramètres VS Code InsidersNon-

10.5 serve

Gérer le serveur VS Code navigateur dans le sandbox

status

Afficher si le serveur VS Code navigateur est en cours d'exécution

rdc vscode serve status <target> [options]
OptionLibelléRequisDéfaut
--server-provider <id>Implémentation du serveur VS Code navigateur (openvscode, code-server)Non-

stop

Arrêter le serveur VS Code navigateur

rdc vscode serve stop <target> [options]
OptionLibelléRequisDéfaut
--server-provider <id>Implémentation du serveur VS Code navigateur (openvscode, code-server)Non-

11. Accès Terminal SSH

Ouvrir un terminal SSH vers une machine ou un dépôt. La cible est un nom de machine ou une réf de dépôt, et le contexte du dépôt (DOCKER_HOST, répertoire de travail, environnement) est configuré automatiquement. Utilisez `-c` pour exécuter une commande unique de façon non interactive. Pour les journaux de conteneur ou une commande ponctuelle dans un conteneur, utilisez `repo logs` et `repo exec`. Pour VS Code, utilisez `vscode`.

11.1 connect

Ouvrir un shell sur une machine, ou à l'intérieur d'un dépôt avec son Docker configuré.

rdc term connect <target> [options]
OptionLibelléRequisDéfaut
-c, --command <cmd>Exécuter une commande au lieu d'un shell interactifNon-
--externalForcer le lancement dans une fenêtre de terminal externeNon-
--reset-homeRéinitialiser la couche de répertoire personnel par dépôt pour un nouveau départNon-

12. Commandes Rapides (Raccourcis)

12.1 run

Exécuter une fonction (raccourci pour : queue create)

rdc run

12.2 trace

Tracer une tâche (raccourci pour : queue trace)

rdc trace

12.3 cancel

Annuler une tâche (raccourci pour : queue cancel)

rdc cancel

12.4 retry

Réessayer une tâche échouée (raccourci pour : queue retry)

rdc retry

13. Gestion des Abonnements

Gérer les licences et les jetons d'abonnement. Connectez-vous avec login, inspectez avec status, réémettez les licences avec refresh.

13.1 login

S’authentifier avec un jeton API du portail web

rdc subscription login [options]
OptionLibelléRequisDéfaut
-t, --token <token>Jeton API (rdt_...)Non-
--server <url>URL du serveur de compteNon-

13.2 logout

Supprimer le jeton d'abonnement stocké

rdc subscription logout

13.3 status

Afficher l'abonnement et l'état des licences pour une machine.

rdc subscription status [options]
OptionLibelléRequisDéfaut
-m, --machine <name>Nom de la machineNon-

13.4 refresh

Actualiser les licences depuis le serveur de compte.

rdc subscription refresh [options]
OptionLibelléRequisDéfaut
-m, --machine <name>Nom de la machineNon-
--repo <ref>Réf de dépôt : nom, ou nom:tag, éventuellement avec @machine (par exemple shop ou shop:test)Non-

14. Mises à jour CLI

Vérifier et appliquer les mises à jour du CLI

rdc update [options]
OptionLibelléRequisDéfaut
--forceForcer la mise à jour même si déjà à jourNon-
--check-onlyVérifier les mises à jour sans téléchargerNon-
--rollbackRevenir à la version précédenteNon-
--statusAfficher l'état et les diagnostics de la mise à jour automatiqueNon-
--channel <channel>Définir le canal de publication (stable ou edge)Non-

15. Crédits tiers

Affiche les composants tiers embarqués avec rdc : les binaires que renet intègre et redistribue (CRIU, rsync, rclone), le runtime Node.js embarqué, et les dépendances npm embarquées. Indique les versions, les identifiants de licence SPDX, et les URLs d'archives sources à version exacte requises pour la conformité GPL. Utilisez --licenses pour afficher le texte complet THIRD_PARTY_LICENSES fourni avec les builds de release.

rdc credits [options]
OptionLibelléRequisDéfaut
--licensesAfficher le texte complet THIRD_PARTY_LICENSES fourni avec les builds de releaseNon-

16. Diagnostics système

Diagnostiquer l'environnement CLI et l'intégration renet

rdc doctor

17. Opérations VM Locales

Provisionnement et gestion de VM locales via KVM/QEMU/Hyper-V (plateforme détectée automatiquement). Pas pour les machines distantes — utilisez `machine` pour celles-ci. Sous-commandes clés : up (démarrer les VM), down (arrêter), status (lister les VM en cours), ssh (se connecter à une VM), setup (installer les prérequis), check (vérifier que l'hôte est prêt).

17.1 up

Provisionner un cluster VM localement

rdc ops up [options]
OptionLibelléRequisDéfaut
--forceForcer le redémarrage de toutes les VMNon-
--parallelCréer les VM en parallèleNon-
--basicCluster minimal (pont + 1 worker)Non-
--liteIgnorer le provisionnement des VM (statut uniquement)Non-
--skip-orchestrationIgnorer l'orchestration du clusterNon-
--backend <backend>Backend de virtualisation (kvm|qemu, détection automatique)Non-
--os <name>Système d'exploitation de la VM (ex. ubuntu-24.04, debian-12)Non-
--debugActiver la sortie de débogage (mode local)Non-

17.2 down

Détruire le cluster VM

rdc ops down [options]
OptionLibelléRequisDéfaut
--backend <backend>Backend de virtualisation (kvm|qemu, détection automatique)Non-
--debugActiver la sortie de débogage (mode local)Non-

17.3 status

Afficher l'état du cluster VM

rdc ops status [options]
OptionLibelléRequisDéfaut
--backend <backend>Backend de virtualisation (kvm|qemu, détection automatique)Non-

17.4 ssh

Se connecter en SSH à une VM

rdc ops ssh [options]
OptionLibelléRequisDéfaut
--vm-id <id>ID de la machine virtuelleOui-
-c, --command <cmd>Exécuter une commande au lieu d'un shell interactifNon-
--backend <backend>Backend de virtualisation (kvm|qemu, détection automatique)Non-
--user <user>Nom d'utilisateur SSH pour la connexion à la VMNon-

17.5 setup

Installer les prérequis de virtualisation

rdc ops setup [options]
OptionLibelléRequisDéfaut
--debugActiver la sortie de débogage (mode local)Non-

17.6 check

Vérifier les prérequis de virtualisation

rdc ops check

18. Service exécuteur

Exécute ce processus en tant qu'exécuteur afin que les clients puissent lancer des commandes via lui au lieu de se connecter eux-mêmes en SSH

rdc serve [options]
OptionLibelléRequisDéfaut
-p, --port <port>Port sur lequel écouterNon8080
--host <host>Adresse à laquelle se lierNon0.0.0.0
--mode <mode>Emplacement : daemon (hôte du client) ou containerNondaemon

Messages d'Erreur Courants

Lorsque quelque chose ne va pas, la CLI fournit des messages d'erreur clairs :

ErreurSignification
L'authentification est requise. Exécutez : rdc subscription loginVous devez d'abord vous connecter
Aucune configuration active. Créez-en une avec : rdc config init <name>Aucune configuration active — créez-en une avec `rdc config init`
Permission refuséeVotre compte ne dispose pas des permissions requises
Le nom de la machine est requis. Utilisez --machine <name>Spécifiez une machine avec `--machine` ou définissez un défaut de contexte
Le nom de l'équipe est requis. Utilisez --team ou définissez une valeur par défaut avec : rdc config set team <name>Spécifiez une équipe avec `--team` ou définissez un défaut de contexte
Le nom de la région est requis. Utilisez --region ou définissez une valeur par défaut avec : rdc config set region <name>Spécifiez une région avec `--region` ou définissez un défaut de contexte

Formats de Sortie

Toutes les commandes list/get prennent en charge plusieurs formats de sortie via `--output` :

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

Cela facilite l'intégration de la CLI Rediacc dans les scripts, les pipelines CI/CD et les workflows d'automatisation.