ConTodo
Infraestructura

VPS Hostinger: veredicto, despliegue y migración progresiva a AWS

Tu VPS: ¿sirve? Sí. Cómo desplegar y cómo escalar.

1. Veredicto del VPS (KVM 2)

RecursoTu VPS¿Suficiente?
CPU2 vCPU✅ (uso actual ~2%)
RAM8 GB✅ (uso actual ~34%)
Disco100 GB (16 usados)
Ancho de banda8 TB/mes✅ de sobra
SOUbuntu 22.04 + HestiaCP

¿Soporta 20 usuarios? Sí, holgado. Una app Next.js + Postgres + Flai para ~20 usuarios concurrentes consume poco; este VPS aguanta eso y los primeros varios clientes (tenants) sin problema. Está prácticamente ocioso hoy.

Recomendaciones inmediatas:

  • Activar backups diarios (+US$6/mes) — barato y crítico con datos de clientes.
  • Desplegar con Docker (app + Postgres) para portabilidad.
  • Postgres en el VPS = sin costo extra; o usar Supabase si prefieres gestionado.

2. Cómo desplegar en el VPS (Docker)

Ya están en el repo: Dockerfile, docker-compose.yml, .dockerignore y output: 'standalone'.

# En el VPS (SSH root@217.15.168.100):
git clone https://github.com/unimauro/contodo-erp.git
cd contodo-erp
export GEMINI_API_KEY=tu_key
export POSTGRES_PASSWORD=una_clave_fuerte
docker compose up -d --build      # levanta app (puerto 3000) + Postgres

Dominio + SSL (con HestiaCP):

  1. En Hostinger → DNS del dominio: registro A @217.15.168.100 (y www → A o CNAME).
  2. En HestiaCP: agrega el dominio web → proxy a 127.0.0.1:3000 → emite SSL Let's Encrypt.
  3. Listo: tu ConTodo en tu dominio, con HTTPS, en tu VPS.

Nota: HestiaCP usa 80/443. La app corre en 3000 detrás del proxy de Hestia. No expongas Postgres a internet (queda en la red interna de Docker).

3. El MCP de Hostinger

Tu config (hostinger-hosting/domains/dns/billing/reach) sirve para que Claude en tu Claude Desktop/Cursor gestione Hostinger (crear registros DNS, ver VPS, billing) con tu API token.

  • ⚠️ Rota el token que compartiste en el chat (Hostinger → API → regenerar). Nunca lo pongas en el repo.
  • En esta sesión de Claude Code ese MCP no está conectado, por eso no puedo tocar el VPS desde aquí; sí desde tu Desktop/Cursor con esa config.
  • Útil sobre todo para automatizar DNS (apuntar el dominio) y consultar el VPS.

4. Capacidad y cuándo migrar

EscenarioDóndeAcción
Piloto + 1–3 clientes (hasta ~20–30 usuarios)Este VPSDocker compose, backups diarios
~10 clientes / 150 usuariosVPS más grande (KVM 4/8) o empezar a separar serviciosSubir plan o mover Postgres a instancia dedicada
Escala / enterprise / alta disponibilidadAWSMigración progresiva (abajo)

5. Migración progresiva a AWS (sin reescribir)

Como todo va en contenedores Docker + Postgres, la migración es por piezas, no de golpe:

  1. Base de datospg_dump/restore a RDS (Multi-AZ).
  2. App → la misma imagen Docker corre en ECS o EKS (Kubernetes); solo cambias variables de entorno.
  3. Storage (fotos de entrega, exports) → S3; CDN/WAF con CloudFront.
  4. Multi-tenant intacto (tenant_id + RLS no cambian).

Clave: diseñar portable desde el día 1 (Docker + Postgres + S3-compatible). Así el salto a AWS/Kubernetes es lift-and-shift por fases, sin reescribir el producto. Empieza barato en el VPS; migra cuando el volumen lo justifique.

6. ¿Puedo alojar mis OTROS proyectos aquí (con dominio)? Sí

El VPS + HestiaCP es básicamente tu mini-Vercel: puedes correr varios proyectos, cada uno con su dominio y SSL.

  • Cada proyecto = una app en Docker en su puerto (3000, 3001, 3002…) + en Hestia un dominio → proxy a ese puerto + Let's Encrypt.
  • No se pisan: Hestia maneja 80/443; tu SFTP (22) y los otros usuarios/sitios siguen intactos. ConTodo y los demás corren aislados en Docker.
  • Recursos: con 8 GB corren varios apps pequeños/medianos cómodamente. Si alguno es pesado, subes a KVM 4/8.
  • DNS: en Hostinger, cada dominio con registro A → 217.15.168.100.

Así centralizas todos tus proyectos en un VPS barato, cada uno con su dominio, y migras a AWS solo lo que escale.

Relacionado: [[26-despliegue-costos-admin]] · [[20-roadmap-backend]] · [[24-roadmap-general]].