Fairer Pages sirve páginas de error personalizadas para tus servicios self-hosted
El proyecto intercepta los 4xx y 5xx del reverse proxy y los sustituye por una de sus 64 plantillas, con listas aleatorias y contenedor endurecido.

Un 404 de un servicio self-hosted no tiene por que ser la pagina gris del fabricante. Fairer Pages es un servicio que se coloca detras del reverse proxy, captura los errores que devuelven las aplicaciones y responde con una pagina propia. Renderiza cualquier codigo 4xx o 5xx, desde el 403 hasta el 500.
El autor lo publico en r/selfhosted contando que lo construyo por curiosidad, para ver si podia servirlas de forma mas dinamica, y que lleva un tiempo usandolo en su propio setup. No hay empresa detras ni hoja de ruta comercial: es un proyecto personal con el codigo fuente en GitHub.
Como se integra
La pieza tecnica es sencilla a proposito: HTML y JavaScript planos, sin framework ni build step. La configuracion consiste en decirle al reverse proxy que, cuando una aplicacion devuelva un error, en lugar de pasar esa respuesta al cliente la redirija a este servicio con el codigo correspondiente. A partir de ahi el servicio elige plantilla y responde.
Trae 64 temas y todos se pueden modificar. Ademas de elegir uno fijo, permite montar listas con varios temas: cuando llega un error, se sirve una pagina al azar de la lista. Es un detalle menor, pero convierte la pagina de error en algo que se puede rotar sin tocar configuracion.
El contenedor viene endurecido de fabrica: se ejecuta como usuario no root, con el sistema de archivos raiz en modo solo lectura y todas las capabilities eliminadas. Es la parte que mas importa a quien vaya a ponerlo delante de servicios expuestos, porque el componente queda en la ruta de todas las peticiones fallidas.
Las paginas escalan bien en movil y escritorio. El autor reconoce un solo fallo conocido: el tema "neeko-shapeshifter" escala de forma irregular durante la carga. Hay una pagina de muestra del 404 para ver el resultado sin desplegar nada.
Arte prestado y peticiones abiertas
El apartado artistico es la parte mas floja del conjunto, y el propio autor lo admite: no es disenador. Reconoce haber usado Claude Code para el desarrollo y que las imagenes son una mezcla de material generado con IA, una foto suya y recortes acumulados con los anos. Por eso pide explicitamente que quien dibuje mande temas mediante pull request.
Que el servicio sea simple no lo hace trivial de operar. Meterlo en medio de cada respuesta de error anade un salto de red y un punto de fallo mas: si el contenedor se cae, las paginas de error dejan de servirse y el proxy tendra que decidir que devuelve entonces. Conviene tener claro ese comportamiento antes de ponerlo en produccion, aunque el endurecimiento del contenedor reduce el riesgo de que el problema venga de ahi.
Para quien administra un laboratorio casero con varios servicios detras de Traefik o Nginx, la barrera de entrada es baja: un contenedor y unas reglas en el proxy. El proyecto queda pendiente de que la comunidad aporte temas y de que se corrija el escalado del tema problematico.
