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 video-api --to video-worker
This will REPLACE the ckey of video-worker with the ckey of video-api.
video-worker bundles will be unreadable until you run `runner secrets reset-bundle video-worker`.
Proceed? [y/N]: y

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

Sem prompt interativo (script/CI):

$ runner ckeys copy --from video-api --to video-worker --yes
Ckey copied: video-api → video-worker
Next step: runner secrets reset-bundle video-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 video-worker

Fluxo completo: multi-service compartilhando bundle

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

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

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

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

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

Erros comuns

  • app_not_found: video-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