Todos los posts

60+ contenedores Docker en un solo servidor: la arquitectura que opera TRUJO

2026-05-168 min· Juan José Trujillo Cardozo

Operamos más de 60 contenedores Docker en un solo servidor. No es un clúster de Kubernetes. No es AWS. Es un VPS en Alemania que cuesta menos de lo que muchas empresas pagan por un solo servicio en la nube. Adentro corren los servicios de producción que sostienen a nuestros clientes: el POS, la API de WhatsApp, el sistema biométrico, la facturación electrónica, el monitoreo.

La pregunta obligada es: ¿no es excesivo para una empresa pequeña? Tal vez. Pero la tesis de fondo es otra: la infraestructura no tiene que ser cara para ser profesional. Tiene que ser automatizada, monitoreada y documentada. Lo logramos con un equipo técnico pequeño y mucha automatización, no con un ejército de gente.

## La arquitectura: simple pero disciplinada

La base es Docker Compose. Cada servicio tiene su propio archivo compose en su propio directorio. El POS va por un lado, la API de WhatsApp por otro, el biométrico por otro. Si uno falla, los demás ni se enteran.

Todo pasa por Nginx Proxy Manager como reverse proxy. Cada dominio llega al puerto 80 o 443 de NPM, y NPM lo enruta al contenedor correcto dentro de la red interna. Ningún contenedor expone puertos al exterior directamente, excepto NPM.

La red interna se llama trujonet. Si un servicio necesita hablar con otro, lo hace por nombre de contenedor dentro de esa red. Si no necesita hablar con nadie, queda aislado. Las bases de datos viven en una red separada que no toca internet.

[CODE:bash] # Cada stack se actualiza, reinicia o elimina sin tocar el resto docker compose -f stacks/pos/compose.yml up -d docker compose -f stacks/whatsapp/compose.yml restart docker network ls # trujonet, trujo-internal, ai-callcenter-net [/CODE]

Esto no es elegante. Es práctico. Y la practicidad es la que aguanta seis meses sin drama.

## Monitoreo autónomo con IA cada 60 segundos

Acá es donde se pone interesante. Un agente de infraestructura escanea toda la red cada 60 segundos. Busca contenedores caídos, contenedores sin healthcheck, uso de disco anómalo y servicios que no responden al health probe.

Cuando encuentra algo, tiene dos caminos. Si el contenedor no está en la lista de protegidos, lo reinicia automáticamente. Si está protegido, llega una alerta por Telegram. Y la alerta no es un simple "el contenedor X se cayó": el agente lee los logs, identifica la causa probable y sugiere qué hacer. Usa un motor de IA local con fallback a un modelo en la nube si el local no está disponible.

Hay también un agente de seguridad que vigila fail2ban en tiempo real. Si alguien intenta entrar por fuerza bruta al SSH o al proxy, llega alerta con la IP, el país y cuántos intentos hizo.

Todo corre 24/7 sin intervención manual. Nos enteramos de los problemas por Telegram, casi siempre antes de que un usuario los note.

## Backups y recuperación ante desastres

Todos los días a las 2 de la mañana corre un script que respalda las bases de datos del servidor: PostgreSQL, MariaDB, SQLite. Los backups se comprimen y se guardan localmente con retención de 30 días. A las 4 de la mañana otro script los sincroniza a almacenamiento externo en la nube (Cloudflare R2). Si el servidor explota literalmente, los datos están a salvo.

¿Cuánto toma reconstruir todo desde cero? Aproximadamente 2 horas. Los compose files están en Git. Los datos están en los backups. Los secretos viven en archivos .env con permisos 600. Es cuestión de clonar, restaurar y levantar. Nunca tuvimos que hacerlo en producción, pero lo probamos. Saber que funciona es lo que deja dormir tranquilo.

## Lo que aprendimos

La automatización agresiva es el multiplicador real: si algo se puede automatizar, se automatiza. Disciplina de SRE: si no se mide, no existe. Infraestructura como código: nada se configura a mano, porque lo que se configura a mano se olvida y no se reproduce.

La transparencia de todo esto está en /trust, con un mapa público de despliegues y telemetría verificable. No pedimos que nos crean: pedimos que lo revisen.

Si tu negocio necesita software que funcione 24/7 sin sorpresas, escríbenos a [email protected] o por WhatsApp al wa.me/573172946935.