a Go.
· Sixto Valdés

Stack moderno para PyMEs chilenas 2026 (Docker + Traefik)

Cómo armar un stack técnico moderno para una PyME chilena en 2026 sin sobreingeniería: Docker Compose, Traefik, GitHub Actions y VPS Hetzner aGo.

DevOpsDockerStackChilePyME
§ Resumen

Cómo armar un stack técnico moderno para una PyME chilena en 2026 sin sobreingeniería: Docker Compose + Traefik + GitHub Actions + VPS Hetzner/Hostinger. El que usa aGo.

Una PyME chilena que desarrolla software no tiene que elegir entre “shared hosting con cPanel” o “AWS con un sysadmin dedicado”. Hay un sweet spot moderno, controlable, barato y robusto que aGo usa para todos sus productos y casos. Este post lo describe.

Los principios

  1. Local-first: lo que corre en producción debe correr igual en tu laptop.
  2. Reproducible: cualquiera con git clone y docker compose up levanta el proyecto.
  3. Versionado: infraestructura como código.
  4. Automatizado: el deploy a producción es un git push.
  5. Costo operacional bajo: la infraestructura compute pesa poco en el total del proyecto. Lo caro es el diseño, la implementación y la mantención.

El stack

Local (tu máquina)

  • Docker Compose: define los servicios (app, BD, cache, etc.) en un docker-compose.yml.
  • Traefik local con subdominios .localhost: cada proyecto en su URL (proyecto.localhost) sin tocar /etc/hosts.
  • .env por proyecto: secrets y configuración fuera del repo.

Repositorio (GitHub)

  • Repo privado por proyecto.
  • .github/workflows/deploy.yml: pipeline de deploy.
  • Secrets gestionados con gh secret set.

Producción (VPS Hetzner o Hostinger)

  • VPS con Ubuntu 22.04 o 24.04.
  • Docker + Traefik que enruta por subdominio.
  • Let’s Encrypt para SSL automático.
  • Cada proyecto en su docker-compose.yml con red Docker compartida con Traefik.
  • Backups automatizados a S3-compatible (Cloudflare R2, Hetzner Object Storage).

El flujo de trabajo

Día 1, Setup local

mkdir mi-proyecto && cd mi-proyecto
git init
# crea docker-compose.yml, Dockerfile, .env.example, .gitignore
docker compose up
# abre http://mi-proyecto.localhost

Día 2, Push y deploy

git add . && git commit -m "feat: inicial"
gh repo create mi-proyecto --private --source=. --push
# configura GH Actions con secret del VPS
gh secret set VPS_SSH_KEY < ~/.ssh/id_rsa
git push origin main  # Actions hace el deploy

Día 3, Iteración

# trabajas local
git push origin main  # cada push despliega

Por qué Traefik y no nginx

  • Configuración por labels en docker-compose.yml, no por archivos sueltos.
  • Routing dinámico: levantas un servicio nuevo y aparece online sin reiniciar Traefik.
  • Let’s Encrypt automático.
  • Middleware útil (rate limiting, basic auth, redirect HTTPS) declarativo.

Por qué Hetzner Cloud / Hostinger VPS y no AWS/GCP

  • Simplicidad operacional: no necesitas IAM, VPC, security groups complejos. Una IP pública, un firewall, llaves SSH. La superficie de configuración cabe en una cabeza.
  • Facturación predecible: tarifa fija mensual conocida de antemano. Sin sorpresas por egress, lambda invocations o NAT gateways.
  • Soporte LATAM: facturas en USD o EUR sin complicaciones, latencia razonable desde Chile, opciones europeas con buena privacidad de datos.

AWS y GCP tienen sentido cuando el producto necesita escalado horizontal serio (>1M req/día sostenido) o servicios managed específicos (RDS Multi-AZ, BigQuery, Cloud Run autoscale). Antes de ese umbral, agregan complejidad y costo variable difícil de proyectar para una PyME.

GitHub Actions despliega con un workflow simple que hace ssh al VPS, git pull, docker compose up -d.

— Sixto Valdés

Errores comunes

1. Editar código en el VPS

Tentación: “es un fix chico, lo arreglo en el server”. Resultado: el VPS y el repo divergen. La próxima vez que se despliegue, se pisa el fix. Regla aGo: NUNCA arreglar código en el VPS. Solo .env, infraestructura, backups. Código se arregla en local, push, GitHub Actions despliega.

2. Secrets en el repo

Aunque sea repo privado, los secrets viven en .env (local) o en GitHub Secrets / Doppler / Vault (producción). Nunca en archivos versionados.

3. Sin backups

Backup automático diario a R2 o S3 compatible. Sin esto, una restauración accidental + un bug = pérdida total.

4. Sobreingeniería desde el día 1

Kubernetes para un sitio que sirve 100 req/min es exceso. Empieza con Docker Compose simple, escala cuando duela.

Stack concreto recomendado para 90% de los casos

# docker-compose.yml
services:
  app:
    image: tu-imagen:latest
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.app.rule=Host(`tuproyecto.cl`)"
      - "traefik.http.routers.app.tls.certresolver=letsencrypt"
    networks:
      - traefik-net
      - internal

  db:
    image: postgres:16
    volumes:
      - db_data:/var/lib/postgresql/data
    networks:
      - internal

  redis:
    image: redis:7
    networks:
      - internal

volumes:
  db_data:

networks:
  traefik-net:
    external: true
  internal:

GitHub Actions despliega con un workflow simple que hace ssh al VPS, git pull, docker compose up -d.

Casos reales

aGo usa este stack para:

Todos corren bajo el mismo patrón con variaciones por stack interno (Django, Next.js, Go).

Preguntas frecuentes

¿Es válido para una PyME no técnica?

Una PyME no técnica probablemente contrata a alguien que sí lo es. La gracia del stack es que cualquier dev/operador entiende qué pasa, no es una caja negra.

¿Funciona para alta disponibilidad?

Con un único VPS, no. Para HA real necesitas múltiples nodos, load balancer y BD replicada. Cuando llegues a ese nivel de tráfico, este stack se queda corto pero la migración es gradual.

¿Cloudflare Pages / Vercel no es más simple?

Para sitios estáticos puros, sí. Para apps con backend, BD y procesos en cola, este stack te da más control y menos lock-in.

¿Quién soporta esto si yo no quiero meterme?

Servicios aGo cubren setup completo de este stack para tu proyecto, mantenimiento y monitoreo.

Conclusión

Docker Compose + Traefik + GitHub Actions + un VPS bien dimensionado cubre el 90% de las necesidades técnicas de una PyME chilena que desarrolla software. Sin lock-in, controlable, productivo desde el día 1, con un costo operacional predecible. El valor está en cómo se diseña, se documenta y se opera el sistema, no en la receta de proveedores.

Es el stack que aGo usa internamente y adapta para cada cliente según su carga, su equipo y su nivel de tolerancia al riesgo operacional.

¿Quieres que armemos tu setup o auditemos el actual? Conversemos.

§ Siguiente paso

Quieres profundizar? Escríbenos a hola@ago.cl y revisamos tu caso.

§ FAQ

Preguntas frecuentes

¿Por qué Docker Compose y no Kubernetes para una PyME chilena?

Kubernetes resuelve problemas de escala que una PyME chilena rara vez tiene: orquestación multi-nodo, rolling updates, service mesh. Docker Compose corre en un VPS de USD 5 a 30 al mes, lo entiende cualquier dev en 10 minutos, y es suficiente para servir miles de visitas diarias. Migrar a Kubernetes solo cuando hay equipo DevOps dedicado y necesidad real de auto-scaling.

¿Cuánto cuesta un stack moderno para PyME en 2026?

VPS Hetzner CX22 o Hostinger VPS: USD 5 a 12 al mes (2 vCPU, 4-8 GB RAM, suficiente para un Django + Postgres + Redis + Caddy). Dominio: USD 12 al año. Backups a Cloudflare R2: USD 0.015 por GB/mes, típicamente USD 1 a 3 al mes para PyMEs. Total: USD 8 a 20 al mes operación, sin lock-in cloud.

¿Qué papel cumple Traefik en este stack y por qué no Nginx?

Traefik es un reverse proxy que detecta containers Docker automáticamente vía labels y solicita certificados SSL Let's Encrypt sin configuración manual. Nginx requiere editar archivos de configuración cada vez que agregas un servicio. Para múltiples subdominios (api.tudominio.cl, admin.tudominio.cl, blog.tudominio.cl) Traefik es minutos de setup vs horas de Nginx.

¿Cómo se despliega código nuevo desde GitHub Actions a un VPS?

Patrón estándar: 1) Push a main dispara workflow GitHub Actions. 2) Workflow conecta SSH al VPS con clave guardada como secret. 3) En el VPS: git pull, docker compose build, docker compose up -d. 4) Healthcheck post-deploy. NUNCA editar código directamente en el VPS: el repo y el servidor divergen y el próximo deploy pisa los cambios.