Feito com Chinaski

Instalação

O Chinaski instala em um servidor Debian/Ubuntu com um comando, ou totalmente offline a partir de um bundle. Esta página percorre a instalação padrão, o caminho offline, como verificar o que você baixou e como as atualizações funcionam em uma instância instalada.

Requisitos

  • Um servidor Debian/Ubuntu; você roda o instalador como root.
  • Outros sistemas também funcionam, mas a instalação automática de pacotes do instalador pressupõe Debian/Ubuntu. Em outros casos, você instala os pacotes de pré-requisitos você mesmo (documentado no README do projeto) antes de rodar o instalador.

A instalação de um comando só

Em um servidor novo:

curl -fsSL https://chinaski.net/install | sudo bash -s -- 1 --repo https://github.com/bigjohncobb/chinaski

Só isso. O instalador servido é a versão atual do próprio script de instalação do projeto. Substitua 1 pelo nome da sua instância.

O que o instalador faz, em ordem (tudo automático):

  1. Instala cada pacote de sistema e dependência Perl por si mesmo (usando as versões empacotadas do Debian quando existem; o punhado não empacotado é obtido do CPAN no momento da instalação). Nada precisa ser compilado à mão.
  2. Cria um usuário de sistema chinaski dedicado.
  3. Clona o repositório e organiza a aplicação sob /var/www/chinaski<instance> com permissões restritivas.
  4. Cria e inicializa o banco de dados SQLite.
  5. Gera um segredo único, impresso uma vez no final da instalação; anote-o em algum lugar seguro.
  6. Registra o serviço systemd e o timer diário de backup, ambos habilitados.

Opções:

  • --repo URL: instalar de uma URL git diferente (o padrão é o repositório oficial).
  • --local / --src DIR: instalar de um checkout local em vez de clonar.
  • --dir DIR: instalar em outro lugar que não /var/www/chinaski<instance>.
  • --port PORT: a porta de escuta. Nomes de instância numéricos recebem 3000 + N automaticamente (instância 1 → 3001); nomes não numéricos usam como padrão 3001, a menos que seja sobrescrito.

Regras que vale conhecer:

  • Nomes de instância são alfanuméricos (1, 2, prod, staging).
  • O instalador recusa um diretório de instalação existente não vazio; rode o desinstalador primeiro para uma reinstalação.
  • No final, a saída de conclusão imprime seu segredo. Guarde-o.
  • Um timer diário de backup é habilitado automaticamente como parte da instalação; veja Backup Schedule & Retention para ajustes.

Primeira execução

A primeira visita ao site redireciona para a tela de setup, onde você define o nome de usuário e a senha do primeiro administrador (mínimo de 12 caracteres, com maiúsculas, minúsculas e um dígito). Depois que o setup é concluído, a tela de setup desaparece permanentemente. Instalações via script podem completar o mesmo passo pela linha de comando (veja a CLI & Server Reference).

Instalando offline (sem internet, nunca)

Em uma máquina conectada:

bash install/make-bundle.sh

produz um bundle de release mais seu checksum: código-fonte da aplicação, cada módulo Perl necessário, um instalador empacotado, tudo o que a máquina de destino precisa. Copie o bundle para o destino por USB ou qualquer meio offline, então:

tar -xzf chinaski-<commit>.tar.gz
cd chinaski-<commit>
sudo bash install.sh

Sem DNS, sem certificados, sem downloads: todas as dependências são resolvidas a partir do próprio bundle. A instalação offline pré-define o segredo e o modo airgap no arquivo env. Existe uma variante online do mesmo instalador com flags para local de instalação (--prefix), pular o registro do serviço (--no-service) e pular pacotes de sistema (--no-apt).

Verificando um artefato

As saídas de build podem vir acompanhadas de um manifest assinado, um arquivo listando cada artefato de release com seu hash criptográfico, assinado com a chave Ed25519 do projeto. Um verificador empacotado o checa offline:

perl tools/verify-manifest.pl \
  --manifest build-manifest.json \
  --sig      build-manifest.json.sig \
  --pubkey   keys/chinaski_manifest.pub \
  --output   output/

Exit 0 significa que a assinatura é válida e cada arquivo listado corresponde ao seu checksum registrado; qualquer outra coisa imprime exatamente quais arquivos diferem (com --strict-tree, ele também sinaliza arquivos presentes em disco mas ausentes do manifest). Sem necessidade de rede, utilizável em hosts air-gapped.

Atualizando um site instalado

As atualizações são por instância e deliberadas:

  1. Puxe o novo código para aquela instância.
  2. Atualize as dependências (o script usa um diretório vendor/ empacotado quando presente, então servidores offline atualizam de forma limpa).
  3. Verifique a sintaxe do novo código antes que qualquer coisa seja tocada.
  4. Reconstrua o site: se o build falhar, a atualização aborta em vez de reiniciar o serviço sobre uma saída quebrada. (Uma flag de ambiente opcional deixa passar um hotfix só de código quando o próprio builder está travado.)
  5. Reinicie o serviço e mostre o resultado; a raiz de documentos do servidor web é atualizada automaticamente se o seu modo de URL por idioma mudou.

Você pode rodar um deploy explicitamente (deploy.sh <instance>), conectá-lo atrás de um webhook, ou deixar o Manager comandá-lo. Cada tentativa é segura: o site em execução continua servindo até que o novo passe completamente na verificação.

Depois da instalação

  • Complete o setup da primeira execução (escolha o nome de usuário/senha do primeiro admin).
  • Verifique se o timer automático de backup rodou.
  • As atualizações chegam via o script de deploy; instalações novas sempre começam da versão que o instalador clona para você.
Leia este site em