Creando un CV autoalojado con Astro, SQLite y un LLM local
Este sitio reemplazó una instalación de WordPress con algo más ligero y totalmente bajo mi control: un único contenedor Astro (SSR), SQLite como única fuente de verdad, y ningún servicio de terceros en la ruta de la solicitud.
Los componentes móviles
- Astro + adaptador Node renderiza cada página pública en el servidor, con todo el CV impulsado por SQLite. Temas claro/oscuro, tres idiomas (EN/RU/UK), y una hoja de estilos para impresión que sirve como PDF descargable.
- Administración solo con clave de paso. Sin contraseñas: WebAuthn con múltiples credenciales y un CLI de emergencia para registrar una nueva clave si se pierden todas.
- Un pipeline diario. Un trabajo cron lista mis repositorios privados de GitHub, y para aquellos que han cambiado le pide a un modelo Gemma local (Ollama) que redacte un breve texto fáctico. Los nuevos repositorios llegan como borradores no publicados; nada privado se publica hasta que yo lo haga manualmente.
- Analíticas propias. Las visitas son geolocalizadas y resueltas por ASN con una base de datos MaxMind local (sin llamadas externas), con un banner de consentimiento GDPR que restringe GA y el beacon del cliente.
Por qué es importante
El LLM y la sincronización de GitHub están completamente en una ruta por lotes sin conexión; si el modelo está caído, el sitio no lo nota, simplemente sigue sirviendo desde SQLite y reintenta el enriquecimiento al día siguiente. Esa separación es todo el punto: la automatización interesante nunca se interpone entre un visitante y una página.
Más publicaciones sobre la infraestructura detrás de esto — BGP, transporte, monitoreo — próximamente.
Transparencia: la mayoría de las entradas se redactan con ayuda de IA, y las versiones que no están en inglés se traducen automáticamente con un LLM local y luego se revisan. ¿Has visto un error? Avísame, por favor.