Feito com Chinaski

Requisitos

O que uma máquina precisa antes de rodar o Chinaski: sistema operacional, runtime de linguagem, banco de dados e dimensionamento. Em resumo: uma máquina Debian/Ubuntu e Perl 5.26+.

Sistema operacional

  • Família Debian/Ubuntu. Tudo o que o Chinaski precisa, incluindo cada dependência Perl, está disponível nos pacotes do Debian stable, então um servidor padrão instala sem desvios do lado do compilador. O instalador de um comando único cuida da instalação de pacotes por si; não há nada para compilar à mão.
  • Placas ARM (como Raspberry Pi) funcionam, com uma pegadinha: as bibliotecas de imagem listadas abaixo precisam de instalação explícita, ou o módulo de processamento de imagem não compila.

Perl e requisitos de nível de linguagem

  • Perl 5.26 ou posterior: os instaladores verificam isso explicitamente e se recusam com uma mensagem de erro nomeando a versão encontrada, se for mais antiga.
  • O conjunto de dependências (todos empacotados no Debian, com mínimos exatos no cpanfile do projeto): Mojolicious, DBI + DBD::SQLite, Template (Template Toolkit), Crypt::Passphrase (+Bcrypt, +PBKDF2), CryptX, Imager, DateTime + DateTime::TimeZone, Archive::Tar, File::Copy::Recursive.
  • Dois módulos opcionais alimentam apenas o importador de Markdown (CommonMark, que se vincula à biblioteca cmark do sistema, e YAML::PP). Sem eles o site boota e tudo mais funciona; apenas aquela rota de importador mostra um erro claro no admin.

Pacotes de sistema (instalações manuais/offline)

Se você está instalando em uma máquina offline ou manualmente a partir do fonte, estes pacotes apt são necessários primeiro: perl, make, gcc, sqlite3, mais as dev libraries de imagem (libjpeg, libpng, libgif); e, para o instalador on-line, também openssl e cpanminus:

  • make/gcc: usados apenas ao compilar os módulos XS (nativos) no tempo de instalação; o instalador oficial usa pacotes Debian pré-compilados em vez disso, então nenhuma compilação é necessária ali.
  • sqlite3: o CLI do banco de dados, usado para setup e manutenção.
  • Bibliotecas de imagem: exigidas pela compilação nativa do módulo Imager.

O banco de dados

SQLite: embutido, sem processo de servidor, sem credenciais para gerenciar. Roda em modo WAL com um cache de 64 MiB e um busy timeout de 5 segundos, dimensionado para a carga esperada: uma sessão de admin ativa, builds em lote periódicos. Backup é uma cópia de arquivo.

Dimensionamento de recursos

As units systemd distribuídas documentam o envelope pretendido e limitam processos desgovernados:

Componente Limite de memória CPU
Instância do CMS 1 GiB (com limite soft de 768 MiB) valor de 2 cores
Servidor MCP 512 MiB (limite soft de 384 MiB) valor de 1 core
  • Workers: o daemon roda 2 workers por padrão, dimensionados "seguros em uma máquina de 1 GB". Se vários editores estarão conectados ao mesmo tempo, a config aceita 4, o que é confortável em um host de 2+ GB.
  • Builds são processos separados com seu próprio limite de tempo de relógio (30 minutos, rígido) e um orçamento de escrita por build, então um único build desgovernado não pode sobrecarregar a máquina indefinidamente.
  • Disco: dois consumidores práticos dominam: o banco de dados SQLite (o que quer que seu conteúdo pese) e a árvore de saída estática (espelhada em rebuilds). Snapshots de backup adicionam aproximadamente o tamanho comprimido do banco por dia sob a retenção padrão de 14 dias.

Portas e postura de rede

  • Daemons do backend se ligam a portas altas (série 3000 pelo número da instância por padrão; instalações quick diretas usam 8080) e o reverse proxy detém 80/443. Veja a página de troubleshooting de portas para as regras exatas de alocação.
  • Após a instalação, chamadas de saída ficam desligadas por completo no modo air-gap; conectividade à internet nunca é exigida para a aplicação funcionar.

Caminhos de instalação

  • Servidor Debian/Ubuntu: o instalador on-line de uma linha (instala pacotes, cria o usuário do sistema, clona, inicializa o banco de dados, escreve o arquivo de env, inicia o systemd).
  • Offline: a instalação de bundle offline documentada, para um lugar que não precisa de Internet: instalação apenas por mirror a partir de tarballs empacotados, com um arquivo de checksum SHA-256 para verificar a integridade.
  • Execução local rápida: extrair o tar; install.sh --no-service; rodar via hypnotoad empacotado na porta 8080, sem systemd, sem reverse proxy, sem chamadas de saída necessárias.
Leia este site em