Homelab
Dos máquinas en casa
En algún momento dejé de tratar mis servidores caseros como un juguete y empecé a operarlos como infraestructura de verdad. Tengo dos, con roles separados y sin solapar: una Raspberry Pi 5 y un Ubuntu Server al que le puse el nombre de Ironman.
Raspberry Pi 5 — seis servicios, un único punto de entrada
Cortex Lead Hunter
FastAPI + PostgreSQL/pgvector
Cortex Dashboard
Next.js
Talent Tracker API
FastAPI + PostgreSQL
Talent Tracker Dashboard
Next.js
Planfit
Django + PostgreSQL/pgvector
Linking
Django + PostgreSQL
- PostgreSQL con una base de datos por servicio
- Dos runners de GitHub Actions self-hosted en la propia Pi, para CI/CD sin depender de un runner en la nube
- Cada servicio con su propio deploy automático al hacer push a
main - Un único hostname público vía Tailscale Funnel — nada expuesto directamente a internet salvo eso
Ironman — Ubuntu Server
Una máquina separada, sin solapar servicios con la Raspberry Pi. Hoy aloja un proyecto; a futuro es donde quiero que corran las cargas más pesadas.
En marcha
SingleDrive
Django + Angular, Docker Compose
En el roadmap
- Backtesting de estrategias de trading (la línea de Kraken Bot)
- Modelos de IA corriendo en local
El incidente: un ataque de supply-chain, junio de 2026
Ocurrió en la Raspberry Pi. El vector fue tan mundano como preocupante: un npm install en uno de los dashboards, que ejecutó un script postinstall malicioso incluido en una dependencia comprometida. El resultado fue una entrada añadida al crontab del sistema, ejecutando código no autorizado de forma periódica.
Lo detecté, identifiqué la entrada maliciosa del crontab y la eliminé, roté las credenciales que podían haberse visto expuestas y apliqué hardening adicional: firewall (UFW) activo, fail2ban contra fuerza bruta, acceso SSH sin contraseña (solo clave) y cierre de servicios de escritorio remoto que no necesitaba tener abiertos.
No fue un ejercicio de laboratorio. Fue mi propia infraestructura, en producción, con un intruso real dentro. Lo cuento porque la parte incómoda —darte cuenta de que tu cadena de dependencias es una superficie de ataque, no un detalle— es la que más se aprende de verdad.