Feito com Chinaski

Quickstart

Um site novinho em qualquer servidor Debian/Ubuntu, sem pré-requisitos, em um comando:

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

Substitua 1 por um nome de instância: qualquer coisa alfanumérica (2, prod, staging, o nome de um cliente). Cada instância é seu próprio site isolado, com seu próprio banco de dados; rodar várias ao mesmo tempo é normal. O script não precisa de nenhuma preparação prévia e é concluído em menos de cinco minutos.

O que o script faz

Ele cuida de tudo sozinho:

  • instala os pacotes de sistema necessários e as dependências Perl (a partir de pacotes Debian pré-compilados, sem compilação em C)
  • cria um usuário de sistema chinaski dedicado
  • clona o código, inicializa o banco de dados, escreve o arquivo env
  • inicia o serviço systemd

Depois que ele termina, aponte um navegador para o admin e continue via /setup: troque a senha de admin (pelo menos 12 caracteres, maiúsculas e minúsculas mais um dígito), defina a URL do site e escolha seus idiomas. Esse é o seu primeiro site pronto para editar; o build acontece quando você clicar nele.

Checklist do primeiro dia

Verifique isto antes de enviar tráfego real:

  • O admin está vinculado ao loopback. Uma verificação de socket em escuta deve mostrar 127.0.0.1:300<N>, nunca 0.0.0.0: os visitantes não devem alcançar o CMS diretamente de fora.
  • Certificado TLS emitido. O Caddyfile de exemplo instalado por instância lê seu DNS e renova os certificados Let's Encrypt; verifique curl -I https://<host> assim que o DNS e as portas 80/443 resolverem e responderem.
  • Backups estão agendados. Um snapshot diário automático do banco de dados mais mídia roda às 03:17. Confirme que o timer do systemd está ativo e que o diretório de backup está com modo 700 e é de propriedade do usuário do serviço. Se você editar o agendamento do relógio manualmente, confirme que systemctl list-timers mostra uma próxima execução: um erro de digitação faz o timer pular silenciosamente.
  • Avise seu monitor sobre /health. O endpoint de saúde do CMS retorna um relatório JSON agregado ({"status":"ok|warning|critical", timestamp, total_checks, checks[]}) com HTTP 503 somente quando uma verificação crítica falha. (O Chinaski Manager, separado, tem seu próprio /health, que retorna status/uptime/db/workers/pid na porta do plano de controle.)
  • Fuso horário: defina nas configurações de /admin. Os agendamentos usam o fuso horário do site; nomes de fuso horário com erro de digitação caem para UTC no momento de salvar. Verifique e, então, mantenha todas as suas entradas agendadas corretas.

Duas variáveis de ambiente importam em /etc/chinaski<N>/env (modo 0600): CHINASKI_SECRET, a chave aleatória de assinatura de sessão de 32+ bytes, e LISTEN_URL, que deve apontar para o loopback em produção. Os caminhos de banco de dados e saída derivam do nome da instância pela unit; normalmente você não precisa sobrescrevê-los.

Outros caminhos para rodar o Chinaski

  • Primeira execução totalmente offline: um script de instalação pode ser usado em uma máquina sem internet preparando um bundle antes: rode bash install/make-bundle.sh em uma máquina conectada, o que produz um tarball contendo o código-fonte da aplicação, todos os tarballs de módulos Perl, o cpanm empacotado e o script de instalação mais um arquivo de checksum. Depois de copiar para a máquina de destino e descompactar, rode sudo bash install.sh: tudo é instalado sem acesso à internet. Em placas ARM (como Raspberry Pi), instale explicitamente as bibliotecas de imagem (libjpeg, libpng, libgif), caso contrário o ferramental de imagens falha ao compilar.
  • Execução sem systemd: descompacte e rode sudo bash install.sh --no-service (opcionalmente --prefix /srv/chinaski), depois inicie via o hypnotoad empacotado; o admin responde em http://<host-ip>:8080/admin. O arquivo env já contém o segredo e o modo air-gap.
  • HTTP puro, para sempre: onde nunca existirão DNS nem autoridade certificadora, o hypnotoad pode servir diretamente sobre HTTP, sem certificados para adquirir, renovar ou expirar.

O que acontece depois

A primeira visita ao admin redireciona para /setup; uma vez que a senha provisória é substituída, essa página desaparece (ela retorna 404). A partir daí, o ciclo cotidiano de editar → build → servir (veja Como Funciona) assume. E se você algum dia perder a senha de admin, perl bin/reset-admin.pl coloca você de volta exatamente nesse mesmo estado de setup.

Leia este site em