Instalación
simple-blog es un generador de blog estatico escrito en POSIX sh puro. Sin JavaScript, sin base de datos, sin runtime adicional. Solo sh, awk, sed y find. Pensado para correr en Alpine Linux o cualquier entorno minimalista estilo suckless.
Objetivo
Publicar un blog personal con la minima superficie de mantenimiento posible. Cada post es un fichero de texto con un frontmatter sencillo. La salida es HTML plano que cualquier servidor estatico puede servir sin configuracion especial.
Tamaños y rendimiento
Medido en Alpine 3.21 con BusyBox sh y gawk, sobre 5 posts:
blog.sh : 630 lineas POSIX sh
tiempo de build : ~1 segundo
procesos creados : ~450 execve
memoria pico build : <10 MB
ficheros generados : ~30 HTML + atom.xml + favicon
La instancia Alpine completa donde corre el blog pesa 38 MB en total:
newt (cliente WireGuard de Pangolin) : 21 MB
paquetes Alpine (busybox, libssl, ...) : 16 MB
el blog mismo : <1 MB
Dependencias
Obligatorias: sh, awk (gawk recomendado para que la transliteracion de acentos en slugs funcione bien), find, sed, sort.
Opcionales: httpd de BusyBox o python3 para servidor de desarrollo. git para versionar.
Cero dependencias de node, ruby, python en el build mismo.
Instalacion rapida en Alpine
apk add gawk git
git clone https://git.fedi.ovh/simple-blog
cd simple-blog
./blog.sh build
./blog.sh serve
El comando serve arranca un servidor de desarrollo en el puerto 8000. Detecta automaticamente httpd (BusyBox) o python3 segun lo que tengas instalado.
Configuracion
Toda la configuracion del sitio vive en config.txt. Las claves disponibles son title, description, author, language, base_url, header, footer, email, license y fediverse (URL de tu cuenta ActivityPub).
Integracion con el fediverso
El blog se integra con el fediverso a traves de Bridgy Fed sin necesidad de runtime adicional. Tres piezas:
Microformats h-entry y h-card embebidos en cada post para que los parsers IndieWeb y ActivityPub entiendan la estructura.
Enlace rel="me" reciproco entre el blog y la cuenta GoToSocial o Mastodon, para verificar que ambas identidades son la misma persona.
Delegacion de /.well-known/webfinger al endpoint de Bridgy Fed via redirect en el reverse proxy. Bridgy se encarga del handshake ActivityPub completo en nombre del sitio estatico.
Resultado: cualquiera puede seguir el blog desde Mastodon, GoToSocial o cualquier instancia ActivityPub como @tudominio@tudominio. Las respuestas vuelven al sitio como webmentions.
Referencias
Bridgy Fed: https://fed.brid.gy/docs
IndieWeb: https://indieweb.org
Microformats h-entry: https://microformats.org/wiki/h-entry
Alpine Linux: https://alpinelinux.org
BusyBox httpd: https://busybox.net