Operación
Infraestructura
Escribir la aplicación es la mitad del trabajo. Esta página explica la otra mitad: dónde corre, cómo se despliega, qué está expuesto y qué no.
Topología
El mapa
Un VPS de Hetzner con Coolify orquestando contenedores. Traefik publica solo lo que necesita un dominio; el resto vive en una red privada de Docker.
Publicado en internet
Detrás de Traefik, con certificado TLS renovado automáticamente.
Portfolio
Next.js 16, renderizado en servidor
CRM
Next.js 16 con sesión de usuario
Solo red interna
Sin dominio y sin puerto publicado. Alcanzables únicamente desde dentro de la red de Docker.
facturacion-api
Laravel 13 — emisión, cálculo y auditoría
gotenberg
Conversión de HTML a PDF
postgres
Base de datos principal
redis
Colas y caché
minio
Almacenamiento compatible con S3
Criterio
Decisiones
Lo que guarda datos fiscales no tiene puerta pública
La API de facturación no está publicada en internet. Solo es alcanzable desde la red privada de Docker, así que no existe superficie de ataque directa sobre el servicio que custodia los registros. Traefik enruta únicamente las aplicaciones que necesitan un dominio.
Un backup que no has restaurado no es un backup
Los volcados de base de datos van cifrados a un almacenamiento separado del servidor que los genera, y la restauración se prueba de forma periódica. Un backup sin restauración probada es una carpeta que ocupa espacio.
El despliegue es aburrido a propósito
Cada aplicación tiene su Dockerfile multietapa y su healthcheck. Coolify despliega al hacer push a la rama principal y no promociona el contenedor hasta que el healthcheck responde. Si algo falla, la versión anterior sigue sirviendo.
El coste es una decisión de arquitectura
Un VPS de Hetzner con varios contenedores sale por una fracción de lo que cuesta la suma de servicios gestionados equivalentes. En el agregador inmobiliario eso significó pasar de unos 400 € al mes a entre 20 y 35 €.
Detalle
Por capas
- Servidor
- VPS Hetzner
- Ubuntu 24.04 LTS
- Firewall a nivel de proveedor
- Orquestación
- Coolify
- Docker
- Traefik con TLS automático
- Redes privadas por proyecto
- Aplicación
- Next.js 16 renderizado en servidor
- Laravel 13 con PHP 8.5
- Colas y workers
- Datos
- PostgreSQL
- MySQL
- Redis
- Almacenamiento compatible con S3
- Operación
- Backups cifrados fuera del servidor
- Healthchecks
- Monitorización de disponibilidad