Feito com Chinaski

Variáveis de Ambiente

O Chinaski é configurado através de um punhado de variáveis de ambiente: a localização do banco de dados, o diretório de saída estático, o segredo de segurança, e algumas sobrescritas opcionais. O instalador as escreve para você; esta página é a referência completa para quando você precisar mudá-las à mão.

Onde defini-las

  • Instalações de instância única: /etc/chinaski<N>/env (o arquivo que a unit systemd chinaski@<N> carrega). Mantenha o modo do arquivo 0600.
  • O servidor MCP: /etc/chinaski<N>/mcp-env, lido por chinaski-mcp@<N>.
  • Script de backup e script de deploy: no ambiente no momento da invocação.
  • O arquivo criado vem com CHINASKI_SECRET definida e CHINASKI_AIRGAP=1 ativa.

Obrigatórias

Variável O que faz Padrão
CHINASKI_SECRET Chave de assinatura de sessão, e a chave usada para criptografar segredos armazenados (senha SMTP) no banco de dados. O CMS se recusa a iniciar sem ela. O instalador gera uma com openssl rand -hex 32. nenhuma
CHINASKI_DB Caminho do arquivo do banco de dados SQLite. <app root>/chinaski.db
CHINASKI_OUTPUT Diretório no qual o builder estático escreve. <app root>/output
LISTEN_URL Endereço ao qual o daemon do CMS se liga (usado pela unit systemd). Deve ser loopback (por exemplo http://127.0.0.1:3001) em produção. Em combinação com CHINASKI_SECRET, vive em /etc/chinaski<N>/env. nenhuma

Trocar CHINASKI_SECRET invalida as sessões de admin (todos são desconectados) e torna valores criptografados previamente armazenados (como a senha SMTP) impossíveis de descriptografar. Salve novamente essas configurações após rotacionar a chave.

Ligue o LISTEN_URL ao loopback, não a uma interface pública. O CMS só confia no X-Forwarded-For de pares loopback; um bind público deixaria qualquer cliente falsificar headers que alimentam rate limit e bloqueios de login baseados em IP.

Escuta

  • CHINASKI_LISTEN: Endereço de escuta ao executar sob o hypnotoad. Padrão http://127.0.0.1:8080.
  • CHINASKI_WORKERS: Contagem de workers do hypnotoad. Padrão 2.
  • MOJO_MODE: Modo padrão do Mojolicious. Units de produção definem production.

Os valores atuais de CHINASKI_DB, CHINASKI_OUTPUT, CHINASKI_URL_BASE, CHINASKI_LISTEN e se CHINASKI_SECRET está definida são visíveis na página de configurações do admin.

Modo air-gap (CHINASKI_AIRGAP=1)

Desabilita toda chamada de saída e integração externa em uma única chave. Com o modo air-gap ligado:

  • Webhooks de build, form, post e publish nunca são entregues.
  • O deployment rsync e S3 não executa, e os retries de webhook param.
  • O Cloudflare Turnstile é pulado inteiramente: a verificação autopassa e o widget é removido das páginas de login e formulários, independente das chaves armazenadas nas configurações.
  • As notificações por e-mail de admin são puladas.
  • A verificação de manifest de versão não é realizada.
  • O builder estático remove analytics externos (GA4/GTM) e remove código de snippet que referencia URLs externas, para que nenhuma página pública puxe nada de um CDN.

O instalador habilita isso por padrão.

Build estático

  • CHINASKI_INCREMENTAL=1: Requisita um build incremental. O builder ainda pode escolher um build full se decidir que um é necessário.
  • CHINASKI_FORCE_FULL=1: Força um rebuild completo (usada por bin/force-full-build.pl e pelo controle de rebuild do admin).
  • CHINASKI_FORCE_PROMOTE=1: Promove o build mesmo quando o guard de qualidade o reteria porque contagens de páginas ou outras métricas caíram.
  • CHINASKI_JOBS: Paralelismo de build. Deve ser um número puro; sobrescreve a configuração build_jobs; o padrão é a contagem de CPUs; limitada a 1 a 16.
  • CHINASKI_BLOCK_TEMPLATES: Diretório de templates de bloco. Padrão builder/block_templates no repo.
  • CHINASKI_MANIFEST_OPTIONAL=1: Uma falha em produzir o manifest de build assinado normalmente aborta o build; definir isto a torna um aviso em vez disso. Deixe desligada em produção: um build “verde” sem um manifest assinado utilizável é pior que um build com falha.

Assinatura, chaves e atualizações

  • CHINASKI_PRIVATE: Diretório que guarda o manifest de build assinado (build-manifest.json e seu .sig). Padrão <repo root>/private.
  • CHINASKI_KEYS: Diretório que guarda o par de chaves de assinatura de manifest Ed25519. Padrão <repo root>/keys.
  • CHINASKI_URL_BASE: Sobrescreve a configuração de site chinaski_url_base para URLs construídas e o sitemap.
  • CHINASKI_CMS_URL: Sobrescreve a configuração cms_base_url.
  • CHINASKI_UPDATE_MANIFEST_URL: Se definida, o dashboard de admin verifica esta URL de manifest por releases mais novos (pulado no modo air-gap). Busca com timeouts curtos de 3/5 segundos.
  • CHINASKI_RELEASE_PUBKEY: Arquivo de chave pública de verificação de release alternativo; padrão keys/chinaski_release.pub no diretório do app.

Runtime e operações

  • CHINASKI_TRUSTED_PROXIES: Lista separada por vírgulas de IPs de proxy ou faixas CIDR IPv4 cujos headers X-Forwarded-For são confiáveis. O loopback é sempre confiável; entradas extras importam quando o seu reverse proxy é de outro modo visível ao app numa rede contêiner/bridge. Padrão: apenas loopback.
  • CHINASKI_SMTP_INSECURE_NOVERIFY=1: Desabilita a verificação de certificado TLS para o SMTP de saída. Apenas para testes ou configurações de correio deliberadamente inseguras.
  • CHINASKI_SKIP_PERF_INDEXES=1: Pula a aplicação dos índices de performance automáticos; para ferramentas de migração, não para uso normal.
  • CHINASKI_DOCS_DIR: Diretório de documentos. Padrão: documents junto ao arquivo de banco de dados.
  • CHINASKI_MEDIA_DIR: Diretório de mídia (usado pelo script de backup e pela purga automática de arquivos de mídia na lixeira). Padrão public/media na árvore do app (/var/www/chinaski<N>/public/media em instalações systemd).
  • CHINASKI_ADMIN_PASSWORD: Senha para execuções não interativas de bin/chinaski-setup.pl (alternativa ao --password).

Webhooks

  • WEBHOOK_MAX_CONCURRENT: Máximo de requisições de webhook de saída simultâneas. Padrão 8.

Servidor MCP

chinaski-mcp requer CHINASKI_API_URL (URL base do CMS) e CHINASKI_API_KEY; ele se recusa a iniciar sem elas. Ajustes opcionais:

  • CHINASKI_MCP_SESSION_TTL: Tempo de vida da sessão em segundos (padrão 86400).
  • CHINASKI_MCP_SESSION_DB: Caminho do banco de sessões (padrão chinaski-mcp/sessions.db).
  • CHINASKI_MCP_LOG_DIR / CHINASKI_MCP_LOG_FILE: Localização dos logs (padrões logs/ e logs/mcp-server.log).
  • CHINASKI_MCP_MAX_RETRIES: Padrão 3.
  • CHINASKI_MCP_CONTEXT_TTL: Tempo de vida do cache de contexto de site em segundos (padrão 300).

Backups e deploys

Usadas por deploy/backup.sh:

  • CHINASKI_BACKUP_DIR: Destino do backup; padrão /var/backups/chinaski<N>.
  • CHINASKI_BACKUP_RETENTION_DAYS: Por quanto tempo snapshots do banco são mantidos; padrão 14.

Usadas por deploy/deploy.sh:

  • CHINASKI_ALLOW_BUILD_FAIL=1: Normalmente um build com falha aborta o deploy para que o serviço nunca reinicie sobre saída obsoleta ou parcial; esta flag continua mesmo assim em uma emergência.

Avisos

  • Mantenha /etc/chinaski<N>/env no modo 0600. Os backups contêm o banco de dados completo (hashes de senha, segredos criptografados); o script de backup aperta o diretório de backup para 0700 a cada execução; certifique-se de que nada mais o alarga.
  • CHINASKI_AIRGAP=1 silencia o tráfego de saída inteiro; defina-a antes da primeira inicialização se o seu deployment nunca toca a internet.
  • Rotacionar a CHINASKI_SECRET é um evento deliberado, não manutenção rotineira: sessões morrem e as configurações criptografadas precisam ser salvas de novo.
Leia este site em