Skip to content
Infraestructura auto-alojada para una agencia digital
FinOpsOpen SourcePlataformas de DatosDockerWAF

Infraestructura auto-alojada para una agencia digital

Reemplazo de herramientas SaaS fragmentadas por un stack auto-alojado de código abierto con gestión pull-based de Portainer y protección perimetral con Caddy y Coraza WAF.

AVISO SOBRE LA CONFIDENCIALIDAD: Debido a acuerdos de confidencialidad y a la naturaleza de la infraestructura descrita, el nombre del cliente se mantiene bajo seudónimo. Los detalles técnicos corresponden a la arquitectura efectivamente desplegada.

1. Problema

Una agencia digital había acumulado múltiples suscripciones de software como servicio (SaaS) para gestionar clientes, analítica web, repositorio de código y herramientas de colaboración interna. El gasto mensual en licencias aumentaba con la incorporación de nuevos colaboradores, mientras que la información operativa quedaba dispersa en plataformas multi-inquilino externas. Los cambios unilaterales en interfaces o esquemas de cobro de los proveedores generaban incertidumbre técnica y financiera. La agencia requería recuperar el control de sus herramientas sin depender de suscripciones recurrentes por usuario.

2. Contexto

La agencia digital contaba con flujos de trabajo basados en diversas herramientas en la nube. Se evaluó el desarrollo de aplicaciones internas desde cero, pero la carga de ingeniería y mantenimiento superaba la capacidad del equipo. Como alternativa viable, seleccioné aplicaciones consolidadas de código abierto y diseñé un entorno de auto-alojamiento sobre servidores privados dedicados, permitiendo centralizar la operación técnica bajo un esquema de costos predecible. El proyecto corresponde a una relación de servicio activa iniciada en abril de 2026.

3. Compensaciones

Enfoque Estructura de costos Control de los datos Mantenimiento de software Consideraciones operativas
Suscripciones SaaS convencionales Variable por asiento o consumo Delegado en proveedores externos Nulo a nivel de servidor Dependencia continua de políticas de terceros
Desarrollo interno a la medida Inversión técnica muy elevada Total Continuo y exigente para el equipo Desvía recursos de la actividad comercial
Auto-alojamiento no administrado en VPS Bajo en licencias directas Total Elevado: riesgo de configuraciones inseguras Falta de procesos de actualización estructurados
Stack auto-alojado con gestión pull-based (este caso) Costo de infraestructura y licencia de orquestación Total: datos en servidores propios Automatizado mediante playbooks e imágenes estables Portainer Business Edition requiere suscripción comercial

En las compensaciones del diseño, cabe destacar que la capa de gestión elegida (Portainer Business Edition) es una solución de pago con costo de licenciamiento, la cual se seleccionó frente a la versión comunitaria gratuita por requerir capacidades de agentes perimetrales (Edge Agents) para despliegue pull-based y soporte oficial de configuración centralizada.

4. Decisión

Diseñé e implementé una plataforma auto-alojada sobre una flota de servidores privados dedicados utilizando contenedores Docker y un modelo de gestión pull-based:

Estado Anterior: Dispersión en Servicios SaaS
  (Herramientas de colaboración, analítica y gestión)
        |
        v
Flota de Servidores Dedicados
  +------------------------------------------+
  | Gestión Pull-Based                       |
  | Portainer Business Edition (Edge Agents) |
  | Despliegues GitOps mediante repositorios |
  +------------------------------------------+
  +------------------------------------------+
  | Capa de Borde y Seguridad                |
  | Proxy Caddy + Coraza WAF (OWASP CRS)     |
  | Terminación TLS automática con Let's Enc |
  | Reglas de cortafuegos UFW default-deny   |
  +------------------------------------------+
  +------------------------------------------+
  | Aplicaciones de Código Abierto           |
  | Plausible Analytics (analítica web)      |
  | Forgejo y Fider (código y sugerencias)   |
  | Nextcloud y Vikunja (archivos y tareas)  |
  +------------------------------------------+

Arquitectura pull-based: Utilicé los Edge Agents de Portainer Business Edition para que los servidores periféricos inicien la comunicación hacia la instancia central. Esto permitió mantener una política de cortafuegos estricta en UFW donde todo el tráfico entrante a puertos administrativos queda denegado por defecto.

Seguridad perimetral: Implementé Caddy como proxy inverso unificado integrado con Coraza WAF y el conjunto de reglas OWASP CRS. Configuré certificados TLS gestionados automáticamente por Let’s Encrypt.

Aprovisionamiento automatizado: Escribí playbooks de Ansible para la preparación de los sistemas operativos, el endurecimiento de configuraciones base y la inyección de secretos cifrados mediante Mozilla SOPS.

Esquema de respaldos: Diseñé respaldos automatizados hacia almacenamiento compatible con S3, con verificación periódica de integridad de archivos y bases de datos.

5. Resultado

La agencia digital cuenta con un ecosistema auto-alojado en producción desde abril de 2026. Las aplicaciones de analítica web, repositorio de proyectos, gestión de archivos y seguimiento de tareas operan en servidores privados bajo control directo del equipo técnico. La arquitectura pull-based mantiene los puertos administrativos cerrados a internet, y el proxy inverso con WAF filtra las peticiones hacia los contenedores. La infraestructura reemplazó las dependencias de los servicios SaaS prioritarios con costos operativos estables.

6. Problemas conocidos

Configuraciones por defecto en contenedores: Algunas imágenes de aplicaciones de código abierto incluyen contraseñas genéricas o permisos permisivos en su primera ejecución. Estandaricé los playbooks de Ansible para forzar la inicialización con contraseñas generadas al vuelo y variables de entorno sanitizadas antes de abrir el tráfico.

Exclusiones en interfaces administrativas: Formularios complejos en consolas de gestión interna activaron reglas genéricas del Core Rule Set en Coraza. Lo corregí definiendo exclusiones delimitadas por rutas exactas y cabeceras de autenticación interna.

Supervisión del almacenamiento de respaldos: Los respaldos regulares generaban acumulación de volúmenes en el destino remoto. Implementé rutinas de ciclo de vida para rotar y expirar copias antiguas de acuerdo con las políticas acordadas.

7. Límites

No gestioné el soporte de usuario final de las aplicaciones internas ni audité normativas específicas de protección de datos de los clientes de la agencia; mi entrega cubrió el aprovisionamiento, la seguridad perimetral del host y el ciclo de vida de los contenedores.

Nota de método. Publico una métrica solo cuando tengo registros que la respaldan, con su periodo y su método de medición. Este caso omite cifras que todavía no puedo documentar.

¿Quieres este enfoque de ingeniería para tu propia infraestructura?

Sobre Developmi