zeroserve: un servidor web HTTPS sin configuración que se programa con eBPF

Fuentes: zeroserve: a zero-config web server you can script with eBPF
Imagen generada por IA con el prompt: Stylized single rack server with glowing green eBPF gear inside, abstract data streams as light cables, dark modern editorial tech illustration, no logos, no text
Imagen generada con IA

zeroserve es un servidor web HTTPS sin configuración, compacto y rápido, desarrollado por losfair y publicado en GitHub. Recibe un único archivo tar con un sitio web y lo sirve tal cual, sin descomprimirlo en disco, a través de HTTP/2 y TLS 1.3, con recarga en caliente y un consumo de memoria mínimo.

Su rasgo diferencial es que admite programas eBPF colocados dentro del tarball: se ejecutan en cada petición como middleware en espacio de usuario, dentro de un entorno sandbox, y permiten reescribir solicitudes, autenticar, limitar tasa o actuar como proxy inverso. Frente a alternativas como nginx o Caddy —que combinan un lenguaje declarativo de directivas con un runtime de scripting opcional como Lua o plugins, lo que reparte la lógica en dos capas—, zeroserve unifica todo en un único programa eBPF que decide qué ocurre con cada solicitud: enrutado, cabeceras, autenticación, limitación de tasa y proxy.

Los scripts se compilan al empaquetar con clang y llc, se cargan en un runtime propio (async-ebpf, basado en uBPF) que los compila JIT a código nativo x86-64 dentro de un proceso sin privilegios, y se ejecutan en el bucle de eventos del servidor con un sistema de preempción por temporizador que evita que un script bloquee al resto. El SDK incluye inspección y mutación de peticiones, operaciones criptográficas (SHA-256, HMAC, base64, getrandom), manejo de JSON, cubos de tokens para rate limiting persistentes entre recargas, firma AWS SigV4 y un flujo completo de OIDC para autenticar usuarios frente a un sitio estático.

En seguridad de transporte integra TLS 1.3 con BoringSSL, Encrypted Client Hello nativo, selección de certificado por SNI, fingerprinting JA4 y un modo de retransmisión ECH. En pruebas con wrk -t4 -c100 sobre un Ryzen 7 3700X con un núcleo fijado, el autor afirma que supera a nginx 1.26 y Caddy 2.11 en la mayoría de cargas: archivos estáticos pequeños y grandes, middleware con scripts y proxy de respuestas pequeñas, todo sobre HTTPS.