Ehundu: un generador de sitios estáticos en PHP pensado para no depender de nadie

Qué es Ehundu, el generador de sitios estáticos en PHP nacido en Bilbao, para qué sirve, qué lo distingue de Eleventy, Hugo o Lume y para quién tiene sentido.

Ilustración de Ehundu, el generador de sitios estáticos en PHP, con su logotipo de aguja y su mascota Nidel

Ehundu es un generador de sitios estáticos escrito en PHP, libre, con su formato en castellano y diseñado para algo que casi ningún otro generador se plantea: compilar una web desde dentro de un alojamiento PHP corriente, sin terminal y sin una cadena de servicios en la nube de por medio. Lo he desarrollado en Bilbao, con él se publican ya webs de clientes y proyectos personales (incluido este blog), y su casa está en ehundu.com (abre en ventana nueva).

Este artículo no habla de una versión concreta ni de la última novedad. Para eso están las notas de cada lanzamiento. Aquí quiero contar lo que no cambia de una versión a otra: qué es Ehundu, qué problema resuelve, en qué se diferencia de otras herramientas y para quién puede tener sentido. Si has llegado hasta aquí preguntándote si merece la pena probarlo, este es el texto que te debería ayudar a decidirlo.

Qué es un generador de sitios estáticos y qué hace Ehundu

Un generador de sitios estáticos toma una carpeta de ficheros (textos, datos, plantillas, imágenes) y la convierte en un conjunto de páginas HTML listas para publicarse. No hay base de datos que consultar en cada visita ni código que se ejecute cuando alguien entra en la web. El resultado es rápido, barato de alojar, muy difícil de atacar y prácticamente libre de mantenimiento. Nada de actualizaciones semanales ni de sustos un domingo por la tarde porque alguien ha encontrado un agujero en un plugin.

Ehundu trabaja con lo que ya es estándar en este mundo: el contenido se escribe en Markdown, los datos van en YAML y las plantillas se escriben en Twig. Cada página es un fichero de texto con una pequeña cabecera, y los ajustes comunes de una carpeta se definen una sola vez. A partir de ahí, Ehundu genera listados, páginas por etiqueta, paginación, mapa del sitio, canales RSS, versiones en varios idiomas enlazadas entre sí e incluso páginas en PDF cuando hace falta, como la carta de un restaurante. Todo eso sin escribir una línea de HTML en el contenido gracias a unos códigos cortos para insertar imágenes, vídeos o documentos.

Hasta aquí, nada que no hagan otras herramientas estupendas. Lo que tiene de particular Ehundu está en dónde puede ejecutarse, en qué idioma habla y en el principio que guía cada decisión.

Compilar una web desde la propia web

Los generadores de sitios estáticos que conozco están pensados para la línea de comandos. Los lanzas en tu ordenador o en un servicio de integración continua, y el resultado se sube después a algún sitio. Ehundu también funciona así, con sus órdenes para compilar, previsualizar y desplegar, pero la consola es solo una capa fina sobre una librería PHP. Eso significa que cualquier aplicación PHP puede pedirle a Ehundu que rehaga el sitio y lo publique durante una petición web normal.

Dicho sin jerga: un panel de edición alojado en el mismo servidor que la web puede guardar un cambio, recompilar solo lo que ha cambiado y publicarlo, sin que nadie abra una terminal. Ehundu está preparado para los límites de tiempo y memoria de los alojamientos compartidos, es capaz de repartir el trabajo de un sitio grande entre varias peticiones y recuerda lo ya compilado entre un proceso y otro.

Este era para mí el punto clave. Mantengo bastantes webs de clientes, y mi sitio estático ideal siempre tropezaba en el mismo sitio: el día en que el cliente quiere cambiar un horario sin llamarme. Con las herramientas habituales eso se resuelve encadenando piezas, un editor que escribe en un repositorio en la nube, un servicio que detecta el cambio y compila, otro que aloja el resultado. Funciona, pero son tres servicios ajenos entre el cliente y su propia web. Ehundu permite tener un sitio estático que el propio cliente edita sin renunciar a la sencillez de lo estático.

Por qué PHP

Es la pregunta que más me hacen, y la respuesta es poco romántica y muy práctica: PHP está en todas partes. Cualquier alojamiento compartido, incluso el más modesto que pueda contratar una pequeña empresa, ejecuta PHP. Ehundu no pide base de datos, ni programas externos, ni extensiones raras. Se instala con Composer como cualquier otra librería del ecosistema o se usa como un único fichero ejecutable.

JavaScript, Go o Rust tienen generadores excelentes, y muchos son más rápidos o tienen ecosistemas más grandes. Pero necesitan un entorno que la mayoría de los alojamientos baratos no ofrecen, y por eso acaban dependiendo de compilar en otro sitio. Elegir PHP es elegir que la web se pueda construir en el mismo servidor donde se publica.

No depender de servicios ajenos

El principio que gobierna todo el proyecto es sencillo: dependencias de software libre, todas las que hagan falta, porque se pueden conservar y mantener; dependencias de servicio, las menos posibles. He visto a demasiados proveedores cambiar precios y condiciones de un día para otro, y cada vez toca decidir si tragas o si te mudas con todo a cuestas.

Por eso Ehundu publica en una carpeta local, por FTP, por SFTP o en cualquier almacenamiento compatible con S3, y no habla la API particular de ningún proveedor. Por eso también todo lo que define un sitio vive en su carpeta: copiada a otra máquina, compila exactamente igual. Si un día desaparece el alojamiento o cambian las reglas, la web sigue ahí, en ficheros de texto que cualquiera puede abrir, leer y volver a publicar.

Es una forma de entender la soberanía digital a escala pequeña, la de una tienda de barrio, una casa rural o una asociación: que tu web sea tuya de verdad y que puedas llevártela cuando quieras.

Un generador que habla castellano

Casi todas las herramientas de desarrollo web dan por hecho que quien las usa piensa en inglés. Ehundu no. En un proyecto las carpetas se llaman contenido, plantillas y publico, y los campos de cada página son titulo, fecha o etiquetas. Los mensajes de error están en castellano y señalan el fichero y la línea donde está el problema, que es de esas cosas que nadie agradece cuando todo va bien y todo el mundo agradece cuando algo falla un viernes a última hora.

No es un capricho. La comunidad hispanohablante que hace webs es enorme, y cuando una web la va a tocar alguien que no es programador, o la mantiene una agencia pequeña, que la estructura se lea en su idioma ahorra muchas explicaciones. Ehundu también cuida detalles que las herramientas pensadas en inglés suelen pasar por alto, como ordenar alfabéticamente sin tropezar con los signos de apertura o mostrar las fechas en el idioma de cada página.

Eso no lo encierra. Quien venga de Eleventy o de Lume puede seguir usando los nombres ingleses de siempre en sus cabeceras, así que migrar no obliga a reescribirlo todo, y la web del proyecto y su documentación también están en inglés.

Ehundu frente a otros generadores

No creo que Ehundu sea mejor que Eleventy, Hugo, Jekyll, Astro o Lume. He trabajado durante años con varios de ellos y los sigo recomendando. La pregunta útil no es cuál es mejor, sino cuál encaja con lo que necesitas.

Hugo es imbatible en velocidad bruta y Astro en sitios con mucha interactividad y componentes de JavaScript. Eleventy y Lume son flexibilísimos y tienen comunidades activas con montones de extensiones. Si necesitas un ecosistema maduro, cientos de complementos y respuestas en foros para cualquier duda, cualquiera de ellos será una elección más segura.

Ehundu tiene sentido en otro terreno. Cuando la web va a vivir en un alojamiento PHP normal, cuando quieres compilar en el mismo servidor sin depender de plataformas de integración continua, cuando el cliente necesita editar su web sin pasar por ti, cuando quien la mantiene prefiere trabajar en castellano o cuando simplemente quieres que tu sitio no dependa de ningún proveedor concreto. Para webs de negocios pequeños, asociaciones y proyectos personales, que es el terreno para el que nació, esas razones pesan mucho.

Hay además una diferencia de enfoque. Ehundu prefiere hacer pocas cosas y hacerlas bien, sin ejecutar código propio de cada sitio ni convertirse en una plataforma de complementos. El formato es pequeño, está documentado al detalle y no cambia por sorpresa.

Un compromiso con la estabilidad

Una herramienta en la que confías una web de cliente tiene que ser predecible. Ehundu sigue un versionado semántico estricto: dentro de una misma versión mayor, los cambios solo pueden sumar. Lo que funciona hoy seguirá funcionando mañana, y si algún día hay que retirar algo, se anunciará con antelación.

Detrás de eso hay un método de trabajo que me tomo en serio. Antes de cada pieza de código hay una decisión escrita, numerada y con su motivo, recogida en un registro público que cualquiera puede consultar para entender por qué algo funciona de una manera y no de otra. La documentación del formato manda sobre el código cuando no coinciden, y una batería amplia de pruebas automáticas vigila que nada se rompa por el camino. Para escribir el código me apoyo en herramientas de inteligencia artificial, y lo digo abiertamente; lo que no delego es el criterio, que está en esas decisiones escritas.

El nombre, la aguja y Nidel

Ehundu significa «tejer» en euskera y se pronuncia, más o menos, «e-ún-du». Web, en inglés, es literalmente un tejido, una red, y un generador de sitios no hace otra cosa que entrelazar contenidos y plantillas hasta convertirlos en páginas. Me gustaba que el nombre contara lo que hace la herramienta y, de paso, de dónde viene.

El logotipo es una aguja, y esa aguja tiene nombre propio: Nidel, como mi perro, que fue encontrado en un pajar. Nidel suena a needle, aguja en inglés, así que el chiste de la aguja en el pajar venía hecho. No todos los proyectos de software pueden presumir de una mascota con historia real.

Cómo empezar con Ehundu

Ehundu es software libre con licencia MIT: se puede usar, estudiar, modificar y redistribuir sin pedir permiso a nadie, que es como creo que debería funcionar una herramienta pensada para no depender de nadie. El código está en GitHub y se instala desde Packagist con Composer:

composer require ehundu/ehundu

Para no empezar con la página en blanco hay varios andamios, proyectos de partida con sus carpetas, plantillas y estilos, para un blog, una web de documentación, un portfolio, un negocio local, un sitio multilingüe o un evento, cada uno con su demostración en vivo. En ehundu.com (abre en ventana nueva) están la guía de primeros pasos, la documentación completa del formato y un escaparate con webs reales hechas con Ehundu, de clínicas y restaurantes a casas rurales, asociaciones y blogs personales.

Si haces webs para pequeñas empresas, si te cansa depender de plataformas que cambian las reglas cuando les conviene o si te apetece probar un generador que habla tu idioma, date una vuelta por la web del proyecto. Y si lo pruebas y algo no se entiende, no funciona o directamente te parece una mala idea, me encantará saberlo. Las telas salen mejor cuando alguien más tira del hilo.

···
Otras entradas
  1. ideas·desarrollo-web·soberanía digital·opinión

    El código abierto no ha muerto, pero ha perdido la inocencia

    Buena parte de internet funciona gracias al trabajo generoso de gente que regala su código. Pero cuando los gigantes de la nube hacen negocio con él sin aportar nada, algunos proyectos han decidido cerrar la puerta. Un debate sobre generosidad, abuso y soberanía que nos afecta a todos, aunque nunca hayamos escrito una línea de código.

    Leer El código abierto no ha muerto, pero ha perdido la inocencia →