Saltar para o conteúdo principal Saltar para a navegação Saltar para o rodapé

Aplicação CLI

Guia completo para utilizar a interface de linha de comandos Rediacc para gestão da plataforma

Referência da CLI Rediacc

Visão Geral

A **CLI Rediacc** (`rdc`) é uma interface de linha de comandos para gerir infraestrutura auto-hospedada -- máquinas, repositórios, armazenamento, backups e muito mais.

Instalação

Transfira o binário mais recente para a sua plataforma a partir da [página de versões Rediacc](https://www.rediacc.com) ou instale através do seu gestor de pacotes:

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

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

Opções Globais

Todos os comandos suportam estas flags globais:

FlagDescrição
--outputFormato de saída (table|json|yaml|csv)
--configUsar configuração específica para este comando
--langSubstituição de idioma ({{languages}})
--forceIgnorar pedidos de confirmação

1. Gestão de Configurações

Gerir ficheiros de configuração: criar, mudar, editar, reconciliar o estado e funcionalidades transversais (campos, auditoria, chaves SSH, sincronização remota).

Os ficheiros de configuração guardam detalhes de ligação (URL da API, credenciais, equipa/região/bridge predefinidas) para que possa alternar entre ambientes rapidamente.

1.1 prune

Remover peso morto do ficheiro de configuração local em ~/.config/rediacc/<config>.json. São limpos três grupos, todos puramente locais (sem chamadas SSH/renet): (1) entradas de cache de certificados ACME cujo GUID/repositório/máquina âncora já não está na configuração activa; (2) repositórios arquivados cujo período de graça expirou (por omissão 7 dias, ver defaults.pruneGraceDays); (3) referências cruzadas pendentes (machine→strategy, strategy→repo). Os recursos em uso, as credenciais, os tokens de armazenamento e o known-hosts nunca são alterados. O comportamento por omissão é aplicar as alterações; passe --dry-run apenas para pré-visualizar.

rdc config prune [options]
FlagDescriçãoObrigatórioPredefinição
--dry-runPré-visualizar o que seria removido sem modificar o ficheiro de configuração. Reflecte a semântica desactivada por omissão dos outros comandos prune.Não-
--certs-onlyRestringir ao grupo de cache de certificados ACME. Ignora a limpeza de arquivos e referências cruzadas. Mutuamente exclusivo com --archives-only e --refs-only.Não-
--archives-onlyRestringir à remoção de arquivos expirados. Ignora a cache de certificados e a limpeza de referências cruzadas. Mutuamente exclusivo com --certs-only e --refs-only.Não-
--refs-onlyRestringir a referências cruzadas pendentes (machine→strategy, excludes/includes de strategy→repo). Ignora a cache de certificados e os arquivos. Mutuamente exclusivo com --certs-only e --archives-only.Não-
--purge-archivedElimina TODOS os repositórios arquivados independentemente da idade, não apenas os que passaram o período de graça. Equivalente a executar 'rdc repo admin archive purge' para cada repositório arquivado. Use apenas quando tiver a certeza de que não precisa de nenhuma das credenciais guardadas para restauro.Não-
--orphan-reposRemove entradas de repositório que não estão colocadas em nenhuma máquina. Cada entrada contém a credencial e a chave SSH desse repositório, pelo que isto é irrecuperável -- execute primeiro 'rdc config reconcile' para que a colocação reflita as máquinas.Não-
--grace-days <days>Substituir a janela de graça de arquivos (em dias) para esta invocação. Recorre a defaults.pruneGraceDays na configuração, depois a 7 se nenhum estiver definido.Não-

1.2 init

Criar um novo ficheiro de configuração com nome

Pode adicionar máquinas diretamente:

rdc config init [name] [options]
FlagDescriçãoObrigatórioPredefinição
--ssh-key <path>Caminho para a chave privada SSH (ex.: ~/.ssh/id_rsa)Não-
--renet-path <path>Caminho para o binário renet (predefinição: renet no PATH)Não-
--master-password <password>Encriptar recursos com uma palavra-passe mestraNão-
--server <url>URL do servidor de contaNão-

1.3 list

Listar todos os ficheiros de configuração

rdc config list

1.4 show

Mostrar os detalhes da configuração actual

rdc config show [options]
FlagDescriçãoObrigatórioPredefinição
--revealMostrar texto simples para valores sensíveis (apenas em modo interactivo)Não-

1.5 current

Mostra a configuração ativa: nome, ficheiro, servidor e canal resolvidos, estado do token

rdc config current

1.6 delete

Eliminar um ficheiro de configuração

rdc config delete <name>

1.7 set

Definir um valor por omissão (equipa, região, bridge)

rdc config set <key> <value>

1.8 clear

Limpar os valores por omissão (todos ou uma chave específica)

rdc config clear [key]

1.9 recover

Restaurar a configuração a partir de um ficheiro de cópia de segurança (.bak)

rdc config recover [name] [options]
FlagDescriçãoObrigatórioPredefinição
-y, --yesIgnorar pedido de confirmaçãoNão-

1.10 ssh

Gerir a configuração de chaves SSH

set

Definir a chave SSH para a configuração actual

rdc config ssh set [options]
FlagDescriçãoObrigatórioPredefinição
--key <path>Caminho para o ficheiro de chave privada SSHSim-
--embedIncorporar o conteúdo da chave na configuração em vez de guardar o caminhoNão-

show

Mostrar a configuração actual de chave SSH

rdc config ssh show

remove

Remover a chave SSH da configuração actual

rdc config ssh remove

1.11 remote

Gerir a ligação ao armazenamento de configuração remoto

enable

Ligar esta configuração ao armazenamento encriptado remoto

rdc config remote enable [options]
FlagDescriçãoObrigatórioPredefinição
--headlessUsar fluxo de código de dispositivo (para servidores sem interface gráfica)Não-
--passwordInscreva-se em modo headless com um password slot pré-aprovisionado (sem browser)Não-
--api-url <url>URL do servidor de contaNão-
--forceSubstituir o conteúdo local divergente pela cópia do servidor sem confirmaçãoNão-

disable

Desligar do armazenamento remoto e guardar a configuração localmente

rdc config remote disable

status

Mostrar o estado da ligação remota

rdc config remote status

refresh

Forçar a re-obtenção da configuração a partir do armazenamento remoto

rdc config remote refresh

1.12 field

Operações em campos de configuração por ponteiro (get/set/unset/rotate/list). Ponteiros JSON (RFC 6901) como /credentials/cfDnsApiToken.

get

Ler um valor de configuração pelo Ponteiro JSON. Os campos sensíveis são ocultados salvo com --reveal (apenas para humanos).

rdc config field get [options]
FlagDescriçãoObrigatórioPredefinição
--pointer <pointer>Ponteiro JSON para o campo (por ex., /credentials/cfDnsApiToken)Sim-
--revealMostrar texto simples para valores sensíveis (apenas TTY interactivo; auditado)Não-
--digestImprimir o resumo SHA-256 em vez do valor (seguro para partilhar com agentes)Não-

set

Escrever um valor de configuração num Ponteiro JSON. Os caminhos sensíveis requerem --current (barreira de conhecimento).

rdc config field set [options]
FlagDescriçãoObrigatórioPredefinição
--pointer <pointer>Ponteiro JSON para o campo (por ex., /credentials/cfDnsApiToken)Sim-
--new <value>Novo valor (interpretado como JSON se parecer JSON: {, [, ", true/false/null/número)Sim-
--current <value>Valor actual em texto simples -- obrigatório para mutações em caminhos sensíveis (prova de barreira de conhecimento)Não-

unset

Eliminar um valor de configuração num Ponteiro JSON. Os caminhos sensíveis requerem --current.

rdc config field unset [options]
FlagDescriçãoObrigatórioPredefinição
--pointer <pointer>Ponteiro JSON para o campo (por ex., /credentials/cfDnsApiToken)Sim-
--current <value>Valor actual em texto simples -- obrigatório para eliminações em caminhos sensíveisNão-

rotate

Rodar um valor sensível sem --current. Apenas TTY interactivo; auditado explicitamente.

rdc config field rotate [options]
FlagDescriçãoObrigatórioPredefinição
--pointer <pointer>Ponteiro JSON para o campo sensível (por ex., /credentials/cfDnsApiToken)Sim-
--new <value>Novo valorSim-

list

Listar todos os modelos de ponteiro de sensibilidade registados com o seu tipo e política de confirmação/encriptação.

rdc config field list [options]
FlagDescriçãoObrigatórioPredefinição
--sensitiveMostrar apenas modelos sensíveis (não públicos)Não-

1.13 edit

Abrir a configuração activa no $EDITOR como uma projecção JSONC redigida. Apenas para humanos; agentes recusados.

rdc config edit [options]
FlagDescriçãoObrigatórioPredefinição
--revealMostrar texto simples para valores sensíveis (apenas TTY interactivo; auditado)Não-
--dumpImprimir a configuração actual como JSONC para stdout (só leitura; seguro para agentes quando redigido)Não-
--apply <file>Aplicar um ficheiro JSONC editado (ignora o lançamento do $EDITOR)Não-
--current-secrets <file>Ficheiro JSON com mapeamento ponteiro→texto simples antigo para barreira de conhecimento em --applyNão-
--editor <cmd>Substituição do comando do editor (segue precedência git: flag > $GIT_EDITOR > git config core.editor > $VISUAL > $EDITOR)Não-

1.14 audit

Inspeccionar o registo de auditoria da configuração (JSONL com cadeia de hashes em ~/.config/rediacc/audit.log.jsonl)

log

Imprimir entradas de auditoria recentes como JSON

rdc config audit log [options]
FlagDescriçãoObrigatórioPredefinição
--since <spec>Mostrar apenas entradas mais recentes do que (por ex., '24h', '7d', carimbo de data/hora ISO)Não-
--path <glob>Filtrar por glob de Ponteiro JSON (por ex., /credentials/*)Não-
--actor <kind>Filtrar por tipo de actor (human|agent)Não-

tail

Transmitir novas entradas de auditoria à medida que são escritas (Ctrl+C para parar)

rdc config audit tail

verify

Verificar a integridade da cadeia de hashes SHA-256 em todas as entradas de auditoria

rdc config audit verify

1.15 reconcile

Reconstrói o estado em tempo de execução a partir do estado real das máquinas. Corrige dados de anexação e encaminhamento desatualizados.

rdc config reconcile [options]
FlagDescriçãoObrigatórioPredefinição
--machine <m...>Limitar a reconciliação a estas máquinasNão-
--dry-runMostrar o que seria feito sem efetuar alteraçõesNão-
--accept-observedReescreve uma colocação declarada para corresponder ao local real da imagem, mas apenas quando isso é inequívoco (observada em exatamente uma máquina). As duplicações mantêm-se como conflitos.Não-

1.16 rotate-cek

Rodar a chave de encriptação da configuração da organização

rdc config rotate-cek [options]
FlagDescriçãoObrigatórioPredefinição
--api-url <url>URL do servidor de contaNão-

2. Gestão do Datastore

Pools de armazenamento com nome que alojam repositórios. Um datastore é móvel (anexe-o a uma máquina, mova-o para outra) e de anexação única (apenas uma máquina o possui de cada vez). O datastore predefinido implícito de cada máquina não é gerido aqui.

2.1 resize

Aumenta ou reduz um datastore. É uma operação offline: os repositórios que contém têm de estar parados.

rdc datastore resize <datastore> [options]
FlagDescriçãoObrigatórioPredefinição
--size <size>Novo tamanho (por exemplo 200G)Sim-
--debugAtivar saída de depuraçãoNão-

2.2 fork

Faz fork de um datastore por copy-on-write. O fork é instantâneo e o seu custo não cresce com o tamanho da pool. Precisa do backend rbd: um datastore local não tem clonagem a nível de bloco, pelo que os repositórios que contém fazem fork um de cada vez por reflink (rdc repo fork).

rdc datastore fork <datastore> [options]
FlagDescriçãoObrigatórioPredefinição
--tag <tag>Etiqueta para o fork (o resultado é nome:etiqueta)Sim-
--attach-to <machine>Anexar o fork a esta máquina de imediato (requer --writes)Não-
--writes <disposition>Para onde vão as escritas do fork: local (instantâneo, efémero) ou ceph (clone duradouro)Não-
--cow-size <size>Tamanho do overlay para --writes localNão-
--debugAtivar saída de depuraçãoNão-

2.3 status

Mostra um datastore: o seu backend, anexação, utilização, repositórios e snapshots. Um datastore desanexado continua a reportar o seu registo.

rdc datastore status <datastore> [options]
FlagDescriçãoObrigatórioPredefinição
--debugAtivar saída de depuraçãoNão-

2.4 create

Cria um datastore adicional com nome numa máquina. Um backend local é uma pool suportada por ficheiro nessa máquina e fica lá. Um backend rbd vive no Ceph, pelo que pode mover-se para qualquer máquina que alcance o mesmo cluster. Passe --cluster para o tornar num datastore do mundo Kubernetes; essa referência fica fixa na criação.

rdc datastore create <datastore> [options]
FlagDescriçãoObrigatórioPredefinição
-m, --machine <name>Máquina onde criar o datastoreSim-
--size <size>Tamanho do datastore (por exemplo 100G)Sim-
--backend <type>Backend de armazenamento: local (suportado por ficheiro, fica nesta máquina) ou rbd (Ceph, movível)Nãolocal
--pool <name>Pool do Ceph para o backend rbd (por omissão: rbd)Não-
--image <name>Nome da imagem RBD para o backend rbd (por omissão: o nome do datastore)Não-
--cluster <name>Cluster Kubernetes a que este datastore pertence. Definido significa apenas repositórios Kubernetes; não definido significa apenas repositórios docker. Fixo na criação.Não-
--debugAtivar saída de depuraçãoNão-

2.5 list

Listar os datastores com nome, onde estão anexados e o que contêm.

rdc datastore list [place]

2.6 attach

Anexa um datastore a uma máquina. Apenas uma máquina o possui de cada vez, pelo que anexá-lo noutro sítio move-o: o antigo titular liberta-o primeiro, e uma transferência falhada deixa a anexação original intacta. Um fork tem de indicar para onde vão as suas escritas.

rdc datastore attach <datastore> [options]
FlagDescriçãoObrigatórioPredefinição
--to <machine>Máquina à qual anexar o datastoreSim-
--writes <disposition>Para onde vão as escritas de um fork: local (instantâneo, efémero, perdido ao desanexar) ou ceph (clone duradouro na pool). Obrigatório para um fork.Não-
--cow-size <size>Tamanho do overlay para --writes localNão-
--no-autoNão voltar a anexar este datastore automaticamente ao arrancarNão-
--forceForçar a remoção de uma máquina obsoleta que não libertou o datastore corretamenteNão-
--debugAtivar saída de depuraçãoNão-

2.7 detach

Desanexa um datastore da sua máquina. Os repositórios dentro dele param primeiro. Um fork anexado com --writes local não tem para onde escrever de volta o seu overlay, pelo que desanexá-lo descarta o overlay e requer --discard.

rdc datastore detach <datastore> [options]
FlagDescriçãoObrigatórioPredefinição
--discardDescartar um fork de escritas locais e o seu overlay. Os dados não são recuperáveis.Não-
-y, --yesIgnorar pedido de confirmaçãoNão-
--debugAtivar saída de depuraçãoNão-

2.8 snapshot

Faz e lista snapshots pontuais de um datastore. Um snapshot não custa nada em repouso e é a partir dele que um fork clona.

create

Faz um snapshot pontual de um datastore. Nada é parado. O instante é consistente com falhas, não consistente ao nível da aplicação: se precisar que uma escrita específica esteja NO snapshot, sincronize-a primeiro.

rdc datastore snapshot create <datastore> [options]
FlagDescriçãoObrigatórioPredefinição
--snapshot <label>Etiqueta do snapshot (por omissão: um carimbo de data/hora UTC)Não-
--debugAtivar saída de depuraçãoNão-

list

Listar os snapshots de um datastore.

rdc datastore snapshot list <datastore> [options]
FlagDescriçãoObrigatórioPredefinição
--debugAtivar saída de depuraçãoNão-

2.9 delete

Destrói um datastore e tudo o que contém. É desanexado primeiro; se não conseguir ser desanexado corretamente, a eliminação falha em vez de deixar órfã uma pool montada.

rdc datastore delete <datastore> [options]
FlagDescriçãoObrigatórioPredefinição
-y, --yesIgnorar pedido de confirmaçãoNão-
--forceEliminar mesmo que ainda existam repositórios a apontar para ele. Os seus dados são eliminados com ele.Não-
--debugAtivar saída de depuraçãoNão-

3. Gestão de Máquinas

Inspecionar o estado de máquinas remotas: recursos do sistema, contentores em execução, serviços systemd, repositórios implementados e diagnósticos de saúde. Consultas de leitura apenas; para modificar repositórios use `repo`. Subcomandos principais: status (estado completo, restringido com --system, --containers, --repositories, --services), health, list, add, remove, setup, prune, provision, deprovision.

3.1 list

Listar máquinas

rdc machine list [options]
FlagDescriçãoObrigatórioPredefinição
--search <text>Pesquisar em {{field}}Não-
--sort <field>Ordenar por campoNão-
--descOrdenar por ordem decrescenteNão-

3.2 health

Verificar saúde da máquina para pipelines de CI/CD

O comando health produz métricas do sistema, estado dos contentores, estabilidade dos serviços e informações de armazenamento -- útil para verificações em pipelines de CI/CD.

rdc machine health <name> [options]
FlagDescriçãoObrigatórioPredefinição
-t, --team <name>Nome da equipaNão-

3.3 provision

Provisionar uma nova máquina num fornecedor de cloud com OpenTofu

rdc machine provision <name> [options]
FlagDescriçãoObrigatórioPredefinição
--provider <name>Nome do fornecedor de cloud (de machine provider add)Sim-
--region <region>Substituir região predefinidaNão-
--type <type>Substituir tipo de instância predefinidoNão-
--image <image>Substituir imagem de SO predefinidaNão-
--ssh-user <user>Nome de utilizador SSH para a nova VM (predefinição: root)Não-
--base-domain <domain>Domínio base para a infraestrutura (por ex., example.com). Implica --infraNão-
--no-infraIgnorar configuração de infraestrutura (proxy + DNS)Não-
--debugAtivar saída de depuraçãoNão-

3.4 deprovision

Destruir uma máquina provisionada na cloud e remover da configuração

rdc machine deprovision <name> [options]
FlagDescriçãoObrigatórioPredefinição
--forceIgnorar pedido de confirmaçãoNão-
--debugAtivar saída de depuraçãoNão-

3.5 prune

Remover recursos de datastore órfãos e snapshots desatualizados de uma máquina. A execução base limpa artefactos internos do datastore do renet (subvolumes BTRFS, ficheiros de bloqueio, ficheiros temporários). As opções abaixo permitem limpezas progressivamente mais específicas de repositórios: --orphaned-repos usa apenas a configuração local do CLI como referência, enquanto --prune-unknown consulta também o espelho .interim/state do renet para que forks legítimos criados por outras ferramentas sobrevivam mesmo sem entrada na configuração local. Ambos os caminhos de eliminação executam uma verificação prévia de segurança de montagem; use --force-delete-mounted para ignorar.

rdc machine prune <name> [options]
FlagDescriçãoObrigatórioPredefinição
--dry-runMostrar o que seria removido sem efetuar alteraçõesNão-
--orphaned-reposEliminar todos os repositórios na máquina que não existam na configuração local do CLI. Abrangente -- também remove forks criados por outras ferramentas sem entrada na configuração local, mesmo quando o espelho renet os identifica corretamente como forks. Use --prune-unknown para o comportamento mais restrito que respeita o espelho.Não-
--prune-unknownEliminar apenas repositórios que o espelho .interim/state do renet não consegue classificar (não na configuração local E sem espelho marcado como fork). Estritamente mais restrito do que --orphaned-repos: forks sem configuração são preservados quando o espelho os identifica. Órfãos legados anteriores ao espelho e grands desatualizados cuja entrada de configuração foi eliminada entram neste grupo.Não-
--force-delete-mountedIgnorar a verificação prévia de segurança de montagem e eliminar repositórios mesmo que estejam montados ou com contentores Docker em execução. Distinto de --force (que apenas ignora o período de carência para repositórios arquivados). Aplica-se a --orphaned-repos e --prune-unknown.Não-
--forceIgnorar pedidos de confirmaçãoNão-
--grace-days <days>Período de graça em dias para repositórios recentemente arquivados (predefinição: 7)Não-
--debugAtivar saída de depuraçãoNão-

3.6 add

Adicionar uma máquina à configuração actual. Analisa automaticamente as chaves de anfitrião SSH. Após adicionar, execute: config machine setup <nome>

rdc machine add <name> [options]
FlagDescriçãoObrigatórioPredefinição
--ip <address>Endereço IP ou hostname da máquinaSim-
--user <username>Nome de utilizador SSHSim-
--port <port>Porta SSHNão22

3.7 infra

Gerir a configuração de infraestrutura (proxy, DNS, certificados)

cert

Gerir certificados TLS em cache

clear:

Remover a cache de certificados

rdc machine infra cert clear

pull:

Descarregar e colocar em cache os certificados TLS de uma máquina

rdc machine infra cert pull <machine> [options]
FlagDescriçãoObrigatórioPredefinição
--no-pruneNão remover certificados de ID de rede obsoletosNão-
--debugAtivar saída de depuraçãoNão-

push:

Carregar certificados TLS em cache para uma máquina

rdc machine infra cert push <machine> [options]
FlagDescriçãoObrigatórioPredefinição
--debugAtivar saída de depuraçãoNão-

status:

Mostrar o inventário de certificados em cache

rdc machine infra cert status

push

Enviar a configuração de infraestrutura para a máquina (proxy Traefik, router, DNS Cloudflare). Execute 'machine infra set <machine>' primeiro.

rdc machine infra push <machine> [options]
FlagDescriçãoObrigatórioPredefinição
--debugAtivar saída de depuraçãoNão-

set

Definir a configuração de infraestrutura para uma máquina (específico da máquina: IPs, domínio, portas; partilhado: email de certificado, token DNS CF)

rdc machine infra set <machine> [options]
FlagDescriçãoObrigatórioPredefinição
--public-ipv4 <ip>Endereço IPv4 público (por máquina)Não-
--public-ipv6 <ip>Endereço IPv6 público (por máquina)Não-
--base-domain <domain>Domínio base para aplicações (por máquina)Não-
--cert-email <email>Email para notificações de certificados TLS (partilhado entre máquinas)Não-
--cf-dns-token <token>Token de API DNS Cloudflare para desafio ACME DNS-01 (partilhado entre máquinas)Não-
--tcp-ports <ports>Portas TCP a reencaminhar (separadas por vírgula, por ex., 25,143,465)Não-
--udp-ports <ports>Portas UDP a reencaminhar (separadas por vírgula, por ex., 53)Não-

show

Mostrar a configuração de infraestrutura de uma máquina

rdc machine infra show <machine>

3.8 provider

Gerir fornecedores de cloud para aprovisionamento automático de máquinas

add

Adicionar um fornecedor de cloud

rdc machine provider add <name> [options]
FlagDescriçãoObrigatórioPredefinição
--provider <source>Fonte de fornecedor conhecida (por ex., linode/linode, hetznercloud/hcloud)Não-
--source <source>Fonte de fornecedor OpenTofu personalizada (por ex., vultr/vultr)Não-
--token <token>Token de API para o fornecedor de cloudSim-
--region <region>Região por omissão para novas máquinasNão-
--type <type>Tipo/tamanho de instância por omissãoNão-
--image <image>Imagem do sistema operativo por omissãoNão-
--ssh-user <user>Nome de utilizador SSH para novas VMs (por omissão: root)Não-
--resource <type>Personalizado: tipo de recurso OpenTofu para VMNão-
--label-attr <attr>Personalizado: nome do atributo para a etiqueta da VMNão-
--region-attr <attr>Personalizado: nome do atributo para a regiãoNão-
--size-attr <attr>Personalizado: nome do atributo para o tipo de instânciaNão-
--image-attr <attr>Personalizado: nome do atributo para a imagem do sistema operativoNão-
--ipv4-output <attr>Personalizado: atributo de saída para o endereço IPv4Não-
--ipv6-output <attr>Personalizado: atributo de saída para o endereço IPv6Não-
--ssh-key-attr <attr>Personalizado: nome do atributo para as chaves SSHNão-
--ssh-key-format <format>Personalizado: formato da chave SSH (inline_list ou resource_id)Não-
--ssh-key-resource <type>Personalizado: tipo de recurso OpenTofu para chaves SSHNão-

list

Listar os fornecedores de cloud configurados

rdc machine provider list

remove

Remover uma configuração de fornecedor de cloud

rdc machine provider remove <name>

3.9 remove

Remover uma máquina da configuração actual

rdc machine remove <name> [options]
FlagDescriçãoObrigatórioPredefinição
-y, --yesIgnorar pedido de confirmaçãoNão-
--forceRemover a máquina mesmo que ainda existam repositórios nela colocados, deixando essas localizações pendentes.Não-

3.10 scan-keys

Analisar as chaves de anfitrião SSH das máquinas na configuração actual

rdc machine scan-keys [name]

3.11 setup

Aprovisionar uma máquina remota para repositórios (instala o renet, configura o Docker, armazém de dados BTRFS). Idempotente. Necessário após 'config machine add' e antes de 'repo create'.

rdc machine setup <name> [options]
FlagDescriçãoObrigatórioPredefinição
--datastore-path <path>Caminho do armazém de dados na máquina remotaNão/mnt/rediacc
--datastore-size <size>Tamanho do armazém de dados (por ex., 95%, 100G)Não95%
--debugAtivar saída de depuraçãoNão-

3.12 status

Mostrar estado completo da máquina (infraestrutura, sistema, repos com nome/guid, contentores com repository/repository_guid/domain/autoRoute, serviços com repository/repository_guid)

rdc machine status [name] [options]
FlagDescriçãoObrigatórioPredefinição
--debugAtivar saída de depuraçãoNão-
--systemIncluir apenas informações do sistemaNão-
--repositoriesIncluir apenas repositóriosNão-
--containersIncluir apenas contentoresNão-
--servicesIncluir apenas serviçosNão-
--networkIncluir apenas interfaces de redeNão-
--block-devicesIncluir apenas dispositivos de blocoNão-
--licensesIncluir estados de licença dos repositóriosNão-
--storage-healthMostrar fragmentação BTRFS e poupanças de reflink por repositórioNão-
--datastoresMostrar datastores anexados (montagem, anexação, utilização)Não-
--health-checkModo de verificação de saúde - sai com código 2 se algum não estiver saudávelNão-
--stability-checkModo de verificação de estabilidade - sai com código 2 se algum falhar/reiniciarNão-
--search <text>Filtrar repositórios por nomeNão-
--sync-certsTambém obter a cache de certificados ACME da máquina após a consultaNão-
--strictTerminar com código não zero (código 2) se algum contentor ultrapassou o limiar de desvio de saúdeNão-

4. Gestão de Clusters

Provisionar e gerir clusters: conjuntos nomeados de pools de nós (ceph, k8s-server, k8s-agent, hyperconverged) numa rede privada. Os membros dos pools materializam-se em máquinas, pelo que todos os comandos -m funcionam neles.

4.1 create

Declara e provisiona um cluster: máquinas, pools do Ceph e Kubernetes. Passe --provider e --pool para declarar num único passo; um create sem argumentos provisiona um cluster já declarado.

rdc cluster create <cluster> [options]
FlagDescriçãoObrigatórioPredefinição
--provider <provider>Fornecedor: uma chave de cloudProviders, ou 'kvm'Não-
--pool <spec...>Especificação do pool nome:papel:contagem[:tamanho] (papel: ceph|k8s-server|k8s-agent|hyperconverged)Não-
--declare-onlyRegistar o cluster na configuração sem o provisionarNão-
--network-cidr <cidr>CIDR da rede privada (ex.: 10.0.0.0/24)Não-
--network-primitive <primitive>Primitiva de rede (ex.: vlan, vpc, network)Não-
--control-node <machine>Máquina de nó de controlo explícita (predefinição: primeiro membro k8s-server)Não-
--net-name <name>KVM: rede libvirt para este cluster (ex.: renet12)Não-
--net-base <prefix>KVM: prefixo de rede, os primeiros três octetos (ex.: 192.168.112)Não-
--net-offset <n>KVM: offset adicionado ao id de cada VM ao derivar o seu endereçoNão-
--control-id <n>KVM: id de VM do nó de controlo e registry (predefinição: 1)Não-
--docker-registry <endpoint>KVM: endpoint do registry Docker dentro da VM para este clusterNão-
--ssh-user <user>Utilizador SSH para os membros provisionadosNão-
--base-domain <domain>Domínio base para o DNS público do cluster (caso contrário, herdado de uma máquina irmã)Não-
--control-ds-size <size>Tamanho do datastore de controlo âncora (predefinição: 10G)Não-
--control-ds-backend <backend>Backend do datastore de controlo âncora: local | ceph (predefinição: ceph se o cluster tiver ceph, caso contrário local)Não-
--control-ds-pool <pool>Pool RBD do Ceph para o datastore de controlo âncora (backend ceph)Não-
--debugAtivar saída de depuraçãoNão-

4.2 status

Listar todos os clusters, ou mostrar a configuração completa de um cluster com --name.

rdc cluster status [cluster]

4.3 scale

Alterar o número de membros de um pool (adiciona/remove máquinas e junta/drena nós). Os pools k8s-agent escalam no próprio lugar; o crescimento do pool ceph é feito diretamente via cephadm.

rdc cluster scale <cluster> [options]
FlagDescriçãoObrigatórioPredefinição
--pool <pool>Nome do poolSim-
--count <n>Número de membros pretendidoSim-
--debugAtivar saída de depuraçãoNão-

4.4 destroy

Desmontar os membros provisionados e remover o cluster e as suas máquinas da configuração.

rdc cluster destroy <cluster> [options]
FlagDescriçãoObrigatórioPredefinição
--forceIgnorar a confirmação e continuar mesmo perante erros de desmontagemNão-
--debugAtivar saída de depuraçãoNão-

4.5 kubeconfig

Obter o kubeconfig do nó de controlo do cluster via SSH e colocá-lo em cache localmente (0600) para o kubectl.

rdc cluster kubeconfig <cluster>

4.6 fork

Clonar um cluster inteiro, incluindo os dados dos seus repositórios, para um novo cluster: copy-on-write coordenado das imagens do cluster e dos PVs, seguido da reescrita da identidade dos nós para que o fork arranque em novos endereços. O pai continua em execução.

rdc cluster fork <cluster> [options]
FlagDescriçãoObrigatórioPredefinição
--tag <tag>Etiqueta do forkSim-
--to <dest-cluster>Cluster de destino cujos nós alojam o fork (o seu nó de controlo e agentes); um cluster não pode fazer fork para as suas próprias máquinas, uma vez que dois k3s não podem partilhar o mesmo espaço de nomes de rede do anfitriãoSim-
--writes <disposition>Disposição de escrita do fork: local (camada dm-COW efémera, impacto zero no Ceph) | ceph (clone duradouro). Predefinição: localNão-
--upColocar os repositórios do fork em funcionamento e validar a saúde do cluster depois de o fork arrancarNão-
--debugAtivar saída de depuraçãoNão-

4.7 migrate

Mover um cluster inteiro, incluindo os dados dos seus repositórios, para outra máquina ou centro de dados com um curto período de corte (pré-cópia a quente, seguida de paragem-e-reinício no destino).

rdc cluster migrate <cluster> [options]
FlagDescriçãoObrigatórioPredefinição
--to <dest-cluster>DestinoSim-
--debugAtivar saída de depuraçãoNão-

4.8 join

Adotar uma máquina registada existente como nó agente Kubernetes de um cluster, utilizando o mesmo token de adesão derivado da CA usado para a ancoragem e o reingresso.

rdc cluster join <machine> [options]
FlagDescriçãoObrigatórioPredefinição
--cluster <name>Cluster ao qual juntar a máquinaSim-
--debugAtivar saída de depuraçãoNão-

4.9 evict

Drenar o nó, eliminar o seu objeto Node e limpar a sua associação ao cluster. O cluster é derivado da máquina; uma máquina que ainda monta um datastore é recusada.

rdc cluster evict <machine> [options]
FlagDescriçãoObrigatórioPredefinição
--forceIgnorar a drenagem quando o nó já está mortoNão-
--debugAtivar saída de depuraçãoNão-

4.10 rehearse

Ensaiar uma release/atualização: fazer fork do cluster para um destino como instância efémera e descartável (writes=local, papel sem segredos: rehearsal), arrancá-la, validar a sua saúde e depois eliminá-la. O pai nunca é tocado.

rdc cluster rehearse <cluster> [options]
FlagDescriçãoObrigatórioPredefinição
--on <dest-cluster>Cluster de destino onde arrancar o ensaio descartávelSim-
--tag <tag>Etiqueta opcional para o fork de ensaio (predefinição: com timestamp)Não-
--debugAtivar saída de depuraçãoNão-

4.11 snapshot

Snapshots pontuais de todo o cluster. Um único instante consistente em caso de falha, abrangendo todos os datastores com backend rbd que o cluster possui, obtido através do snapshot de grupo do Ceph: nada é parado e o cluster nem sequer se apercebe. Os datastores com backend local não têm uma primitiva de grupo a nível de bloco, pelo que ficam fora do instante e são reportados como tal. O instante é consistente com falhas, não consistente ao nível da aplicação: se precisar que uma escrita específica esteja NO snapshot, sincronize-a primeiro.

create

Faz snapshot de todos os datastores com backend rbd do cluster num ÚNICO instante. Nada é parado. Qualquer datastore com backend local do cluster fica fora desse instante: não faz parte do snapshot. O instante é consistente com falhas, não consistente ao nível da aplicação: se precisar que uma escrita específica esteja NO snapshot, sincronize-a primeiro.

rdc cluster snapshot create <cluster> [options]
FlagDescriçãoObrigatórioPredefinição
--snapshot <label>Etiqueta do snapshot (por omissão: um carimbo de data/hora UTC)Não-
--debugAtivar saída de depuraçãoNão-

list

Listar os snapshots de grupo do cluster.

rdc cluster snapshot list <cluster> [options]
FlagDescriçãoObrigatórioPredefinição
--debugAtivar saída de depuraçãoNão-

5. Servidor MCP

Expõe o CLI como servidor Model Context Protocol (MCP) para integração com agentes de IA. O servidor envolve comandos do CLI como ferramentas MCP com entrada/saída JSON estruturada. Subcomando principal: serve (inicia o servidor MCP baseado em stdio).

5.1 serve

Iniciar o servidor MCP (transporte stdio)

rdc mcp serve [options]
FlagDescriçãoObrigatórioPredefinição
--config <name>Nome da configuração a usar em todos os comandosNão-
--timeout <ms>Tempo limite predefinido dos comandos em milissegundosNão120000

6. Ciclo de Vida do Repositório

Implementar e gerir repositórios encriptados em máquinas. Subcomandos principais: create, up (implementar), down (parar), fork (clone CoW instantâneo), delete, push/pull (cópia de segurança), sync (transferência de ficheiros). Ciclo de vida: repo create → repo up → repo down. Consulte Conceitos Principais em rdc --help para detalhes de arquitectura, encaminhamento e variáveis de ambiente.

6.1 up

Implementa ou atualiza um repositório (monta, executa o up do Rediaccfile que invoca o renet compose). A máquina é derivada da localização da ref. As rotas de proxy demoram ~3s a ficar ativas após a implementação. Ao concluir, apresenta o padrão de URL dos serviços expostos via HTTP (etiqueta rediacc.service_port). A primeira implementação e os forks são montados automaticamente. O restauro de checkpoint CRIU é detetado automaticamente; use --skip-checkpoint para forçar um arranque limpo. Use --all --machine <m> para implementar todos os repositórios de uma máquina.

rdc repo up [ref] [options]
FlagDescriçãoObrigatórioPredefinição
--no-startMontar e preparar o repositório sem executar os seus passos up() (integra o retirado 'repo mount'; abre o LUKS e, para repositórios de cluster, gera o PV).Não-
--skip-checkpointIgnorar o restauro de ponto de verificação CRIU mesmo que existam dados de verificação (forçar arranque limpo)Não-
--tlsSolicitar certificado TLS dedicado para este repositório (os forks utilizam o certificado partilhado da máquina por omissão)Não-
--no-waitRetornar assim que os contentores arrancam; os healthchecks continuam em segundo planoNão-
--allImplementar todos os repositórios cuja casa seja --machine (forma em lote)Não-
-m, --machine <name>Com --all: a máquina cujos repositórios receberão o loteNão-
--include-forksMontar e iniciar também os repositórios copiados (fork)Não-
--parallelIniciar os repositórios em simultâneoNão-
--concurrency <n>Máximo de repositórios em simultâneo (por omissão: 3)Não3
-y, --yesIgnorar confirmação em operações em loteNão-
--debugAtivar saída de depuraçãoNão-
--skip-router-restartIgnorar o reinício do servidor de rotas após atualização do binárioNão-
--dry-runMostrar o que seria feito sem efetuar alteraçõesNão-

6.2 down

Para os contentores Docker do repositório (executa o down do Rediaccfile via renet compose). A máquina é derivada da localização da ref. NÃO desmonta o volume encriptado -- o repositório permanece montado e pode ser reiniciado com 'repo up'. Use --unmount para também fechar o contentor LUKS após parar (integra o retirado 'repo unmount'). Use --checkpoint para guardar o estado do processo CRIU antes de parar (o próximo 'repo up' restaura automaticamente). Use --all --machine <m> para parar todos os repositórios de uma máquina.

rdc repo down [ref] [options]
FlagDescriçãoObrigatórioPredefinição
--unmountTambém desmontar (fechar o contentor LUKS) após parar. Necessário antes de 'repo resize' ou para proteger completamente o volumeNão-
--checkpointCriar ponto de verificação CRIU antes de parar (guardar o estado de memória do processo para restauro posterior via 'repo up')Não-
--allParar todos os repositórios cuja casa seja --machine (forma em lote)Não-
-m, --machine <name>Com --all: a máquina cujos repositórios receberão o loteNão-
--parallelIniciar os repositórios em simultâneoNão-
--concurrency <n>Máximo de repositórios em simultâneo (por omissão: 3)Não3
-y, --yesIgnorar confirmação em operações em loteNão-
--debugAtivar saída de depuraçãoNão-
--skip-router-restartIgnorar o reinício do servidor de rotas após atualização do binárioNão-
--dry-runMostrar o que seria feito sem efetuar alteraçõesNão-

6.3 status

Obter o estado do repositório (estado de montagem, daemon Docker em execução, número de contentores, utilização do disco)

rdc repo status <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--debugAtivar saída de depuraçãoNão-
--skip-router-restartIgnorar o reinício do servidor de rotas após atualização do binárioNão-

6.4 cat

Ler uma janela delimitada de um ficheiro dentro de um repositório e escrevê-la para stdout (delimitado no servidor; os diagnósticos vão para stderr)

rdc repo cat <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--remote-file <path>Caminho do ficheiro a ler, relativo à raiz de montagem do repositórioSim-
--max-bytes <n>Máximo de bytes a ler e imprimir (predefinição 1 MiB, teto máximo 50 MiB)Não-
--offset <n>Deslocamento em bytes a partir do qual começar a lerNão-
--head <lines>Imprimir apenas as primeiras N linhas (não pode combinar com intervalo de bytes)Não-
--tail <lines>Imprimir apenas as últimas N linhas (não pode combinar com intervalo de bytes)Não-
--statImprimir apenas tamanho, tipo e data de modificação; sem ler conteúdoNão-
--force-binaryPermitir leitura de conteúdo binário (que contém NUL)Não-
--debugAtivar saída de depuraçãoNão-
--skip-router-restartIgnorar o reinício do servidor de rotas após atualização do binárioNão-

6.5 diff

Diff a nível de arquivo no estilo git entre dois repositórios bifurcados em copy-on-write. Relata arquivos adicionados, modificados, excluídos e renomeados. Compara o repositório dado por --name (lado alvo/novo) com seu pai, resolvido a partir da configuração local, ou com um --base explícito (lado base/antigo). Somente metadados e independente do tamanho: compara as imagens LUKS criptografadas em nível de bloco sem decriptá-las, então um repo de 1 GB e um de 100 GB são comparados nos mesmos milissegundos.

rdc repo diff <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--base <ref>Repositório com o qual comparar (lado base/antigo); padrão é o pai de --nameNão-
--name-onlyImprimir apenas os caminhos dos arquivos alterados, um por linha (sem letras de status)Não-
--statMostrar a magnitude da alteração por arquivo (deltas em bytes e blocos) e totaisNão-
--content [path]Mostrar diff de texto unificado para um único arquivo (requer caminho de arquivo)Não-
--fastConfiar no filtro de blocos; pular confirmação por hash de conteúdo (pode super-relatar Modificado)Não-
--debugAtivar saída de depuraçãoNão-
--skip-router-restartIgnorar o reinício do servidor de rotas após atualização do binárioNão-

6.6 list

Listar os repositórios numa máquina

rdc repo list [options]
FlagDescriçãoObrigatórioPredefinição
-m, --machine <name>Nome da máquina de destinoNão-
--datastore <name>Listar os repositórios deste datastore (resolvido para a máquina que atualmente o possui)Não-
--debugAtivar saída de depuraçãoNão-
--skip-router-restartIgnorar o reinício do servidor de rotas após atualização do binárioNão-

6.7 create

Cria um novo repositório. Indique a sua localização uma vez: uma máquina ou um datastore.

rdc repo create <name> [options]
FlagDescriçãoObrigatórioPredefinição
-m, --machine <name>Nome da máquina de destinoNão-
--datastore <name>Datastore com nome que aloja o repositório (nível docker, ou a forma para clusters)Não-
--size <size>Tamanho do repositório (por ex., 10G, 100G, 1T)Não-
--no-dockerNão iniciar o daemon Docker após a criaçãoNão-
--debugAtivar saída de depuraçãoNão-
--skip-router-restartIgnorar o reinício do servidor de rotas após atualização do binárioNão-

6.8 delete

Elimina um repositório e os seus dados. A entrada de configuração é preservada; use --archive-config para mover as credenciais para deletedRepositories para recuperação via 'repo admin archive restore'. Recebe uma <ref> posicional; um nome simples resolve para a linha grand e é recusado quando vários repositórios partilham o mesmo nome base, pelo que deve passar nome:etiqueta para visar um fork.

rdc repo delete <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--archive-configMover a entrada de configuração para deletedRepositories para recuperação posteriorNão-
-y, --yesIgnorar pedido de confirmaçãoNão-
--debugAtivar saída de depuraçãoNão-
--skip-router-restartIgnorar o reinício do servidor de rotas após atualização do binárioNão-
--dry-runMostrar o que seria feito sem efetuar alteraçõesNão-

6.9 commit

Congela o estado actual de um fork de trabalho montado num novo commit imutável (semelhante ao git). O commit regista a sua mensagem, autor, data/hora e pai dentro do volume (para que viaje no push) e é marcado como só de leitura -- recusa-se a montar. O fork de trabalho continua inalterado, tal como o git deixa a árvore de trabalho intacta. Faça checkout de um commit com 'rdc repo checkout' para obter uma cópia gravável.

rdc repo commit <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--message <msg>Mensagem do commitSim-
--author <author>Autor do commitNão-
--debugAtivar saída de depuraçãoNão-

6.10 branch

Cria uma referência de branch nomeada apontando para o commit atual do fork de trabalho (sua ponta). As referências de branch ficam na configuração do CLI (máquina = armazenamento de objetos, configuração = armazenamento de referências).

rdc repo branch <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--branch <branch>Nome do novo branchSim-

6.11 checkout

Clona via reflink um commit imutável (ou a ponta de um branch) em um novo fork de trabalho gravável e aponta o HEAD para ele. Quase instantâneo e de tempo constante (reflink BTRFS).

rdc repo checkout <commit-or-branch-ref> [options]
FlagDescriçãoObrigatórioPredefinição
--tag <name>Nome para o novo fork de trabalho gravávelSim-
--from <workingFork>Resolver o argumento posicional <commit-or-branch-ref> como nome de branch neste working forkNão-
--debugAtivar saída de depuraçãoNão-
--skip-router-restartIgnorar o reinício do servidor de rotas após atualização do binárioNão-

6.12 log

Imprime o histórico de commits alcançável a partir do commit atual de um fork de trabalho (ou de uma referência de commit), percorrendo a cadeia de pais registrada por 'rdc repo commit'. Lê o espelho fora do volume, então nenhum commit é desbloqueado.

rdc repo log <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--debugAtivar saída de depuraçãoNão-

6.13 merge

Faz merge de um commit ou fork de origem em um fork de trabalho de destino. O destino ativo nunca é alterado no lugar: o resultado é construído em um clone reflink e trocado de forma atômica. Um destino montado ou em execução é recusado, a menos que --force seja usado, o que o suspende de forma limpa primeiro. Sem --resolve, é um take-theirs de imagem inteira (o destino passa a ser a origem); com --resolve ours|theirs, é um merge three-way por arquivo em relação ao ancestral comum, adotando as alterações exclusivas de cada lado e resolvendo os conflitos bilaterais de acordo com a flag.

rdc repo merge <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--from <source>commit ou fork de origem a partir do qual fazer o mergeSim-
--forceSuspende primeiro um destino montado/em execução e, em seguida, faz o merge (nunca altera uma montagem ativa)Não-
`—resolve <ourstheirs>`Resolução de conflitos por arquivo num merge three-way: 'ours' mantém a versão do destino, 'theirs' adota a da origem. Omita para fast-forward de imagem inteira (take-theirs).Não
--base <guid>GUID do commit ancestral comum para um merge three-way (usado com --resolve). O padrão é o pai do commit de origem ou o commit atual do destino.Não-
--debugAtivar saída de depuraçãoNão-

6.14 gc

Exclui objetos de commit imutáveis numa máquina que nenhum branch ou HEAD alcança (GC por alcançabilidade). A máquina é o repositório de objetos; a configuração do CLI é o repositório de referências. Dry-run por padrão: use --apply para excluir. Nunca afeta um objeto montado ou um fork de trabalho.

rdc repo gc [options]
FlagDescriçãoObrigatórioPredefinição
-m, --machine <name>Nome da máquina de destinoSim-
--applyExcluir de fato os commits inalcançáveis (o padrão é uma previsão dry-run)Não-
--debugAtivar saída de depuraçãoNão-

6.15 fork

Cria um fork CoW (Copy-on-Write) de um repositório. O FORK É QUASE INSTANTÂNEO E DE TEMPO CONSTANTE independentemente do tamanho do repositório; o reflink BTRFS clona a imagem subjacente, pelo que um repositório de 100 GB e um de 1 GB são copiados no mesmo tempo (~segundos). O fork recebe um NOVO GUID, networkId, intervalo de IPs e domínio de rota automática ({service}-fork-{tag}.{repo}.{machine}.{baseDomain}), sendo uma cópia totalmente independente. O fork online é suportado; o pai pode permanecer em execução. O fork herda automaticamente as credenciais de encriptação do pai. Use --checkpoint para capturar o estado do processo CRIU antes de copiar; o fork restaura automaticamente no primeiro 'repo up' (estado em memória preservado). FORK ENTRE MÁQUINAS: primeiro faça fork localmente e depois transfira: (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. AVISO: NÃO use "repo push" isoladamente para copiar; cria uma cópia bruta com o MESMO GUID (não é um fork independente). Faça sempre fork primeiro para obter uma nova identidade. As rotas automáticas utilizam o nome do repositório, pelo que cada fork obtém automaticamente um domínio único.

rdc repo fork <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--tag <name>Etiqueta para o fork (cria nome:etiqueta)Sim-
--checkpointCriar ponto de verificação CRIU na origem antes de copiar (capturar o estado de memória do processo para restauro no fork)Não-
--immutableMarca o fork como somente leitura: ele recusa a montagem e mantém sua imagem estável em nível de bytes para sempre (um commit/base congelado para o delta push entre máquinas)Não-
--upMontar e iniciar os serviços após copiar (fork + mount + up num único comando)Não-
--no-waitCom --up: retorna assim que os contêineres iniciam; os healthchecks continuam em segundo plano (ideal para forks descartáveis)Não-
--debugAtivar saída de depuraçãoNão-
--skip-router-restartIgnorar o reinício do servidor de rotas após atualização do binárioNão-

6.16 replicate

Cria N réplicas de leitura de um repositório em segundos, independentemente do tamanho da base de dados. Faz UM único snapshot do datastore e, em seguida, N fork-attaches a tempo constante (copy-on-write, escritas locais descartáveis) distribuídos pelos nós do cluster, aplicando depois um overlay gerado: um PersistentVolume fixo por réplica, um StatefulSet e dois Services ({repo}-rw para o primário, {repo}-ro para as réplicas). As réplicas são cópias PONTUAIS no tempo: sem stream de replicação, sem read-your-writes; cada réplica executa uma passagem de recuperação de falhas (crash-recovery) antes de começar a servir. Atualize-as com 'repo replicate refresh'. Os conjuntos de réplicas são estado gerido: consulte 'repo replicate status' e remova-os com 'repo replicate remove'.

status

Mostra os conjuntos de réplicas geridos: réplicas, nós de alojamento, datastores de fork, snapshot e datas/horas de atualização.

rdc repo replicate status <ref>

remove

Remove um conjunto de réplicas: elimina os seus objetos k8s gerados (delimitado por labels), descarta os seus datastores de fork, elimina o seu snapshot e esquece o estado. Os passos de infraestrutura são best-effort, pelo que a remoção converge mesmo num cluster parcialmente desaparecido.

rdc repo replicate remove <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--debugAtivar saída de depuraçãoNão-

refresh

Faz rolar cada réplica para um novo snapshot pontual, UMA de cada vez: reinicia o pod da réplica, descarta e refaz o fork do seu datastore sob o mesmo caminho, e deixa que a readiness a readmita. As restantes N-1 réplicas continuam a servir durante todo o processo.

rdc repo replicate refresh <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--debugAtivar saída de depuraçãoNão-

6.17 canary

Executar uma NOVA imagem ao lado da estável e dividir o tráfego em produção entre ambas por percentagem (degrau 2 da escada de releases). Cria um Deployment + Service canary sobre OS MESMOS dados em produção (sem fork: utilizadores do canary sobre dados copiados por fork estariam a ler dados desatualizados e a escrever numa cópia condenada) e instrui o proxy da Rediacc a encaminhar para ele a percentagem indicada do tráfego do hostname estável. Um peso de 0 mantém o canary oculto; um peso de 100 corresponde à troca blue/green completa. Antes de cada alteração ao canary, é feito automaticamente um snapshot de grupo dos datastores do cluster (degrau 0 da escada de releases), como undo universal. A compatibilidade de esquema entre as duas versões (expand-contract) é da responsabilidade da aplicação. Para releases que QUEBREM o esquema, use antes o blue/green: faça fork do repositório (instantâneo, incluindo os dados), aponte para aqui o Service do fork com peso 100 e reverta reiniciando o pai intacto; as escritas feitas após a troca existem apenas na nova cópia, pelo que a janela de rollback é uma decisão de política.

status

Mostra os conjuntos de canary geridos: peso, imagens, Service estável e o snapshot de release-undo mais recente.

rdc repo canary status <ref>

weight

Altera a percentagem de tráfego encaminhado para um canary. Cria primeiro um novo snapshot de grupo de release-undo, depois reaplica o overlay; o proxy adota a nova divisão no próximo ciclo de atualização. Um peso de 100 envia todo o tráfego para a nova versão (a troca blue/green).

rdc repo canary weight <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--weight <percent>Percentagem de tráfego encaminhado para o canary (inteiro 0-100; 0 = oculto, 100 = troca total)Sim-
--debugAtivar saída de depuraçãoNão-

remove

Remove o Deployment e o Service de um canary (delimitado por labels); o Service estável volta a servir 100% do tráfego. Os snapshots de release-undo são mantidos; elimine-os com os comandos de snapshot do datastore.

rdc repo canary remove <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--debugAtivar saída de depuraçãoNão-

create

Executa uma imagem NOVA ao lado da estável e envia-lhe uma percentagem do tráfego em produção. O canary partilha os dados em produção do repositório (sem fork), pelo que a compatibilidade de esquema entre as duas versões é da responsabilidade da aplicação. É feito primeiro um snapshot de grupo dos datastores do cluster, como undo.

rdc repo canary create <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--image <image>Nova imagem executada pelo Deployment do canary (sobre os dados em produção partilhados)Sim-
--port <port>Porta em que a aplicação escuta (deve corresponder ao Service estável)Sim-
--weight <percent>Percentagem de tráfego encaminhado para o canary (inteiro 0-100; 0 = oculto, 100 = troca total)Sim-
--service <name>Service estável com o qual dividir o tráfego (predefinição: o nome do repositório)Não-
--replicas <n>Número de réplicas do Deployment canary (predefinição: 1)Não-
--debugAtivar saída de depuraçãoNão-

6.18 resize

Redimensionar um repositório offline (suporta crescimento e redução). O repositório tem de ser desmontado primeiro ('repo down --unmount'). Para crescimento sem tempo de inactividade sem parar, use 'repo expand'.

rdc repo resize <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--size <size>Novo tamanho do repositório (por ex., 10G, 100G, 1T)Sim-
--debugAtivar saída de depuraçãoNão-
--skip-router-restartIgnorar o reinício do servidor de rotas após atualização do binárioNão-

6.19 expand

Expandir um repositório montado online (sem tempo de inactividade, apenas crescimento). Aumenta o contentor LUKS e o sistema de ficheiros enquanto os contentores continuam em execução. Não é possível reduzir -- use 'repo resize' para isso (requer desmontagem).

rdc repo expand <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--size <size>Novo tamanho do repositório (por ex., 10G, 100G, 1T)Sim-
--debugAtivar saída de depuraçãoNão-
--skip-router-restartIgnorar o reinício do servidor de rotas após atualização do binárioNão-

6.20 trim

Recupera espaço da pool do datastore a partir de repositórios montados (online, sem tempo de inatividade). Os blocos eliminados dentro dos repositórios voltam à pool via fstrim. Sem uma ref, são aparados todos os repositórios montados em -m mais o próprio datastore. O fstrim é ignorado em repositórios com uma cópia de segurança ativa; a recuperação --docker é executada mesmo assim

rdc repo trim [ref] [options]
FlagDescriçãoObrigatórioPredefinição
--dockerLiberar espaço do Docker (contêineres parados, imagens órfãs, cache de build); é executado mesmo com um snapshot de backup ativoNão-
--docker-volumesRemover também volumes Docker não utilizadosNão-
--report-onlyMostrar o estado de discard e a estimativa recuperável sem apararNão-
-m, --machine <name>Nome da máquina de destinoNão-
--debugAtivar saída de depuraçãoNão-

6.21 policy

Gerir a política de tamanho automática aplicada pelo mantenedor de armazenamento da máquina: aumentar a cota de um repositório online quando ele enche (nunca além de max-quota, nunca com o pool baixo) e executar trims agendados. Não há redução automática; para isso use 'repo resize'. Sem uma ref, é gerida a política predefinida de toda a máquina em -m

set

Define campos da política de tamanho. Apenas os flags passados são alterados; os demais campos guardados mantêm seus valores. Ativar o auto-crescimento exige --max-quota: o teto é seu consentimento explícito para superprovisionar o pool

rdc repo policy set [ref] [options]
FlagDescriçãoObrigatórioPredefinição
--auto-grow <bool>Ativar o crescimento automático de cota online (true/false)Não-
--max-quota <size>Teto do auto-crescimento (ex. 200G); obrigatório para o auto-crescimentoNão-
--grow-threshold <percent>% de uso do sistema de arquivos que dispara um crescimento (padrão 85)Não-
--grow-step <step>Crescimento por passo: absoluto (10G) ou percentual da cota (20%)Não-
--auto-trim <bool>Ativar o trim agendado (true/false)Não-
--trim-interval <hours>Horas mínimas entre trims automáticos (padrão 24)Não-
-m, --machine <name>Nome da máquina de destinoNão-
--debugAtivar saída de depuraçãoNão-

get

Mostra a predefinição da máquina guardada, a substituição do repositório (com uma ref) e a política efetiva combinada sobre a qual o mantenedor atua

rdc repo policy get [ref] [options]
FlagDescriçãoObrigatórioPredefinição
-m, --machine <name>Nome da máquina de destinoNão-
--debugAtivar saída de depuraçãoNão-

6.22 push

Enviar repositório para um destino remoto (máquina ou armazenamento). O tipo de destino é detectado automaticamente a partir da configuração. Para transferência entre máquinas, a imagem encriptada do repositório é copiada com o MESMO GUID -- trata-se de uma cópia de segurança/migração, não de um fork. Para criar um fork independente, use 'repo fork' primeiro e depois envie. Uma cópia enviada fica como um ARTEFACTO de cópia de segurança: arranque-o no destino com 'backup restore <ref> --as <name> -m <target> --up'

rdc repo push <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--to <remote>Máquina ou nome de armazenamento de destino (detectado automaticamente a partir da configuração)Não-
--to-machine <machine>Não-
--provision <provider>Aprovisionar automaticamente a máquina de destino via fornecedor de cloud se não existirNão-
--checkpointCriar ponto de verificação CRIU antes da cópia de segurança (captura o estado de memória do processo para migração em directo)Não-
--forceForçar substituição de cópia de segurança existenteNão-
-w, --watchMonitorizar alteraçõesNão-
--bwlimit <limit>Limite de largura de banda para transferência rsync (por ex., "6M", "10M")Não-
--delta-base <guid>GUID de base imutável presente byte-a-byte idêntico em ambas as máquinas; transferir apenas os blocos alterados (máquina de destino). Omita para base automática sem intervençãoNão-
--strategy <strategy>Estratégia de delta de blocos ao usar uma base de delta: auto, physical ou sharedNão-
--debugAtivar saída de depuraçãoNão-
--skip-router-restartIgnorar o reinício do servidor de rotas após atualização do binárioNão-

6.23 pull

Receber repositório de um destino remoto (máquina ou armazenamento). Omita o nome para receber todos os repositórios. O tipo de origem é detectado automaticamente a partir da configuração. Use --up para implementar após a recepção.

rdc repo pull <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--from <remote>Máquina ou nome de armazenamento de origem (detectado automaticamente a partir da configuração)Não-
--from-machine <machine>Não-
--forceForçar substituição do repositório existenteNão-
--upApós a recepção, montar e implementar o repositório nesta máquinaNão-
-w, --watchMonitorizar alteraçõesNão-
--bwlimit <limit>Limite de largura de banda para transferência rsync (por ex., "6M", "10M")Não-
--delta-base <guid>GUID de base imutável presente byte-a-byte idêntico em ambas as máquinas; receber apenas os blocos alterados (máquina de origem)Não-
--strategy <strategy>Estratégia de delta de blocos ao usar uma base de delta: auto, physical ou sharedNão-
--debugAtivar saída de depuraçãoNão-
--skip-router-restartIgnorar o reinício do servidor de rotas após atualização do binárioNão-

6.24 migrate

Migra um repositório em direto de uma máquina para outra com o mínimo de tempo de inatividade. rsync em duas fases: transferência em massa enquanto está em execução, seguida de uma breve paragem para sincronização delta. Move o repositório inteiro (o encaminhamento é redirecionado para o novo destino) e, assim que a mudança for bem-sucedida, elimina as imagens de origem (use --keep-source para as manter). Suporta checkpoint CRIU para migração do estado de memória dos processos e aprovisionamento automático das máquinas de destino

rdc repo migrate <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--to <place>Máquina ou cluster de destinoSim-
--provision <provider>Aprovisionar automaticamente o destino via fornecedor de cloud (por ex., hetzner, linode)Não-
--bwlimit <limit>Limite de largura de banda para transferência rsync (por ex., 10M)Não-
--checkpointMigração em directo CRIU: capturar e restaurar o estado de memória dos processosNão-
--delta-base <guid>GUID de base imutável para o delta do corte (avançado; por omissão usa a base da Fase 1)Não-
--strategy <strategy>Estratégia de delta de blocos para o corte: auto, physical ou sharedNão-
--skip-dnsNão comutar os registos DNS após a migraçãoNão-
--keep-sourceManter as imagens de origem após uma mudança bem-sucedida (por omissão são eliminadas; as cópias remanescentes não são endereçáveis por nenhum registo de configuração e o reconcile assinala-as como órfãs)Não-
--debugAtivar saída de depuraçãoNão-

6.25 sync

Sincronizar repositórios e ficheiros (push/pull em volume, transferência de ficheiros)

upload

Carregar ficheiros para um repositório via rsync sobre SSH (transferência delta). Use --mirror para eliminar ficheiros remotos extra, --dry-run para pré-visualizar, --exclude para ignorar padrões.

rdc repo sync upload <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--local <paths...>Um ou mais caminhos de ficheiros ou diretórios locais (predefinição: diretório atual)Não-
--remote <path>Caminho do subdiretório remoto dentro do repositórioNão-
--remote-file <path>Caminho único do ficheiro remoto (relativo à raiz do repositório) para envio. Mutuamente exclusivo com --remote.Não-
--mirrorModo espelho - eliminar ficheiros remotos não presentes localmenteNão-
--verifyVerificar ficheiros com checksums após a sincronizaçãoNão-
--confirmPré-visualizar alterações e pedir confirmação antes de sincronizarNão-
--exclude <patterns...>Padrões a excluir da sincronizaçãoNão-
--dry-runMostrar o que seria feito sem efetuar alteraçõesNão-

download

Descarregar ficheiros de um repositório via rsync sobre SSH (transferência delta). Use --mirror para eliminar ficheiros locais extra, --dry-run para pré-visualizar, --exclude para ignorar padrões.

rdc repo sync download <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--local <path>Caminho do diretório local (predefinição: diretório atual)Não-
--remote <path>Caminho do subdiretório remoto dentro do repositórioNão-
--remote-file <path>Caminho do ficheiro remoto dentro do repositório (alternativa a --remote para transferências de ficheiro único)Não-
--mirrorModo espelho - eliminar ficheiros locais não presentes no remotoNão-
--verifyVerificar ficheiros com checksums após a sincronizaçãoNão-
--confirmPré-visualizar alterações e pedir confirmação antes de sincronizarNão-
--exclude <patterns...>Padrões a excluir da sincronizaçãoNão-
--dry-runMostrar o que seria feito sem efetuar alteraçõesNão-

status

Comparação em modo de simulação dos ficheiros locais e remotos (mostra o que seria transferido sem transferir de facto)

rdc repo sync status <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--local <path>Caminho do diretório local (predefinição: diretório atual)Não-
--remote <path>Caminho do subdiretório remoto dentro do repositórioNão-
--remote-file <path>Caminho do ficheiro remoto dentro do repositório (alternativa a --remote para transferências de ficheiro único)Não-

6.26 tunnel

Criar um túnel de reencaminhamento de porta SSH para a porta de um contentor numa máquina remota. Detecta automaticamente o contentor e a porta quando não há ambiguidade. O túnel permanece activo até premir Ctrl+C.

rdc repo tunnel <ref> [options]
FlagDescriçãoObrigatórioPredefinição
-c, --container <name>Nome do contentor (detectado automaticamente se apenas um estiver em execução)Não-
--port <port>Porta do contentor remoto a reencaminharNão-
--local <port>Porta local (por omissão, igual à porta remota)Não-
--url-onlyImprimir apenas o URL local quando o túnel estiver pronto (legível por máquina)Não-

6.27 secret

Gerir segredos por repositório injectados no momento da implementação. Apenas de escrita: get devolve apenas o resumo (nunca o texto simples); set/unset requerem correspondência do resumo --current ou --rotate-secret. Dois modos de entrega: env (REDIACC_SECRET_<KEY>) e file (tmpfs em /var/run/rediacc/secrets/<networkId>/<KEY> via `secrets:` do compose). Os segredos nunca entram na imagem LUKS encriptada; os forks não herdam nenhum.

get

Mostrar o resumo SHA-256 de um segredo. O valor em texto simples nunca é devolvido por design (apenas de escrita). Use --current numa operação set/unset subsequente para verificar um valor que já conhece, ou rode via `set --rotate-secret`.

rdc repo secret get <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--key <KEY>Chave do segredo em UPPER_SNAKE_CASE (máx. 64 caracteres). Será exposto como REDIACC_SECRET_<KEY> no modo env ou /run/secrets/<key> nos contentores no modo ficheiro.Sim-

list

Listar chaves e modos de segredos (nunca os valores, nunca os resumos).

rdc repo secret list <ref>

set

Definir ou sobrescrever um segredo. Os forks não herdam; defina no fork explicitamente. Em contexto de agente, requer correspondência do resumo --current (estilo passwd).

rdc repo secret set <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--key <KEY>Chave do segredo em UPPER_SNAKE_CASE (máx. 64 caracteres). Será exposto como REDIACC_SECRET_<KEY> no modo env ou /run/secrets/<key> nos contentores no modo ficheiro.Sim-
--value <value>Valor do segredo. Passe `-` para ler a partir de stdin (evita exposição no histórico da shell).Sim-
--mode <mode>Modo de entrega: 'env' (visível no ambiente do contentor, docker inspect) ou 'file' (ficheiro tmpfs, nunca em env). Por omissão: file.Nãofile
--current <value>Valor anterior em texto simples (pré-condição estilo passwd). Obrigatório para sobrescrever/remover; mutuamente exclusivo com --rotate-secret.Não-
--rotate-secretConfirmar rotação; ignorar a pré-condição --current (auditado como rotação). Use quando pretende rodar intencionalmente sem verificar o valor anterior.Não-

unset

Eliminar um segredo. Em contexto de agente, requer correspondência do resumo --current.

rdc repo secret unset <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--key <KEY>Chave do segredo em UPPER_SNAKE_CASE (máx. 64 caracteres). Será exposto como REDIACC_SECRET_<KEY> no modo env ou /run/secrets/<key> nos contentores no modo ficheiro.Sim-
--current <value>Valor anterior em texto simples (pré-condição estilo passwd). Obrigatório para sobrescrever/remover; mutuamente exclusivo com --rotate-secret.Não-
--rotate-secretConfirmar rotação; ignorar a pré-condição --current (auditado como rotação). Use quando pretende rodar intencionalmente sem verificar o valor anterior.Não-

6.28 admin

Verbos de administração e manutenção de repositórios.

archive

Gestão de registos de repositórios arquivados.

list:

Listar as credenciais de repositórios arquivados

rdc repo admin archive list

purge:

Eliminar permanentemente todas as credenciais arquivadas

rdc repo admin archive purge [name] [options]
FlagDescriçãoObrigatórioPredefinição
-y, --yesIgnorar pedido de confirmaçãoNão-

restore:

Restaurar uma credencial de repositório arquivado

rdc repo admin archive restore <name> [options]
FlagDescriçãoObrigatórioPredefinição
--new-name <name>Novo nome do recursoNão-

validate

Validar a integridade do repositório (contentor LUKS, consistência do sistema de ficheiros, configuração). Use após encerramentos inesperados ou para verificar a integridade das cópias de segurança.

rdc repo admin validate <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--debugAtivar saída de depuraçãoNão-
--skip-router-restartIgnorar o reinício do servidor de rotas após atualização do binárioNão-

fsck

Valida as referências da configuração do CLI (branches, HEAD) contra os objetos realmente presentes numa máquina. Reporta referências pendentes (uma referência apontando para um objeto ausente) e commits órfãos (um commit imutável que nenhuma referência alcança). Somente leitura.

rdc repo admin fsck [options]
FlagDescriçãoObrigatórioPredefinição
-m, --machine <name>Nome da máquina de destinoSim-

ownership

Alterar o UID de proprietário da directoria do repositório no volume montado (por omissão: 7111). Use quando os contentores precisam de um UID específico para aceder aos ficheiros do repositório.

rdc repo admin ownership <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--uid <uid>UID do proprietário (por omissão: 7111)Não-
--debugAtivar saída de depuraçãoNão-
--skip-router-restartIgnorar o reinício do servidor de rotas após atualização do binárioNão-

autostart

Gerir o arranque automático do repositório no arranque do sistema

enable:

Activar o arranque automático de um repositório (omita o nome para activar todos)

rdc repo admin autostart enable [ref] [options]
FlagDescriçãoObrigatórioPredefinição
--debugAtivar saída de depuraçãoNão-
--skip-router-restartIgnorar o reinício do servidor de rotas após atualização do binárioNão-

disable:

Desactivar o arranque automático de um repositório (omita o nome para desactivar todos)

rdc repo admin autostart disable [ref] [options]
FlagDescriçãoObrigatórioPredefinição
--debugAtivar saída de depuraçãoNão-
--skip-router-restartIgnorar o reinício do servidor de rotas após atualização do binárioNão-

list:

Listar os repositórios com arranque automático activado

rdc repo admin autostart list [options]
FlagDescriçãoObrigatórioPredefinição
-m, --machine <name>Nome da máquina de destinoSim-
--debugAtivar saída de depuraçãoNão-
--skip-router-restartIgnorar o reinício do servidor de rotas após atualização do binárioNão-

template

Gerir e aplicar modelos de implementação (escreve docker-compose.yml, Rediaccfile e ficheiros adicionais). O Rediaccfile deve usar 'renet compose' (não 'docker compose'). As políticas de reinício são seguras (geridas automaticamente pelo watchdog do renet). O renet injeta automaticamente network_mode:host, capacidades CRIU e etiquetas rediacc. Definições perigosas (privileged, pid:host) são bloqueadas. Use 'list' para ver os modelos incorporados disponíveis e 'apply' para implementar um num repositório.

list:

Listar todos os modelos de implementação incorporados fornecidos com o CLI

rdc repo admin template list

apply:

Aplicar um modelo a um repositório. Use um nome de modelo incorporado (por ex., app-postgres) ou --file para um modelo JSON personalizado. Ciclo de vida do Rediaccfile: up() inicia os contentores (obtenha as imagens e gere as configurações aqui), down() para. Rediaccfile mínimo: up() { renet compose -- pull; renet compose -- up -d; } down() { renet compose -- down; }. IMPORTANTE: o Rediaccfile TEM de usar 'renet compose': 'docker compose' é rejeitado. VARIÁVEIS DE AMBIENTE: dois níveis: (a) shell do Rediaccfile: ${SVCNAME_IP} (por ex., APP_IP), ${REDIACC_WORKING_DIR}, ${REDIACC_NETWORK_ID}. (b) Dentro dos contentores: o renet injeta automaticamente as variáveis SERVICE_IP e REDIACC_NETWORK_ID. A reescrita de bind via eBPF trata o isolamento de IPs de forma transparente, pelo que as aplicações podem ligar-se a 0.0.0.0 e o kernel reescreve para o IP de loopback correto. As verificações de saúde podem usar localhost. network_mode:host é injetado e ports: são ignoradas. ARMAZENAMENTO: tanto os bind mounts ${REDIACC_WORKING_DIR}/... como os volumes Docker nomeados são seguros: a raiz de dados do Docker fica dentro do volume LUKS encriptado. POLÍTICA DE REINÍCIO: as políticas de reinício são seguras: o renet remove-as automaticamente para compatibilidade com CRIU e o watchdog trata da recuperação. Compose: NÃO adicione network_mode nem etiquetas rediacc.* (o renet injeta-as). Multi-projeto: coloque cada subprojeto no seu próprio subdiretório com o seu próprio Rediaccfile: o renet deteta-os automaticamente e executa-os por ordem. Encaminhamento HTTPS: (A) Rota automática (compatível com fork, recomendado): NÃO adicione traefik.enable. O renet gera automaticamente https://{serviceName}.{repoName}.{machineName}.{baseDomain}. Adicione a etiqueta rediacc.service_port=<porta> para portas diferentes de 80. Cada fork obtém um domínio único. (B) Etiquetas Traefik (domínio personalizado, NÃO compatível com fork): traefik.enable=true, traefik.http.routers.<n>.rule=Host(`domínio`), traefik.http.routers.<n>.entrypoints=websecure,websecure-v6, traefik.http.routers.<n>.tls.certresolver=letsencrypt, traefik.http.services.<n>.loadbalancer.server.port=<porta>. Para TCP/UDP: rediacc.tcp_ports=3306 / rediacc.udp_ports=53

rdc repo admin template apply <ref> [options]
FlagDescriçãoObrigatórioPredefinição
--template <name>Modelo a aplicarSim-
--file <path>Caminho para o ficheiro JSON de modelo personalizado ({"version":"2","files":{"Rediaccfile":"...","docker-compose.yml":"..."}}): substitui o nome do modelo incorporadoNão-
--grand <name>Repositório de credenciais pai (resolve automaticamente o nome para GUID). Apenas para repositórios que partilham segredos com um pai.Não-
--debugAtivar saída de depuraçãoNão-
--skip-router-restartIgnorar o reinício do servidor de rotas após atualização do binárioNão-

6.29 promote

Substituir os dados do repositório pai pelos dados de um fork. O pai mantém a sua identidade (GUID, networkId, domínios, arranque automático, cadeia de cópia de segurança) mas recebe os dados actualizados do fork. Os dados de produção antigos são preservados como fork de cópia de segurança. Utilização: testar actualização no fork, verificar, e depois fazer takeover para produção.

rdc repo promote <fork-ref> [options]
FlagDescriçãoObrigatórioPredefinição
-y, --yesIgnorar pedido de confirmaçãoNão-
--debugAtivar saída de depuraçãoNão-
--skip-router-restartIgnorar o reinício do servidor de rotas após atualização do binárioNão-

6.30 logs

Mostra os logs de aplicação dos contentores de um repositório. Os repositórios docker são lidos a partir do próprio daemon Docker do repositório; os repositórios Kubernetes leem os logs dos pods no namespace do repositório. Se o repositório executar mais do que um contentor, indique qual pretende com --container.

rdc repo logs <ref> [options]
FlagDescriçãoObrigatórioPredefinição
-c, --container <name>Contentor a ler (apenas necessário quando o repositório executa mais do que um)Não-
-f, --followContinuar a transmitir novas linhas até interromperNão-
--lines <n>Quantas linhas de histórico mostrar (por omissão: 100)Não100
--timestampsPrefixar cada linha com o seu carimbo de data/horaNão-
--debugAtivar saída de depuraçãoNão-

6.31 exec

Executa um comando dentro de um contentor do repositório. O código de saída do próprio comando é propagado tal e qual, pelo que funciona em scripts e condicionais. Os repositórios docker executam-no através do daemon Docker do repositório; os repositórios Kubernetes executam-no no namespace do repositório.

rdc repo exec <ref> <cmd...> [options]
FlagDescriçãoObrigatórioPredefinição
-c, --container <name>Contentor onde executar (apenas necessário quando o repositório executa mais do que um)Não-
-i, --interactiveAtribuir um terminal (para um comando que o espera)Não-
-u, --user <user>Utilizador com o qual executar o comandoNão-
--debugAtivar saída de depuraçãoNão-

7. Jobs desanexados

Gerencia jobs desanexados em uma máquina: liste-os, verifique o status, reproduza ou acompanhe seus logs de eventos, cancele um deles ou remova os finalizados (garbage collection). Um job desanexado é executado sob o systemd na máquina, portanto sobrevive a uma queda de conexão e pode ser reconectado depois.

7.1 list

Lista os jobs desanexados em uma máquina, do mais recente ao mais antigo

rdc job list [options]
FlagDescriçãoObrigatórioPredefinição
-m, --machine <name>Nome da máquina de destinoSim-

7.2 status

Mostra o status de um job desanexado

rdc job status <job-id> [options]
FlagDescriçãoObrigatórioPredefinição
-m, --machine <name>Nome da máquina de destinoSim-

7.3 logs

Reproduz ou acompanha o log de eventos de um job desanexado

rdc job logs <job-id> [options]
FlagDescriçãoObrigatórioPredefinição
-m, --machine <name>Nome da máquina de destinoSim-
-f, --followTransmite continuamente até o job terminarNão-
--since-line <n>Retoma após esta quantidade de linhas (a contagem que você já recebeu)Não-
--debugAtivar saída de depuraçãoNão-

7.4 cancel

Cancela um job desanexado em execução

rdc job cancel <job-id> [options]
FlagDescriçãoObrigatórioPredefinição
-m, --machine <name>Nome da máquina de destinoSim-
-y, --yesIgnorar pedido de confirmaçãoNão-

7.5 gc

Remove jobs finalizados e seus logs

rdc job gc [options]
FlagDescriçãoObrigatórioPredefinição
-m, --machine <name>Nome da máquina de destinoSim-
--older-than <duration>Coleta jobs finalizados há mais tempo que isso, em horas (padrão: 168)Não-
-y, --yesIgnorar pedido de confirmaçãoNão-

8. Backup e Restauro

Gerir estratégias de cópia de segurança, as suas execuções agendadas e os artefactos que produzem: declarar uma estratégia para um repositório, executá-la ou restaurá-la a pedido, e inspecionar os arquivos que escreveu num destino de armazenamento.

8.1 schedule

Implementar o agendamento de cópias de segurança numa máquina remota (temporizadores systemd)

rdc backup schedule [options]
FlagDescriçãoObrigatórioPredefinição
-m, --machine <name>Nome da máquinaSim-
--dry-runPré-visualizar as unidades geradas sem implementarNão-
--forceProsseguir mesmo que uma cópia de segurança esteja em curso (a nova unidade aplica-se no próximo ciclo; a invocação em curso mantém a unidade antiga)Não-
--reset-failedLimpar estado falhado nos serviços afetados após uma implementação bem-sucedida (desativado por predefinição, preserva o sinal de falha)Não-
--debugAtivar saída de depuraçãoNão-

8.2 cancel

Cancelar uma cópia de segurança em curso numa máquina remota

rdc backup cancel [strategy] [options]
FlagDescriçãoObrigatórioPredefinição
-m, --machine <name>Nome da máquinaSim-
--debugAtivar saída de depuraçãoNão-

8.3 list

Listar artefactos de cópia de segurança numa máquina ou armazenamento.

rdc backup list [artifact-ref] [options]
FlagDescriçãoObrigatórioPredefinição
-m, --machine <name>Nome da máquinaNão-
--storage <name>Listar artefactos neste armazenamentoNão-
--path <subdir>Subdiretório dentro da raiz do armazenamento. Se omitido, hot/ e cold/ são listados e combinados.Não-
-w, --watchMonitorizar alteraçõesNão-
--debugAtivar saída de depuraçãoNão-

8.4 restore

Transforma um artefacto de cópia de segurança num repositório ativo. A localização é indicada aqui.

rdc backup restore <artifact-ref> [options]
FlagDescriçãoObrigatórioPredefinição
--as <name>Nome para o repositório restaurado (por omissão, o nome do artefacto)Não-
-m, --machine <name>Nome da máquinaNão-
--datastore <name>Restaurar para este datastore com nome (é alojado pela máquina a que está anexado)Não-
--upImplementar o repositório restaurado após a transferênciaNão-
--health-window <seconds>Janela total da verificação de saúde, em segundos (por omissão 300)Não-
--health-timeout <seconds>Tempo limite por tentativa da verificação de saúde, em segundos (por omissão 30)Não-
-y, --yesIgnorar pedido de confirmaçãoNão-
--debugAtivar saída de depuraçãoNão-

8.5 run

Acionar uma cópia de segurança imediatamente numa máquina remota

rdc backup run [strategy] [options]
FlagDescriçãoObrigatórioPredefinição
-m, --machine <name>Nome da máquinaSim-
-w, --watchMonitorizar alteraçõesNão-
--debugAtivar saída de depuraçãoNão-

8.6 status

Mostrar estado da cópia de segurança e estado do temporizador numa máquina remota

rdc backup status [strategy] [options]
FlagDescriçãoObrigatórioPredefinição
-m, --machine <name>Nome da máquinaSim-
--debugAtivar saída de depuraçãoNão-

8.7 strategy

Gerir estratégias de cópia de segurança com nome (modos hot/cold, destinos, agendamento)

set

Criar ou actualizar uma estratégia de cópia de segurança

rdc backup strategy set <strategy> [options]
FlagDescriçãoObrigatórioPredefinição
--destination <name>Nome do destino dentro da estratégiaNão-
--storage <name>Nome da configuração de armazenamento (credenciais rclone)Não-
--cron <expression>Agendamento cron (por ex., "0 * * * *" para de hora em hora)Não-
--mode <mode>Modo de cópia de segurança: "hot" (sem tempo de inactividade) ou "cold" (parar, snapshot, reiniciar)Não-
--bwlimit <limit>Limite de largura de banda rclone (por ex., "6M", "10M:off", "08:00,3M;22:00,10M")Não-
--include <repos>Fazer cópia de segurança apenas destes repositórios (nomes separados por vírgula)Não-
--exclude <repos>Excluir estes repositórios da cópia de segurança (nomes separados por vírgula)Não-
--folder <path>Subpasta dentro do bucket de armazenamento para este destino (por ex., hot, cold)Não-
--enableActivar a estratégia ou destinoNão-
--disableDesactivar a estratégia ou destinoNão-

bind

Vincular uma estratégia de cópia de segurança a uma máquina para que o seu agendamento seja implementado nela

rdc backup strategy bind <strategy> [options]
FlagDescriçãoObrigatórioPredefinição
-m, --machine <name>Nome da máquina de destinoSim-

unbind

Desvincular uma estratégia de cópia de segurança de uma máquina

rdc backup strategy unbind <strategy> [options]
FlagDescriçãoObrigatórioPredefinição
-m, --machine <name>Nome da máquina de destinoSim-

remove

Remover uma estratégia ou destino de cópia de segurança

rdc backup strategy remove <strategy> [options]
FlagDescriçãoObrigatórioPredefinição
--destination <name>Remover apenas este destino (mantém os outros destinos)Não-

list

Listar todas as estratégias de cópia de segurança

rdc backup strategy list

show

Mostrar os detalhes de uma estratégia de cópia de segurança

rdc backup strategy show [strategy]

9. Gestão de Armazenamento

Gerir destinos externos de armazenamento de cópias de segurança (S3 e outros destinos compatíveis com rclone): registá-los e removê-los, listar o que está registado, explorar os artefactos que contêm e limpar cópias de segurança órfãs.

9.1 list

Listar os armazenamentos. Indique um nome para o detalhe completo.

rdc storage list [name] [options]
FlagDescriçãoObrigatórioPredefinição
--revealMostrar a configuração de armazenamento em texto simples (apenas TTY interactivo; auditado)Não-

9.2 browse

Navegar em ficheiros num sistema de armazenamento

rdc storage browse <storage> [options]
FlagDescriçãoObrigatórioPredefinição
--path <subpath>Caminho de subdiretório a listarNão

9.3 prune

Eliminar cópias de segurança órfãs do armazenamento que já não constam em nenhuma configuração. Compatível com múltiplas configurações com proteção de período de carência. As chamadas rclone executam em --machine (o executor), não no seu computador local, pelo que os clientes não precisam de ter o rclone instalado localmente; --machine é o executor, não a fonte de informação.

rdc storage prune <storage> [options]
FlagDescriçãoObrigatórioPredefinição
-m, --machine <name>Máquina executora -- executa as chamadas rclone list/delete contra o armazenamento. Obrigatório porque não se espera que os clientes tenham o rclone instalado localmente; as credenciais de armazenamento continuam a vir da sua configuração local.Sim-
--dry-runMostrar o que seria feito sem efetuar alteraçõesNão-
--forceIgnorar pedidos de confirmaçãoNão-
--force-delete-mountedIgnorar a verificação de segurança de montagem e eliminar cópias de segurança na cloud mesmo que o GUID de origem esteja montado ou com contentor em execução na máquina executora. Distinto de --force (que apenas ignora o período de carência para repositórios arquivados).Não-
--grace-days <days>Período de graça em dias para repositórios recentemente arquivados (predefinição: 7)Não-
--debugAtivar saída de depuraçãoNão-
--skip-router-restartIgnorar o reinício do servidor de rotas após atualização do binárioNão-

9.4 add

Registar um armazenamento.

rdc storage add <name> [options]
FlagDescriçãoObrigatórioPredefinição
--vault <json>Conteúdo do vault como string JSONSim-

9.5 import

Importar armazenamentos de um ficheiro de configuração rclone

rdc storage import <file> [options]
FlagDescriçãoObrigatórioPredefinição
--name <name>Importar apenas esta secção com nomeNão-

9.6 remove

Remover um armazenamento da configuração.

rdc storage remove <name> [options]
FlagDescriçãoObrigatórioPredefinição
-y, --yesIgnorar pedido de confirmaçãoNão-
--dry-runMostrar o que seria feito sem efetuar alteraçõesNão-

10. Integração com VS Code

Abrir o VS Code com Remote SSH para uma máquina ou repositório com ambiente isolado por repositório. Mesma ligação SSH que `term` mas inicia o VS Code em vez do terminal. Subcomandos principais: connect (ou atalho posicional), list (mostrar ligações configuradas), cleanup (remover entradas de configuração SSH), check (verificar instalação do VS Code).

10.1 connect

Abrir o VS Code numa máquina ou dentro de um repositório.

rdc vscode connect <target> [options]
FlagDescriçãoObrigatórioPredefinição
-f, --folder <path>Caminho da pasta remota a abrirNão-
--url-onlyImprimir o URI do VS Code em vez de o lançarNão-
-n, --new-windowAbrir numa nova janela do VS CodeNão-
--skip-env-setupIgnorar configuração do ambiente remotoNão-
--insidersUsar definições do VS Code InsidersNão-
--browserServir o VS Code para browser a partir da sandbox do repositório (sem VS Code local)Não-
--no-openImprimir o URL sem abrir o browser localNão-
--local <port>Porta local (por omissão, igual à porta remota)Não-
--server-provider <id>Implementação do servidor VS Code para browser (openvscode, code-server)Não-
--server-archive <file>Caminho do arquivo tar do servidor pré-colocado na máquina (instalações sem ligação à internet)Não-

10.2 list

Listar ligações SSH do VS Code configuradas

rdc vscode list

10.3 cleanup

Remover configurações SSH do VS Code

rdc vscode cleanup [options]
FlagDescriçãoObrigatórioPredefinição
--allRemover todas as configurações SSH do rediaccNão-
-c, --connection <name>Remover ligação específicaNão-

10.4 check

Verificar instalação e configuração do VS Code

rdc vscode check [options]
FlagDescriçãoObrigatórioPredefinição
--insidersUsar definições do VS Code InsidersNão-

10.5 serve

Gerir o servidor VS Code para browser dentro da sandbox

status

Mostrar se o servidor VS Code para browser está em execução

rdc vscode serve status <target> [options]
FlagDescriçãoObrigatórioPredefinição
--server-provider <id>Implementação do servidor VS Code para browser (openvscode, code-server)Não-

stop

Parar o servidor VS Code para browser

rdc vscode serve stop <target> [options]
FlagDescriçãoObrigatórioPredefinição
--server-provider <id>Implementação do servidor VS Code para browser (openvscode, code-server)Não-

11. Acesso SSH por Terminal

Abre um terminal SSH para uma máquina ou um repositório. O destino é um nome de máquina ou uma ref de repositório, e o contexto do repositório (DOCKER_HOST, diretório de trabalho, ambiente) é configurado automaticamente. Use `-c` para executar um único comando de forma não interativa. Para logs de contentor ou um comando pontual num contentor, use `repo logs` e `repo exec`. Para o VS Code, use `vscode`.

11.1 connect

Abrir uma shell numa máquina, ou dentro de um repositório com o seu Docker configurado.

rdc term connect <target> [options]
FlagDescriçãoObrigatórioPredefinição
-c, --command <cmd>Executar um comando em vez do shell interativoNão-
--externalForçar abertura numa janela de terminal externaNão-
--reset-homeRepor a sobreposição home por repositório para um início limpoNão-

12. Comandos Rápidos (Atalhos)

12.1 run

AVISO: Comando de baixo nível apenas para depuração e experimentação. Não para uso em produção. Use comandos de nível superior (repo up, repo down, etc.) em alternativa. Executa uma função bridge diretamente numa máquina.

rdc run

12.2 trace

Rastrear uma tarefa (atalho para: queue trace)

rdc trace

12.3 cancel

Cancelar uma tarefa (atalho para: queue cancel)

rdc cancel

12.4 retry

Repetir uma tarefa falhada (atalho para: queue retry)

rdc retry

13. Gestão de Subscrições

Gerir licenciamento e tokens de subscrição. Inicie sessão com login, inspecione com status, reemita licenças com refresh.

13.1 login

Autenticar via browser ou token de API

rdc subscription login [options]
FlagDescriçãoObrigatórioPredefinição
-t, --token <token>Token de API (rdt_...)Não-
--server <url>URL do servidor de contaNão-

13.2 logout

Apagar token de subscrição armazenado

rdc subscription logout

13.3 status

Mostrar a subscrição e o estado de licença de uma máquina.

rdc subscription status [options]
FlagDescriçãoObrigatórioPredefinição
-m, --machine <name>Nome da máquinaNão-

13.4 refresh

Renovar licenças a partir do servidor de conta.

rdc subscription refresh [options]
FlagDescriçãoObrigatórioPredefinição
-m, --machine <name>Nome da máquinaNão-
--repo <ref>Ref do repositório: nome, ou nome:etiqueta, opcionalmente com @machine (por exemplo shop ou shop:test)Não-

14. Atualizações da CLI

Verificar novas versões do CLI e aplicar atualizações. Suporta --check-only para verificar sem instalar e --force para atualizar mesmo que já esteja na versão mais recente.

rdc update [options]
FlagDescriçãoObrigatórioPredefinição
--forceForçar atualização mesmo que já esteja na versão mais recenteNão-
--check-onlyApenas verificar atualizações sem transferirNão-
--rollbackReverter para a versão anteriorNão-
--statusMostrar estado e diagnósticos da atualização automáticaNão-
--channel <channel>Definir canal de versão (stable ou edge)Não-

15. Créditos de Terceiros

Imprimir os componentes de terceiros incluídos com o rdc: os binários que o renet incorpora e transporta (CRIU, rsync, rclone), o runtime Node.js incorporado, e as dependências npm incluídas. Mostra versões, identificadores de licença SPDX, e os URLs de arquivo de código-fonte da versão exata exigidos para conformidade com a GPL. Use --licenses para imprimir o texto completo THIRD_PARTY_LICENSES incluído nas compilações de lançamento.

rdc credits [options]
FlagDescriçãoObrigatórioPredefinição
--licensesImprimir o texto completo THIRD_PARTY_LICENSES incluído nas compilações de lançamentoNão-

16. Diagnóstico do Sistema

Executar verificações de diagnóstico ao ambiente do CLI: versão do Node.js, disponibilidade do binário renet, validade do ficheiro de configuração, estado das chaves SSH e conectividade de rede. Produz um relatório de saúde estruturado com indicadores de aprovação/falha.

rdc doctor

17. Operações de VM Locais

Provisionamento e gestão de VMs locais com KVM/QEMU/Hyper-V (plataforma detetada automaticamente). Não se destina a máquinas remotas -- use `machine` para esse efeito. Subcomandos principais: up (iniciar VMs), down (parar), status (listar VMs em execução), ssh (ligar a VM), setup (instalar pré-requisitos), check (verificar disponibilidade do anfitrião).

17.1 up

Provisionar cluster de VMs localmente

rdc ops up [options]
FlagDescriçãoObrigatórioPredefinição
--forceForçar reinício de todas as VMsNão-
--parallelCriar VMs em paraleloNão-
--basicCluster mínimo (bridge + 1 worker)Não-
--liteIgnorar provisionamento de VMs (apenas estado)Não-
--skip-orchestrationIgnorar orquestração do clusterNão-
--backend <backend>Backend de virtualização (kvm|qemu, detetado automaticamente)Não-
--os <name>Sistema operativo da VM (ex.: ubuntu-24.04, debian-13)Não-
--debugAtivar saída de depuraçãoNão-

17.2 down

Destruir cluster de VMs

rdc ops down [options]
FlagDescriçãoObrigatórioPredefinição
--backend <backend>Backend de virtualização (kvm|qemu, detetado automaticamente)Não-
--debugAtivar saída de depuraçãoNão-

17.3 status

Mostrar estado do cluster de VMs

rdc ops status [options]
FlagDescriçãoObrigatórioPredefinição
--backend <backend>Backend de virtualização (kvm|qemu, detetado automaticamente)Não-

17.4 ssh

Acesso SSH a uma VM

rdc ops ssh [options]
FlagDescriçãoObrigatórioPredefinição
--vm-id <id>ID da máquina virtualSim-
-c, --command <cmd>Executar um comando em vez do shell interativoNão-
--backend <backend>Backend de virtualização (kvm|qemu, detetado automaticamente)Não-
--user <user>Nome de utilizador SSH para ligação à VMNão-

17.5 setup

Instalar pré-requisitos de virtualização

rdc ops setup [options]
FlagDescriçãoObrigatórioPredefinição
--debugAtivar saída de depuraçãoNão-

17.6 check

Verificar pré-requisitos de virtualização

rdc ops check

18. Serviço executor

Executa este processo como executor para que os clientes possam executar comandos através dele em vez de se conectarem eles próprios via SSH

rdc serve [options]
FlagDescriçãoObrigatórioPredefinição
-p, --port <port>Porta para escutarNão8080
--host <host>Endereço ao qual vincularNão0.0.0.0
--mode <mode>Posicionamento: daemon (host do cliente) ou containerNãodaemon

Mensagens de Erro Comuns

Quando algo corre mal, a CLI fornece mensagens de erro claras:

ErroSignificado
Autenticação necessária. Execute: rdc subscription loginPrecisa de iniciar sessão primeiro
Nenhuma configuração ativa. Crie uma com: rdc config init <name>Nenhuma configuração está ativa -- crie uma com `rdc config init`
Permissão negadaA sua conta não tem as permissões necessárias
Nome da máquina necessário. Use --machine <name>Especifique uma máquina com `--machine` ou defina um valor predefinido na configuração
Nome da equipa necessário. Use --team ou defina o padrão com: rdc config set team <name>Especifique uma equipa com `--team` ou defina um valor predefinido na configuração
Nome da região necessário. Use --region ou defina o padrão com: rdc config set region <name>Especifique uma região com `--region` ou defina um valor predefinido na configuração

Formatos de Saída

Todos os comandos de listagem/obtenção suportam múltiplos formatos de saída via `--output`:

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

Isto facilita a integração da CLI Rediacc em scripts, pipelines de CI/CD e fluxos de automação.