runner ckeys copy

Copia a ckey de uma app (--from) para outra (--to), de forma que ambas compartilhem a mesma chave de criptografia. Disponível desde v2.30.6.

Use quando: N apps compartilham um repo upstream (docker-compose com múltiplos serviços) — o runner armazena .runner/secrets.enc na raiz do repo, portanto as apps precisam ter a mesma ckey para que reset-bundle funcione sem sobrescrever o bundle umas das outras. Ver guia → ../../recuperar/multi-service-shared-repo.md.

Sintaxe

runner ckeys copy [OPTIONS] --from <FROM> --to <TO>

Flags

Flag Default Descrição
--from <FROM> Obrigatório. App de origem (ckey preservada inalterada)
--to <TO> Obrigatório. App de destino (ckey será substituída)
--yes Skipa a confirmação interativa
-o, --output <FORMAT> human Formato de saída: human, json, yaml
--json Atalho para --output json
--insecure Bypassa guards de segurança (gera banner e audit log)
-h, --help Exibe ajuda

Exemplo

$ runner ckeys copy --from meet-api --to meet-worker
This will REPLACE the ckey of meet-worker with the ckey of meet-api.
meet-worker bundles will be unreadable until you run `runner secrets reset-bundle meet-worker`.
Proceed? [y/N]: y

Ckey copied: meet-api meet-worker
Next step: runner secrets reset-bundle meet-worker

Sem prompt interativo (script/CI):

$ runner ckeys copy --from meet-api --to meet-worker --yes
Ckey copied: meet-api meet-worker
Next step: runner secrets reset-bundle meet-worker

O que o comando faz

  1. Lê a ckey do state file de --from (/opt/runner/state/<from>.yml)
  2. Atualiza o campo ckey: no state file de --to
  3. Não toca nos bundles .runner/secrets.enc de nenhuma das apps

Após o comando, os bundles de --to ficam ilegíveis até você rodar runner secrets reset-bundle <to>, que os reconstrói com a nova ckey.

Aviso de segurança

A operação substitui a ckey da app de destino. Qualquer backup ou bundle criptografado com a ckey antiga de --to se torna irrecuperável. Certifique-se de que o plaintext de --to está completo antes de prosseguir:

runner secrets show meet-worker

Fluxo completo: multi-service compartilhando bundle

# 1. Identificar divergências antes de unificar
runner secrets diff meet-api meet-worker

# 2. Resolver conflitos (ver runner secrets diff)
runner secrets set meet-worker DATABASE_URL "valor-canonico"

# 3. Copiar a ckey da app "principal" para as demais
runner ckeys copy --from meet-api --to meet-worker
runner ckeys copy --from meet-api --to meet-scheduler  # se houver mais

# 4. Rebuild dos bundles das apps que receberam a ckey
runner secrets reset-bundle meet-worker
runner secrets reset-bundle meet-scheduler

# 5. Verificar
runner secrets show meet-api
runner secrets show meet-worker
runner secrets show meet-scheduler

Erros comuns

  • app_not_found: meet-api — app de origem não registrada; verifique com runner list.
  • no_ckey_in_from — app de origem foi registrada sem ckey; re-registre com runner add --ckey "...".
  • same_app--from e --to são o mesmo app; nenhuma ação necessária.

Veja também

By Borlot.com.br on 27/05/2026