Feito com Chinaski

Atualizações Offline

Os releases do Chinaski são tratados como artefatos que viajam em mídia removível dentro de ambientes air-gapped: um bundle assinado, sua assinatura e sua chave pública de release.

O fluxo de trabalho documentado

  1. Em uma máquina conectada, obtenha o bundle de release mais novo (um tar.gz) mais seu arquivo de assinatura .sig da localização de releases. As assinaturas são assinaturas Ed25519 em hex dos bytes brutos do bundle, produzidas pela ferramenta de assinatura de release contra uma chave de release.
  2. Transfira ambos os arquivos para a máquina air-gapped (USB, cópia unidirecional, qualquer que seja sua disciplina de transferência).
  3. Execute o script de atualização:
bash scripts/apply_update.sh \
    --bundle  chinaski-<version>.tar.gz \
    --sig     chinaski-<version>.tar.gz.sig \
    --pubkey  keys/chinaski_release.pub \
    [--prefix /opt/chinaski]

O script verifica primeiro a assinatura Ed25519 (bundles adulterados são rejeitados de imediato), faz backup da aplicação atual e então aplica a atualização, mantendo a versão anterior recuperável se algo der errado depois.

A variante on-line, nunca automática

A aplicação tem uma capacidade de verificação de atualização, mas ela só consulta, e sempre, uma URL de manifest que você define explicitamente (via a variável de ambiente CHINASKI_UPDATE_MANIFEST_URL) e apenas quando o modo air-gap está desligado. Nada “liga para casa” pedindo atualizações sem ambos estarem configurados. As assinaturas de manifest são verificadas contra a chave pública de release quando há uma chave disponível.

Notas de operação

  • A verificação de assinatura é obrigatória no caminho da atualização, não apenas uma recomendação.
  • A chave pública de release que o updater usa por padrão é keys/chinaski_release.pub na instalação; mantenha-a segura e atualizada junto com os futuros bundles, quando o projeto anunciar novas chaves.
  • Os bundles se fundam na mesma maquinaria make-bundle usada para a instalação offline inicial; o bundle carrega os tarballs do CPAN, de modo que atualizar para um release mais novo também funciona sem acesso à rede.
  • Antes de aplicar uma atualização em um sistema ao vivo, mantenha um backup atual e anote que o script de apply faz backup da aplicação anterior automaticamente, o momento de aplicar é a janela de manutenção, como em qualquer CMS.
Leia este site em