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)
| Recurso | Tu VPS | ¿Suficiente? |
|---|---|---|
| CPU | 2 vCPU | ✅ (uso actual ~2%) |
| RAM | 8 GB | ✅ (uso actual ~34%) |
| Disco | 100 GB (16 usados) | ✅ |
| Ancho de banda | 8 TB/mes | ✅ de sobra |
| SO | Ubuntu 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):
- En Hostinger → DNS del dominio: registro A
@→217.15.168.100(ywww→ A o CNAME). - En HestiaCP: agrega el dominio web → proxy a
127.0.0.1:3000→ emite SSL Let's Encrypt. - 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
| Escenario | Dónde | Acción |
|---|---|---|
| Piloto + 1–3 clientes (hasta ~20–30 usuarios) | Este VPS | Docker compose, backups diarios |
| ~10 clientes / 150 usuarios | VPS más grande (KVM 4/8) o empezar a separar servicios | Subir plan o mover Postgres a instancia dedicada |
| Escala / enterprise / alta disponibilidad | AWS | Migració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:
- Base de datos →
pg_dump/restore a RDS (Multi-AZ). - App → la misma imagen Docker corre en ECS o EKS (Kubernetes); solo cambias variables de entorno.
- Storage (fotos de entrega, exports) → S3; CDN/WAF con CloudFront.
- 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]].