a Go.
· Sixto Valdés

Stack moderno para PyMEs chilenas 2026 (Docker + Traefik + GitHub Actions)

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.

DevOpsDockerStackChilePyME

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. Barato: cuesta entre USD 5 y USD 50 al mes mantener varios proyectos.

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

  • Costo: CX31 de Hetzner cuesta USD ~10/mes para un VPS que aguanta varios proyectos chicos.
  • Simplicidad: no necesitas IAM, VPC, security groups complejos. Una IP pública, un firewall.
  • Soporte LATAM: facturas en USD/EUR sin complicaciones, latencia razonable desde Chile.

AWS/GCP tienen sentido cuando tu producto necesita escalado horizontal serio (>1M req/día) o servicios managed específicos (RDS Multi-AZ, BigQuery, etc.). Antes de eso, agregan complejidad innecesaria.

El .env base

aGo mantiene un .env raíz con credenciales reutilizables: R2 storage, Acumbamail SMTP, Flow Chile (pagos), Browserless (rendering), múltiples LLM providers. Cada proyecto nuevo arranca tomando lo que necesita en vez de configurar todo desde cero.

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 + VPS de USD 10/mes cubre el 90% de las necesidades técnicas de una PyME chilena que desarrolla software. Sin lock-in, controlable, barato, productivo desde el día 1. Es el stack que aGo usa internamente y para clientes.

¿Quieres que armemos tu setup? Conversemos.