355 lines
8.1 KiB
Markdown
355 lines
8.1 KiB
Markdown
|
|
# 🚀 Guía de Deploy - Amayo
|
|||
|
|
|
|||
|
|
## 📋 Arquitectura
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
┌─────────────────────────────────────────────────────────────┐
|
|||
|
|
│ Usuario │
|
|||
|
|
└────────────────┬────────────────────────────────────────────┘
|
|||
|
|
│
|
|||
|
|
┌────────┴────────┐
|
|||
|
|
│ │
|
|||
|
|
▼ ▼
|
|||
|
|
┌───────────────┐ ┌──────────────────┐
|
|||
|
|
│ docs.amayo.dev│ │ api.amayo.dev │
|
|||
|
|
│ (Frontend) │ │ (Backend API) │
|
|||
|
|
│ │ │ │
|
|||
|
|
│ Archivos │ │ Proxy NGINX │
|
|||
|
|
│ estáticos │ │ ↓ │
|
|||
|
|
│ (Vue build) │ │ localhost:3000 │
|
|||
|
|
└───────────────┘ │ (Bot Node.js) │
|
|||
|
|
└──────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🔧 Configuración Actual
|
|||
|
|
|
|||
|
|
| Componente | Dominio | Puerto | Servidor |
|
|||
|
|
|------------|---------|--------|----------|
|
|||
|
|
| Frontend Vue | `docs.amayo.dev` | 80/443 | Archivos estáticos |
|
|||
|
|
| Backend API | `api.amayo.dev` | 80/443 → 3000 | Node.js (bot) |
|
|||
|
|
|
|||
|
|
**Importante:** El bot ejecuta el servidor desde `main.ts` en el puerto **3000**.
|
|||
|
|
|
|||
|
|
## 📝 Pasos de Deploy
|
|||
|
|
|
|||
|
|
### 1. Build del Frontend
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd AmayoWeb
|
|||
|
|
npm run build
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Esto genera la carpeta `dist/` con los archivos compilados.
|
|||
|
|
|
|||
|
|
### 2. Copiar Archivos al Servidor VPS
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Crear directorio si no existe
|
|||
|
|
sudo mkdir -p /var/www/docs.amayo.dev
|
|||
|
|
|
|||
|
|
# Copiar archivos del build
|
|||
|
|
sudo cp -r dist/* /var/www/docs.amayo.dev/
|
|||
|
|
|
|||
|
|
# Ajustar permisos
|
|||
|
|
sudo chown -R www-data:www-data /var/www/docs.amayo.dev
|
|||
|
|
sudo chmod -R 755 /var/www/docs.amayo.dev
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. Configurar NGINX
|
|||
|
|
|
|||
|
|
#### A. Frontend (docs.amayo.dev)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Copiar configuración
|
|||
|
|
sudo cp nginx-docs.amayo.dev.conf /etc/nginx/sites-available/docs.amayo.dev
|
|||
|
|
|
|||
|
|
# Habilitar sitio
|
|||
|
|
sudo ln -s /etc/nginx/sites-available/docs.amayo.dev /etc/nginx/sites-enabled/
|
|||
|
|
|
|||
|
|
# Verificar configuración
|
|||
|
|
sudo nginx -t
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### B. Backend API (api.amayo.dev)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Copiar configuración
|
|||
|
|
sudo cp nginx-api.amayo.dev.conf /etc/nginx/sites-available/api.amayo.dev
|
|||
|
|
|
|||
|
|
# Habilitar sitio
|
|||
|
|
sudo ln -s /etc/nginx/sites-available/api.amayo.dev /etc/nginx/sites-enabled/
|
|||
|
|
|
|||
|
|
# Verificar configuración
|
|||
|
|
sudo nginx -t
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### C. Reiniciar NGINX
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
sudo systemctl restart nginx
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. Configurar Variables de Entorno del Bot
|
|||
|
|
|
|||
|
|
En tu servidor VPS, asegúrate de tener estas variables:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Editar archivo .env en la raíz del proyecto
|
|||
|
|
nano .env
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Agregar:
|
|||
|
|
|
|||
|
|
```env
|
|||
|
|
# Puerto del servidor API (usado por el bot)
|
|||
|
|
PORT=3000
|
|||
|
|
API_PORT=3000
|
|||
|
|
API_HOST=0.0.0.0
|
|||
|
|
|
|||
|
|
# Otras variables del bot
|
|||
|
|
DISCORD_TOKEN=tu_token
|
|||
|
|
DATABASE_URL=tu_database_url
|
|||
|
|
# ... resto de variables
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5. Iniciar/Reiniciar el Bot
|
|||
|
|
|
|||
|
|
El bot debe estar corriendo para que la API funcione:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Opción 1: Con PM2 (recomendado)
|
|||
|
|
pm2 restart amayo
|
|||
|
|
|
|||
|
|
# O si no está iniciado:
|
|||
|
|
pm2 start npm --name amayo -- start
|
|||
|
|
|
|||
|
|
# Ver logs
|
|||
|
|
pm2 logs amayo
|
|||
|
|
|
|||
|
|
# Opción 2: Directamente con npm
|
|||
|
|
npm start
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 6. Verificar que Todo Funcione
|
|||
|
|
|
|||
|
|
#### A. Verificar Frontend
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl https://docs.amayo.dev
|
|||
|
|
# Debe devolver HTML de tu app Vue
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
O abre en el navegador: https://docs.amayo.dev
|
|||
|
|
|
|||
|
|
#### B. Verificar Backend API
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Stats del bot
|
|||
|
|
curl https://api.amayo.dev/api/bot/stats
|
|||
|
|
|
|||
|
|
# Debe devolver JSON con estadísticas
|
|||
|
|
# {"servers":10,"users":1000,"commands":50}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### C. Ver Logs de NGINX
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Frontend
|
|||
|
|
sudo tail -f /var/log/nginx/docs.amayo.dev.access.log
|
|||
|
|
|
|||
|
|
# Backend
|
|||
|
|
sudo tail -f /var/log/nginx/api.amayo.dev.access.log
|
|||
|
|
|
|||
|
|
# Errores
|
|||
|
|
sudo tail -f /var/log/nginx/error.log
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### D. Ver Logs del Bot
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
pm2 logs amayo
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🔄 Script de Deploy Automático
|
|||
|
|
|
|||
|
|
Puedes usar el script `deploy.sh` (necesitas crearlo):
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
#!/bin/bash
|
|||
|
|
|
|||
|
|
# Script de deploy para Amayo
|
|||
|
|
|
|||
|
|
echo "🚀 Iniciando deploy de Amayo..."
|
|||
|
|
|
|||
|
|
# 1. Build del frontend
|
|||
|
|
echo "📦 Compilando frontend..."
|
|||
|
|
cd AmayoWeb
|
|||
|
|
npm run build
|
|||
|
|
|
|||
|
|
# 2. Copiar archivos
|
|||
|
|
echo "📤 Copiando archivos al servidor..."
|
|||
|
|
sudo rm -rf /var/www/docs.amayo.dev/*
|
|||
|
|
sudo cp -r dist/* /var/www/docs.amayo.dev/
|
|||
|
|
sudo chown -R www-data:www-data /var/www/docs.amayo.dev
|
|||
|
|
sudo chmod -R 755 /var/www/docs.amayo.dev
|
|||
|
|
|
|||
|
|
# 3. Reiniciar NGINX
|
|||
|
|
echo "🔄 Reiniciando NGINX..."
|
|||
|
|
sudo nginx -t && sudo systemctl reload nginx
|
|||
|
|
|
|||
|
|
# 4. Reiniciar bot (para aplicar cambios del backend)
|
|||
|
|
echo "🤖 Reiniciando bot..."
|
|||
|
|
pm2 restart amayo
|
|||
|
|
|
|||
|
|
echo "✅ Deploy completado!"
|
|||
|
|
echo "🌐 Frontend: https://docs.amayo.dev"
|
|||
|
|
echo "🌐 Backend: https://api.amayo.dev"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Hacer ejecutable:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
chmod +x deploy.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Ejecutar:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
./deploy.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🧪 Testing Local (Desarrollo)
|
|||
|
|
|
|||
|
|
### Iniciar Backend (Bot)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# En la raíz del proyecto
|
|||
|
|
npm start
|
|||
|
|
# El bot iniciará el servidor en puerto 3000
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Iniciar Frontend
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# En carpeta AmayoWeb
|
|||
|
|
cd AmayoWeb
|
|||
|
|
npm run dev
|
|||
|
|
# Frontend en http://localhost:5173
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
El frontend se conectará automáticamente al backend en `localhost:3000` gracias al proxy de Vite.
|
|||
|
|
|
|||
|
|
## 🔍 Troubleshooting
|
|||
|
|
|
|||
|
|
### Error: "502 Bad Gateway" en api.amayo.dev
|
|||
|
|
|
|||
|
|
**Causa:** El bot no está corriendo o no está en el puerto 3000.
|
|||
|
|
|
|||
|
|
**Solución:**
|
|||
|
|
```bash
|
|||
|
|
# Verificar que el bot esté corriendo
|
|||
|
|
pm2 status
|
|||
|
|
|
|||
|
|
# Verificar el puerto
|
|||
|
|
netstat -tulpn | grep 3000
|
|||
|
|
|
|||
|
|
# Reiniciar el bot
|
|||
|
|
pm2 restart amayo
|
|||
|
|
|
|||
|
|
# Ver logs
|
|||
|
|
pm2 logs amayo
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Error: "404 Not Found" en rutas de Vue
|
|||
|
|
|
|||
|
|
**Causa:** Falta la configuración `try_files` en NGINX.
|
|||
|
|
|
|||
|
|
**Solución:** Asegúrate de que el archivo de configuración tenga:
|
|||
|
|
```nginx
|
|||
|
|
location / {
|
|||
|
|
try_files $uri $uri/ /index.html;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Error: CORS al hacer requests desde el frontend
|
|||
|
|
|
|||
|
|
**Causa:** Headers CORS no configurados correctamente.
|
|||
|
|
|
|||
|
|
**Solución:** Verifica que el archivo `nginx-api.amayo.dev.conf` tenga los headers CORS configurados.
|
|||
|
|
|
|||
|
|
### Frontend muestra valores en 0
|
|||
|
|
|
|||
|
|
**Causa:** El bot no está devolviendo datos o no puede acceder a la instancia del bot.
|
|||
|
|
|
|||
|
|
**Solución:**
|
|||
|
|
1. Verifica que el bot esté conectado a Discord
|
|||
|
|
2. Revisa los endpoints en `src/server/handler.ts`
|
|||
|
|
3. Verifica que `require("../main").bot` funcione correctamente
|
|||
|
|
|
|||
|
|
### Certificados SSL no válidos
|
|||
|
|
|
|||
|
|
**Causa:** Certificados no generados o expirados.
|
|||
|
|
|
|||
|
|
**Solución:**
|
|||
|
|
```bash
|
|||
|
|
# Verificar certificados
|
|||
|
|
sudo certbot certificates
|
|||
|
|
|
|||
|
|
# Renovar
|
|||
|
|
sudo certbot renew
|
|||
|
|
|
|||
|
|
# Reiniciar NGINX
|
|||
|
|
sudo systemctl restart nginx
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📊 Checklist de Deploy
|
|||
|
|
|
|||
|
|
- [ ] Build del frontend completado (`npm run build`)
|
|||
|
|
- [ ] Archivos copiados a `/var/www/docs.amayo.dev`
|
|||
|
|
- [ ] Configuración de NGINX para `docs.amayo.dev` creada y habilitada
|
|||
|
|
- [ ] Configuración de NGINX para `api.amayo.dev` creada y habilitada
|
|||
|
|
- [ ] Certificados SSL configurados para ambos dominios
|
|||
|
|
- [ ] Variables de entorno configuradas en el servidor
|
|||
|
|
- [ ] Bot corriendo en puerto 3000
|
|||
|
|
- [ ] NGINX reiniciado
|
|||
|
|
- [ ] Verificado frontend: `curl https://docs.amayo.dev`
|
|||
|
|
- [ ] Verificado backend: `curl https://api.amayo.dev/api/bot/stats`
|
|||
|
|
- [ ] Probado login con Discord
|
|||
|
|
- [ ] Verificadas estadísticas en vivo
|
|||
|
|
|
|||
|
|
## 🎯 URLs Finales
|
|||
|
|
|
|||
|
|
- 🌐 **Frontend:** https://docs.amayo.dev
|
|||
|
|
- 🔌 **Backend API:** https://api.amayo.dev
|
|||
|
|
- 📊 **Stats:** https://api.amayo.dev/api/bot/stats
|
|||
|
|
- ℹ️ **Info:** https://api.amayo.dev/api/bot/info
|
|||
|
|
|
|||
|
|
## 📝 Notas Importantes
|
|||
|
|
|
|||
|
|
1. **Puerto 3000:** El bot ejecuta el servidor en este puerto desde `main.ts`. No cambiar sin actualizar la configuración.
|
|||
|
|
|
|||
|
|
2. **Separación de Dominios:**
|
|||
|
|
- `docs.amayo.dev` → Archivos estáticos (Vue)
|
|||
|
|
- `api.amayo.dev` → Proxy a Node.js (puerto 3000)
|
|||
|
|
|
|||
|
|
3. **CORS:** El backend acepta requests solo desde `docs.amayo.dev` en producción.
|
|||
|
|
|
|||
|
|
4. **PM2:** Asegúrate de que el bot esté configurado para reiniciarse automáticamente:
|
|||
|
|
```bash
|
|||
|
|
pm2 save
|
|||
|
|
pm2 startup
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
5. **Logs:** Siempre revisa los logs si algo no funciona:
|
|||
|
|
```bash
|
|||
|
|
# Logs del bot
|
|||
|
|
pm2 logs amayo
|
|||
|
|
|
|||
|
|
# Logs de NGINX
|
|||
|
|
sudo tail -f /var/log/nginx/error.log
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**Última actualización:** Noviembre 2025
|