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.