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/chinaskiSó 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):
- 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.
- Cria um usuário de sistema
chinaskidedicado. - Clona o repositório e organiza a aplicação sob
/var/www/chinaski<instance>com permissões restritivas. - Cria e inicializa o banco de dados SQLite.
- Gera um segredo único, impresso uma vez no final da instalação; anote-o em algum lugar seguro.
- 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 recebem3000 + Nautomaticamente (instância1→ 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.shproduz 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.shSem 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:
- Puxe o novo código para aquela instância.
- Atualize as dependências (o script usa um diretório
vendor/empacotado quando presente, então servidores offline atualizam de forma limpa). - Verifique a sintaxe do novo código antes que qualquer coisa seja tocada.
- 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.)
- 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ê.