Todas las notas Infraestructura

Consolidación de infraestructura: 12 servicios en un solo VPS

Por Agustín Ahumada 12 min

El problema: servicios dispersos, mantenimiento multiplicado

En entornos de producción cloud es común encontrar servicios repartidos sin coordinación: un proceso para el proxy, otro para la base de datos, otro para el monitoreo. Cada componente en su propio rincón del VPS o en instancias separadas. Actualizaciones manuales, configuraciones dispersas, y cero visibilidad de qué está corriendo.

El resultado es predecible. Cada componente aislado se convierte en un vector de mantenimiento independiente. Si algo falla a las 3 AM, el diagnóstico empieza desde cero.

La solución no es simplemente “meter todo en Docker”. Es diseñar una arquitectura por capas donde cada nivel tiene una función específica, corriendo sobre un VPS cloud con los recursos adecuados.

Arquitectura: cinco capas de defensa

Capa 1: Aislamiento con Docker Compose

Cada servicio corre en su propio contenedor con recursos limitados. Un solo archivo compose.yml define toda la infraestructura del servidor. Levantar, actualizar o restaurar cualquier servicio es un solo comando.

services:
  traefik:
    image: traefik:v3
    restart: unless-stopped
    ports:
      - "443:443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro

Capa 2: Proxy inverso con Traefik

Traefik actúa como punto de entrada único. Todo el tráfico pasa por él:

  • SSL automático vía Let’s Encrypt
  • Routing basado en dominios (cada servicio tiene su subdominio)
  • Rate limiting y headers de seguridad centralizados
  • Dashboard de monitoreo en tiempo real

Capa 3: Autenticación centralizada con Authentik

En vez de que cada servicio maneje sus propios usuarios, Authentik provee SSO. Un solo login para todo. Esto elimina credenciales dispersas y permite auditar accesos desde un punto central.

Capa 4: Firewall con nftables

nftables reemplaza a iptables como firewall del sistema. Las reglas son declarativas y fáciles de auditar. Solo los puertos 443 (HTTPS) y 22 (SSH) están abiertos al exterior.

Capa 5: Detección de intrusos con Fail2Ban

Fail2Ban monitorea logs de SSH, Traefik y Authentik. Después de 5 intentos fallidos, la IP se banea por 24 horas. Reduce los ataques de fuerza bruta a prácticamente cero.

Errores comunes que cuestan downtime

Tres configuraciones que pasan desapercibidas hasta que causan un incidente en producción:

  • Volúmenes sin backup. Sin respaldos automatizados de los volúmenes Docker, una actualización que corrompe datos significa pérdida total. Esto aplica igual en un VPS que en un bare metal.
  • Logs sin rotación. Sin logrotate, los logs crecen indefinidamente. Un disco lleno a las 3 AM no es divertido, y en infraestructura rentada cada GB cuenta.
  • Docker socket expuesto. Montar /var/run/docker.sock sin :ro (read-only) da acceso root al contenedor. Un detalle que la mayoría de tutoriales no menciona.

Resultado

Stack unificado con monitoreo, backups automatizados y zero-downtime deploys corriendo sobre infraestructura cloud. Más de 12 meses de operación continua sin intervención manual.

La clave no está en la complejidad del setup, sino en la simplicidad: cada capa hace exactamente una cosa, y todas son auditables desde un solo punto.

¿Estos temas son relevantes para tu negocio?

Si estás enfrentando problemas similares, podemos hablar sobre cómo resolverlos para tu caso específico.

Conversemos