Visitantes
Cualquier visita a un sitio o a una demo. Entra por HTTPS y resuelve por DNS hacia el único proxy del servidor.
HTTPS · 11 sitios detrás de un proxy
DNS
Un registro A wildcard apunta todo *.taller.works al VPS. Agregar un sitio no requiere tocar el DNS.
A wildcard · *.taller.works
Caddy
Reverse proxy único del servidor. Emite y renueva los certificados solo, reparte cada subdominio a su contenedor y es la única puerta hacia la red interna.
TLS automático · wildcard *.taller.works · 11 virtual hosts · n8n detrás del proxy
Telegram
Los bots de Telegram avisan por webhook. El proxy solo acepta esas peticiones si vienen de los rangos de IP de Telegram.
3 bots · filtro por rango de IP
WordPress × perfiles
Cada sitio es un servicio de Compose activado por profile: se enciende cuando alguien lo pide. Caben dos a la vez.
profiles de Compose · 384 MB por sitio · máx. 2 encendidos
MariaDB
Una sola base de datos compartida por todos los WordPress: menos memoria que una por sitio.
una instancia · backups con wp db export
wp-cli
Contenedor de herramientas para migraciones, exportes y search-replace sin instalar nada en el host.
migraciones · search-replace
Backups
Exporte de la base y tar de uploads por sitio; el restore reescribe las URLs con search-replace.
wp db export · tar de uploads · workflows de n8n
appsMonitor
Mi panel de control: enciende y apaga demos leyendo las labels de Compose. Antes de encender exige memoria y carga, regla que salió de una caída de 12 min.
MAX_RUNNING=2 · ≥ 400 MB libres · carga < 2
n8n · 6 flujos
Seis flujos en producción: inscripciones, reservas, bots, recordatorios y el estado semanal. Aprobación humana con Wait + webhook y rate limiting.
6 flujos · Wait + webhook · rate limiting
Runner de agentes IA
Servicio Express que corre Claude Code headless dentro de Docker. Solo lo llama n8n desde la red interna, con auth por header.
watchdog de inactividad · Chromium para capturas · fallback de modelo por OOM
Cron semanal
Cada lunes a las 9:00 se verifica que las URLs en vivo respondan 200 y el estado llega a Telegram vía n8n.
lunes 9:00 · URLs → 200 · aviso por Telegram
Hardening del host
Lo que deja el script de aprovisionamiento en el host antes de que corra un solo contenedor.
ufw · fail2ban · SSH solo con llave · usuario no-root · unattended-upgrades · swap 2 GB
GitHub Actions
El panel appsMonitor se despliega desde GitHub Actions: SSH, rsync y restart del servicio.
SSH + rsync · restart del servicio
Vercel · 13 proyectos
Los productos en Next.js viven en Vercel, con Neon desde el Marketplace, crons y variables marcadas como Sensitive.
13 proyectos · Neon · crons
AWS
En NTT DATA opero sobre Kubernetes en AWS; para 3Destiny, el EC2 del cliente con acceso por SSM y DNS en Route53.
EKS · RDS Oracle · EC2 vía SSM · Route53
Cloudflare
Tunnels de Cloudflare para mostrar una demo que corre en mi máquina sin abrir puertos.
cloudflared