Hecho con Chinaski

Publicación desde una laptop

Chinaski puede funcionar en una laptop Linux de repuesto o donada: el admin, la base de datos y el build viven en la laptop, mientras que el site público se sirve desde el almacenamiento de objetos Cloudflare R2. Los editores abren el admin en el navegador de la laptop para escribir y publicar; los visitantes nunca tocan la laptop, así que el site público sigue en línea aunque la laptop esté cerrada, apagada o sin conexión.

Es una buena opción para cualquiera que quiera un sitio de verdad sin factura de hosting: un grupo comunitario, una parroquia, un estudiante, cualquiera que no tenga una tarjeta para poner en una cuenta de hosting. Muchas laptops terminan como residuos electrónicos solo por el licenciamiento de Windows, no porque el hardware sea malo: cualquier Linux de la familia Debian o Ubuntu (Ubuntu, Linux Mint, Debian y similares) funciona.

Esta es una configuración de una sola vez, idealmente hecha por quien se sienta cómodo con algunos comandos de terminal. Después de la configuración, la publicación del día a día no necesita nada de eso: solo el admin en un navegador.

Si un teléfono es el único dispositivo disponible, consulta Publicación desde un teléfono en su lugar.

1. Instalar Chinaski

Abre una terminal en la laptop y ejecuta:

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

Ejecuta esto con tu usuario normal, no con sudo. El script pide tu contraseña una vez, solo para instalar paquetes del sistema. Todo lo demás se instala en tu carpeta de usuario (~/chinaski) y corre con tu usuario.

Este único comando instala los paquetes que Chinaski necesita, descarga y verifica por checksum el bundle offline, compila las dependencias Perl de Chinaski (unos minutos), configura la base de datos y arranca Chinaski como servicio en segundo plano.

Cuando termine, abre http://127.0.0.1:8080/admin en el navegador de la laptop. El admin solo escucha en la propia laptop, así que nunca es alcanzable desde afuera.

Pasos manuales (lo mismo que el comando de arriba; útil si algo falla)
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. Mantenerlo corriendo

La instalación configura Chinaski como un servicio para tu cuenta de usuario. Arranca automáticamente cuando inicias sesión y se reinicia solo si alguna vez se detiene.

La instalación también intenta que Chinaski arranque cuando la laptop se enciende, antes de que alguien inicie sesión. En algunas versiones de Linux esto necesita un permiso una sola vez; si la instalación muestra un mensaje al respecto, ejecuta:

sudo loginctl enable-linger "$(whoami)"

Para revisar Chinaski o reiniciarlo:

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

3. Apuntarlo a Cloudflare R2

Aquí es donde vive realmente el site público.

En Cloudflare:

  1. Crea un bucket de R2 con almacenamiento Standard. Usa este bucket solo para este site: cada publicación hace que el bucket coincida exactamente con el site y borra cualquier otra cosa que haya en él.
  2. Bajo R2 → Manage API tokens, crea un token de API con permiso Object Read & Write, limitado a ese bucket. Copia la Access Key ID y la Secret Access Key (el secreto se muestra una sola vez). Anota tu Account ID de la página de resumen de R2.
  3. En los Settings del bucket, conecta un dominio propio (por ejemplo www.example.com). Cloudflare crea el registro DNS y hace el bucket público en esa dirección; no hay nada más que activar. La dirección r2.dev de R2 es solo para pruebas.
  4. R2 sirve un archivo solo por su nombre exacto, mientras que Chinaski guarda las páginas como .../index.html. En tu dominio (bajo Rules, no en R2), agrega una URL Rewrite Rule:
    • Filtro (expresión personalizada): (http.host eq "www.example.com" and ends_with(http.request.uri.path, "/")) (usa tu propia dirección)
    • Path: reescribe a Dynamic concat(http.request.uri.path, "index.html")

En Chinaski: pon Settings → General → Site URL en tu dirección pública (por ejemplo https://www.example.com), y luego en Settings → Deploy:

Field Value
Deploy automatically after a successful build On
Enable S3 deploy On
Bucket El nombre de tu bucket de R2
Endpoint https://<ACCOUNT_ID>.r2.cloudflarestorage.com (nada después de .com)
Region auto
Access Key / Secret Key Las credenciales de la API de R2

No pongas el nombre del bucket al final del Endpoint. Cloudflare a veces muestra la dirección como https://<ACCOUNT_ID>.r2.cloudflarestorage.com/<bucket>. Copiada así, el site se sube a una carpeta dentro del bucket y todas las páginas muestran el mensaje de R2 "Error 404: Is this your bucket?", aunque Test S3 Connection pase.

Guarda y luego usa Test S3 Connection para confirmar que las credenciales funcionan. Publica algo y luego abre tu dirección y una página dentro del site para confirmar que todo carga.

Publicar un cambio

Edita y guarda una página o un post como siempre, y el build y la subida corren solos. Observa el banner de estado del admin para ver "Publishing your update…" hasta llegar a "Your update is live.".

Si un build tiene éxito pero la subida falla (que se caiga el Wi-Fi, por ejemplo), el site publicado la última vez en R2 queda exactamente como estaba. Los visitantes nunca ven una publicación a medias. Publica de nuevo cuando vuelvas a estar en línea.

Actualizar Chinaski

Para instalar la última versión de Chinaski, ejecuta esto en una terminal con el mismo usuario (no con sudo):

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

Revisa si hay una versión nueva disponible, la instala y reinicia Chinaski. Tu base de datos, configuración, subidas y medios se conservan. Las instalaciones hechas antes de que rsync estuviera en la lista de paquetes lo necesitan una vez: sudo apt-get install rsync.

Conviene saber

  • Formularios y descargas de documentos: el site público lo sirve R2 y la laptop no es alcanzable desde internet, así que los formularios de contacto y las descargas de documentos del site público no funcionan en esta configuración.
  • Costos: el nivel gratuito de Cloudflare R2 cubre muchas veces un site pequeño típico, y el tráfico a los visitantes no se cobra. El nombre de tu dominio sí lo pagas.
Lee este sitio en