Feito com Chinaski

Publicando de um notebook

O Chinaski pode rodar em um notebook Linux que sobrou ou que foi doado: o admin, o banco de dados e o build vivem no notebook, enquanto o site público em si é servido do armazenamento de objetos Cloudflare R2. Os editores abrem o admin no navegador do notebook para escrever e publicar; os visitantes nunca tocam no notebook, de modo que o site público continua no ar mesmo com o notebook fechado, desligado ou offline.

É uma boa opção para quem quer um site de verdade sem conta de hospedagem: um grupo comunitário, uma paróquia, um estudante, qualquer pessoa sem um cartão para colocar em uma conta de hospedagem. Muitos notebooks viram lixo eletrônico só por causa do licenciamento do Windows, não porque o hardware seja ruim: qualquer Linux da família Debian ou Ubuntu (Ubuntu, Linux Mint, Debian e parecidos) funciona.

Esta é uma configuração feita uma única vez, melhor deixada para quem se sente confortável com alguns comandos de terminal. Depois da configuração, a publicação do dia a dia não precisa de nada disso: só o admin em um navegador.

Se um telefone for o único dispositivo disponível, veja Publicando de um telefone em vez disso.

1. Instale o Chinaski

Abra um terminal no notebook e execute:

curl -fsSL https://www.chinaski.net/dist/laptop-quickstart.sh | bash

Execute isso com o seu usuário normal, não com sudo. O script pede sua senha uma vez, só para instalar pacotes do sistema. Todo o resto é instalado na sua pasta de usuário (~/chinaski) e roda com você.

Este único comando instala os pacotes de que o Chinaski precisa, baixa e verifica por checksum o bundle offline, compila as dependências Perl do Chinaski (alguns minutos), configura o banco de dados e inicia o Chinaski como um serviço em segundo plano.

Quando terminar, abra http://127.0.0.1:8080/admin no navegador do notebook. O admin só escuta no próprio notebook, então nunca é alcançável de fora.

Passos manuais (o mesmo que o comando acima; útil se algo falhar)
sudo apt-get update
sudo apt-get install -y perl make gcc sqlite3 openssl libjpeg-dev libpng-dev libgif-dev libwebp-dev rclone rsync curl tar gzip
cd "$HOME"
curl -fSLO https://www.chinaski.net/dist/chinaski-latest.tar.gz
curl -fSLO https://www.chinaski.net/dist/chinaski-latest.tar.gz.sha256
sha256sum -c chinaski-latest.tar.gz.sha256
mkdir extracted
tar -xzf chinaski-latest.tar.gz -C extracted
cd extracted/chinaski-*
bash install.sh --laptop --prefix "$HOME/chinaski"
systemctl --user daemon-reload
systemctl --user enable --now chinaski
loginctl enable-linger "$(whoami)"

2. Mantenha-o executando

A instalação configura o Chinaski como um serviço para a sua conta de usuário. Ele inicia automaticamente quando você entra, e se reinicia se algum dia parar.

A instalação também tenta deixar o Chinaski iniciar quando o notebook liga, antes de alguém entrar. Em algumas versões de Linux isso precisa de uma permissão uma única vez; se a instalação imprimir uma mensagem sobre isso, execute:

sudo loginctl enable-linger "$(whoami)"

Para verificar o Chinaski ou reiniciá-lo:

systemctl --user status chinaski
systemctl --user restart chinaski
journalctl --user -u chinaski -f

3. Aponte para o Cloudflare R2

Aqui é onde o site público de fato vive.

No Cloudflare:

  1. Crie um bucket R2 com armazenamento Standard. Use este bucket só para este site: cada publicação faz o bucket corresponder exatamente ao site e apaga qualquer outra coisa nele.
  2. Em R2 → Manage API tokens, crie um token de API com permissão Object Read & Write, limitado a esse bucket. Copie a Access Key ID e a Secret Access Key (o segredo é mostrado apenas uma vez). Anote seu Account ID na página de visão geral do R2.
  3. Nos Settings do bucket, conecte um domínio próprio (por exemplo www.example.com). O Cloudflare cria o registro DNS e torna o bucket público nesse endereço; não há mais nada para ligar. O endereço r2.dev do próprio R2 é só para testes.
  4. O R2 serve um arquivo apenas pelo nome exato dele, enquanto o Chinaski salva as páginas como .../index.html. No seu domínio (em Rules, não no R2), adicione uma URL Rewrite Rule:
    • Filtro (expressão personalizada): (http.host eq "www.example.com" and ends_with(http.request.uri.path, "/")) (use o seu próprio endereço)
    • Path: reescreva para Dynamic concat(http.request.uri.path, "index.html")

No Chinaski: defina Settings → General → Site URL como o seu endereço público (por exemplo https://www.example.com), depois em Settings → Deploy:

Field Value
Deploy automatically after a successful build On
Enable S3 deploy On
Bucket O nome do seu bucket R2
Endpoint https://<ACCOUNT_ID>.r2.cloudflarestorage.com (nada depois de .com)
Region auto
Access Key / Secret Key As credenciais da API do R2

Não coloque o nome do bucket no final do Endpoint. O Cloudflare às vezes mostra o endereço como https://<ACCOUNT_ID>.r2.cloudflarestorage.com/<bucket>. Copiado assim, o site é enviado para uma pasta dentro do bucket e todas as páginas mostram a mensagem do R2 "Error 404: Is this your bucket?", mesmo que o Test S3 Connection passe.

Salve e depois use Test S3 Connection para confirmar que as credenciais funcionam. Publique algo e depois abra o seu endereço e uma página dentro do site para confirmar que tudo carrega.

Publicando uma mudança

Edite e salve uma página ou um post normalmente, e o build e o upload executam sozinhos. Acompanhe o banner de status do admin para ver "Publishing your update…" até chegar a "Your update is live.".

Se um build tem sucesso mas o upload falha (o Wi-Fi caiu, por exemplo), o site publicado pela última vez no R2 permanece exatamente como estava. Os visitantes nunca veem uma publicação pela metade. Publique de novo quando voltar a estar online.

Atualizando o Chinaski

Para instalar a versão mais recente do Chinaski, execute isto em um terminal com o mesmo usuário (não com sudo):

curl -fsSL https://www.chinaski.net/dist/chinaski-update.sh | bash

Ele verifica se há uma versão nova disponível, instala e reinicia o Chinaski. Seu banco de dados, configurações, uploads e mídias são mantidos. Instalações feitas antes de rsync entrar na lista de pacotes precisam dele uma vez: sudo apt-get install rsync.

Bom saber

  • Formulários e downloads de documentos: o site público é servido pelo R2, e o notebook não é alcançável pela internet, então os formulários de contato e os downloads de documentos do site público não funcionam nessa configuração.
  • Custos: o nível gratuito do Cloudflare R2 cobre muitas vezes um site pequeno típico, e o tráfego para os visitantes não é cobrado. O nome do seu domínio você continua pagando.
Leia este site em