Saltar al contenido

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

InternetTailscale Funnel1 hostname públiconginxreverse proxy

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.