Deploy de aplicaciones Next.js sin Vercel: Railway, Dokploy y VPS
Guía completa para desplegar aplicaciones Next.js en alternativas como Railway, Dokploy y VPS, con ejemplos prácticos y comparativas técnicas.
Introducción
En el ecosistema de Next.js, Vercel es la opción predilecta para deploy, pero no la única. En este artículo exploraremos alternativas robustas como Railway, Dokploy y VPS tradicionales, adaptadas al contexto latinoamericano donde el costo y la flexibilidad son cruciales.
Requisitos previos: Node.js 18+, cuenta en GitHub/GitLab, conocimientos básicos de CLI y Docker.
1. Configuración inicial de Next.js
Comenzamos con un proyecto Next.js configurado para SSR (Server Side Rendering) y API Routes:
// next.config.js
module.exports = {
output: 'standalone', // Crucial para Docker
experimental: {
serverComponentsExternalPackages: ['@prisma/client']
}
}Este modo standalone genera una carpeta .next/standalone autocontenida.
2. Deploy en Railway
Railway ofrece un balance perfecto entre simplicidad y control:
- Crear proyecto en railway.app vinculando tu repositorio
- Configurar variables de entorno directamente en el dashboard
// railway.json - Configuración de deploy
{
"build": {
"builder": "nixpacks",
"config": {
"NODE_ENV": "production"
}
},
"deploy": {
"startCommand": "node server.js"
}
}3. Dokploy: Autohosting con Docker
Dokploy es ideal para quienes prefieren control total con interfaz amigable:
# Dockerfile para Next.js
FROM node:18-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:18-alpine
WORKDIR /app
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
COPY --from=builder /app/public ./public
EXPOSE 3000
CMD ["node", "server.js"]Tras construir la imagen, Dokploy permite gestionar containers con interfaz visual.
4. VPS Tradicional (AWS Lightsail/DigitalOcean)
Para proyectos con tráfico predecible, un VPS de $5/mes puede ser suficiente:
- Configurar NGINX como reverse proxy
- Usar PM2 para gestión de procesos
# Configuración NGINX básica
server {
listen 80;
server_name tudominio.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}5. Comparativa Técnica
Tabla comparativa: Tiempo de deploy, costos promedio en LATAM, escalabilidad y dificultad de configuración.
6. Automatización con GitHub Actions
Flujo CI/CD para deploy automático en Railway:
# .github/workflows/deploy.yml
name: Deploy to Railway
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: railwayapp/action@v1
with:
projectId: ${{ secrets.RAILWAY_PROJECT_ID }}
token: ${{ secrets.RAILWAY_TOKEN }}Conclusión
Cada alternativa tiene su nicho: Railway para proyectos que escalan rápido, Dokploy para equipos que prefieren Docker sin complejidad, y VPS para aplicaciones estables con presupuesto ajustado. La decisión depende de tus necesidades específicas de escalabilidad, control y costo.
¿Te fue útil este artículo?
Déjame tu email y te aviso cuando publique nuevos artículos técnicos.