diff --git a/AmayoWeb/.env.example b/AmayoWeb/.env.example index ba7e7fb..5d5cb1d 100644 --- a/AmayoWeb/.env.example +++ b/AmayoWeb/.env.example @@ -2,6 +2,6 @@ VITE_DISCORD_CLIENT_ID=tu_client_id_de_discord # API Backend -# Desarrollo: http://localhost:3001 +# Desarrollo: http://localhost:3000 # Producción: https://api.amayo.dev -VITE_API_URL=http://localhost:3001 +VITE_API_URL=http://localhost:3000 diff --git a/AmayoWeb/DEPLOY_GUIDE.md b/AmayoWeb/DEPLOY_GUIDE.md new file mode 100644 index 0000000..87fd387 --- /dev/null +++ b/AmayoWeb/DEPLOY_GUIDE.md @@ -0,0 +1,354 @@ +# 🚀 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 diff --git a/AmayoWeb/VPS_SETUP_COMMANDS.md b/AmayoWeb/VPS_SETUP_COMMANDS.md new file mode 100644 index 0000000..a5a69d8 --- /dev/null +++ b/AmayoWeb/VPS_SETUP_COMMANDS.md @@ -0,0 +1,340 @@ +# 🎯 Comandos Exactos para el VPS + +## ✅ Ya Tienes Configurado + +``` +✓ Certificado SSL para api.amayo.dev +✓ Certificado SSL para docs.amayo.dev (según tu configuración) +✓ NGINX instalado +``` + +## 📝 Pasos a Seguir + +### 1. Configurar NGINX para docs.amayo.dev (Frontend Vue) + +Editar el archivo de configuración existente: + +```bash +sudo nano /etc/nginx/sites-available/default +``` + +**Reemplazar la configuración de `docs.amayo.dev` con esto:** + +```nginx +server { + listen 80; + listen [::]:80; + server_name docs.amayo.dev; + return 301 https://$host$request_uri; +} + +server { + listen 443 ssl http2; + listen [::]:443 ssl http2; + server_name docs.amayo.dev; + + ssl_certificate /etc/letsencrypt/live/docs.amayo.dev/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/docs.amayo.dev/privkey.pem; + include /etc/letsencrypt/options-ssl-nginx.conf; + ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; + + # IMPORTANTE: Cambiar a archivos estáticos + root /var/www/docs.amayo.dev; + index index.html; + + access_log /var/log/nginx/docs.amayo.dev.access.log; + error_log /var/log/nginx/docs.amayo.dev.error.log; + + # Gzip + gzip on; + gzip_vary on; + gzip_min_length 1024; + gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml+rss application/json application/javascript; + + # SPA fallback + location / { + try_files $uri $uri/ /index.html; + } + + # Cache assets + location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ { + expires 1y; + add_header Cache-Control "public, immutable"; + } + + # Security headers + add_header X-Frame-Options "SAMEORIGIN" always; + add_header X-Content-Type-Options "nosniff" always; + add_header X-XSS-Protection "1; mode=block" always; +} +``` + +### 2. Configurar NGINX para api.amayo.dev (Backend) + +En el mismo archivo o crear uno separado: + +```bash +sudo nano /etc/nginx/sites-available/default +``` + +**Agregar o modificar la sección de `api.amayo.dev`:** + +```nginx +server { + listen 80; + listen [::]:80; + server_name api.amayo.dev; + return 301 https://$host$request_uri; +} + +server { + listen 443 ssl http2; + listen [::]:443 ssl http2; + server_name api.amayo.dev; + + ssl_certificate /etc/letsencrypt/live/api.amayo.dev/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/api.amayo.dev/privkey.pem; + include /etc/letsencrypt/options-ssl-nginx.conf; + ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; + + access_log /var/log/nginx/api.amayo.dev.access.log; + error_log /var/log/nginx/api.amayo.dev.error.log; + + # Proxy al bot en puerto 3000 + location / { + proxy_pass http://127.0.0.1:3000; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_cache_bypass $http_upgrade; + + proxy_connect_timeout 60s; + proxy_send_timeout 60s; + proxy_read_timeout 60s; + } + + # CORS para el frontend + add_header Access-Control-Allow-Origin "https://docs.amayo.dev" always; + add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS" always; + add_header Access-Control-Allow-Headers "Authorization, Content-Type" always; + add_header Access-Control-Allow-Credentials "true" always; + + # Manejar preflight + if ($request_method = 'OPTIONS') { + add_header Access-Control-Allow-Origin "https://docs.amayo.dev" always; + add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS" always; + add_header Access-Control-Allow-Headers "Authorization, Content-Type" always; + add_header Access-Control-Max-Age 1728000; + add_header Content-Type 'text/plain; charset=utf-8'; + add_header Content-Length 0; + return 204; + } + + # Security headers + add_header X-Frame-Options "SAMEORIGIN" always; + add_header X-Content-Type-Options "nosniff" always; + add_header X-XSS-Protection "1; mode=block" always; +} +``` + +### 3. Verificar y Reiniciar NGINX + +```bash +# Verificar sintaxis +sudo nginx -t + +# Si está OK, reiniciar +sudo systemctl restart nginx + +# Ver estado +sudo systemctl status nginx +``` + +### 4. Crear Directorio para el Frontend + +```bash +# Crear directorio +sudo mkdir -p /var/www/docs.amayo.dev + +# Ajustar permisos +sudo chown -R $USER:www-data /var/www/docs.amayo.dev +sudo chmod -R 755 /var/www/docs.amayo.dev +``` + +### 5. Deploy del Frontend (Desde tu PC Local) + +En tu PC con Windows, en la carpeta `AmayoWeb`: + +```powershell +# Build +npm run build + +# El contenido estará en la carpeta dist/ +``` + +**Transferir archivos al VPS:** + +Opción A - Con SCP desde PowerShell: +```powershell +scp -r dist/* shnimlz@tu_ip_servidor:/home/shnimlz/amayo-frontend/ +``` + +Opción B - Con WinSCP o FileZilla (interfaz gráfica) + +**En el VPS, mover los archivos:** + +```bash +# Copiar archivos al directorio web +sudo cp -r /home/shnimlz/amayo-frontend/* /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 +``` + +### 6. Verificar Variables de Entorno del Bot + +En el servidor VPS: + +```bash +cd /ruta/a/tu/proyecto/amayo + +# Editar .env +nano .env +``` + +Asegúrate de tener: + +```env +PORT=3000 +DISCORD_TOKEN=tu_token +# ... resto de tus variables +``` + +### 7. Verificar que el Bot Esté Corriendo + +```bash +# Si usas PM2 +pm2 status + +# Ver logs +pm2 logs amayo + +# Reiniciar si es necesario +pm2 restart amayo + +# Si no usas PM2, verificar el proceso +ps aux | grep node + +# Verificar que esté en el puerto 3000 +netstat -tulpn | grep 3000 +``` + +### 8. Verificar que Todo Funcione + +```bash +# Verificar frontend +curl https://docs.amayo.dev + +# Verificar backend API +curl https://api.amayo.dev/api/bot/stats + +# Ver logs de NGINX +sudo tail -f /var/log/nginx/docs.amayo.dev.access.log +sudo tail -f /var/log/nginx/api.amayo.dev.access.log +``` + +## 🔥 Comando Rápido de Deploy (Crear Script) + +Crear archivo en el servidor: + +```bash +nano ~/deploy-amayo-frontend.sh +``` + +Contenido: + +```bash +#!/bin/bash + +echo "🚀 Deploying Amayo Frontend..." + +# Limpiar directorio +sudo rm -rf /var/www/docs.amayo.dev/* + +# Copiar nuevos archivos (ajusta la ruta según donde subas los archivos) +sudo cp -r /home/shnimlz/amayo-frontend/* /var/www/docs.amayo.dev/ + +# Permisos +sudo chown -R www-data:www-data /var/www/docs.amayo.dev +sudo chmod -R 755 /var/www/docs.amayo.dev + +# Reiniciar NGINX +sudo systemctl reload nginx + +echo "✅ Deploy completado!" +echo "🌐 https://docs.amayo.dev" +``` + +Hacer ejecutable: + +```bash +chmod +x ~/deploy-amayo-frontend.sh +``` + +Usar: + +```bash +./deploy-amayo-frontend.sh +``` + +## 🎯 Resumen de URLs + +| Servicio | URL | Puerto Interno | +|----------|-----|----------------| +| Frontend | https://docs.amayo.dev | Archivos estáticos | +| Backend API | https://api.amayo.dev | → localhost:3000 | + +## 🔍 Troubleshooting Rápido + +### El frontend no carga + +```bash +# Ver logs +sudo tail -f /var/log/nginx/error.log + +# Verificar archivos +ls -la /var/www/docs.amayo.dev/ + +# Verificar NGINX +sudo nginx -t +``` + +### La API no responde (502) + +```bash +# Verificar bot +pm2 status +pm2 logs amayo + +# Verificar puerto +netstat -tulpn | grep 3000 + +# Reiniciar bot +pm2 restart amayo +``` + +### CORS errors + +Verificar que la configuración de NGINX tenga los headers CORS correctos en la sección de `api.amayo.dev`. + +--- + +**Notas:** +- El bot se ejecuta en el puerto **3000** (no 3001) +- El frontend son **archivos estáticos** de Vue +- NGINX hace **proxy** del API al bot en puerto 3000 diff --git a/AmayoWeb/nginx-api.amayo.dev.conf b/AmayoWeb/nginx-api.amayo.dev.conf new file mode 100644 index 0000000..b6c9067 --- /dev/null +++ b/AmayoWeb/nginx-api.amayo.dev.conf @@ -0,0 +1,67 @@ +# Configuración NGINX para api.amayo.dev (Backend Node.js) +# Ubicación: /etc/nginx/sites-available/api.amayo.dev + +server { + listen 80; + listen [::]:80; + server_name api.amayo.dev; + + # Redirigir HTTP a HTTPS + return 301 https://$server_name$request_uri; +} + +server { + listen 443 ssl http2; + listen [::]:443 ssl http2; + server_name api.amayo.dev; + + # Certificados SSL (generados con certbot) + ssl_certificate /etc/letsencrypt/live/api.amayo.dev/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/api.amayo.dev/privkey.pem; + include /etc/letsencrypt/options-ssl-nginx.conf; + ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; + + # Logs + access_log /var/log/nginx/api.amayo.dev.access.log; + error_log /var/log/nginx/api.amayo.dev.error.log; + + # Proxy al servidor Node.js en puerto 3000 (el bot ejecuta server.ts) + location / { + proxy_pass http://127.0.0.1:3000; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_cache_bypass $http_upgrade; + + # Timeouts + proxy_connect_timeout 60s; + proxy_send_timeout 60s; + proxy_read_timeout 60s; + } + + # CORS headers para permitir requests desde el frontend + add_header Access-Control-Allow-Origin "https://docs.amayo.dev" always; + add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS" always; + add_header Access-Control-Allow-Headers "Authorization, Content-Type" always; + add_header Access-Control-Allow-Credentials "true" always; + + # Manejar preflight requests + if ($request_method = 'OPTIONS') { + add_header Access-Control-Allow-Origin "https://docs.amayo.dev" always; + add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS" always; + add_header Access-Control-Allow-Headers "Authorization, Content-Type" always; + add_header Access-Control-Max-Age 1728000; + add_header Content-Type 'text/plain; charset=utf-8'; + add_header Content-Length 0; + return 204; + } + + # Security headers + add_header X-Frame-Options "SAMEORIGIN" always; + add_header X-Content-Type-Options "nosniff" always; + add_header X-XSS-Protection "1; mode=block" always; +} diff --git a/AmayoWeb/nginx-docs.amayo.dev.conf b/AmayoWeb/nginx-docs.amayo.dev.conf new file mode 100644 index 0000000..41f05c5 --- /dev/null +++ b/AmayoWeb/nginx-docs.amayo.dev.conf @@ -0,0 +1,54 @@ +# Configuración NGINX para docs.amayo.dev (Frontend Vue) +# Ubicación: /etc/nginx/sites-available/docs.amayo.dev + +server { + listen 80; + listen [::]:80; + server_name docs.amayo.dev; + + # Redirigir HTTP a HTTPS + return 301 https://$server_name$request_uri; +} + +server { + listen 443 ssl http2; + listen [::]:443 ssl http2; + server_name docs.amayo.dev; + + # Certificados SSL (generados con certbot) + ssl_certificate /etc/letsencrypt/live/docs.amayo.dev/fullchain.pem; # managed by Certbot + ssl_certificate_key /etc/letsencrypt/live/docs.amayo.dev/privkey.pem; # managed by Certbot + include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot + ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot + + # Ruta de archivos estáticos del build de Vue + root /var/www/docs.amayo.dev; + index index.html; + + # Logs + access_log /var/log/nginx/docs.amayo.dev.access.log; + error_log /var/log/nginx/docs.amayo.dev.error.log; + + # Gzip compression + gzip on; + gzip_vary on; + gzip_min_length 1024; + gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml+rss application/json application/javascript; + + # SPA fallback - todas las rutas van a index.html + location / { + try_files $uri $uri/ /index.html; + } + + # Cache para assets estáticos + location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ { + expires 1y; + add_header Cache-Control "public, immutable"; + } + + # Security headers + add_header X-Frame-Options "SAMEORIGIN" always; + add_header X-Content-Type-Options "nosniff" always; + add_header X-XSS-Protection "1; mode=block" always; + add_header Referrer-Policy "strict-origin-when-cross-origin" always; +} diff --git a/AmayoWeb/src/services/auth.js b/AmayoWeb/src/services/auth.js index ef08d0f..5318863 100644 --- a/AmayoWeb/src/services/auth.js +++ b/AmayoWeb/src/services/auth.js @@ -2,7 +2,7 @@ import axios from 'axios' const API_URL = import.meta.env.PROD ? 'https://api.amayo.dev/api' - : 'http://localhost:3001/api' + : 'http://localhost:3000/api' export const authService = { // Redirigir al usuario a Discord OAuth2 diff --git a/AmayoWeb/src/services/bot.js b/AmayoWeb/src/services/bot.js index 835bd79..5e38873 100644 --- a/AmayoWeb/src/services/bot.js +++ b/AmayoWeb/src/services/bot.js @@ -2,7 +2,7 @@ import axios from 'axios' const API_URL = import.meta.env.PROD ? 'https://api.amayo.dev' - : 'http://localhost:3001' + : 'http://localhost:3000' export const botService = { // Obtener estadísticas del bot diff --git a/AmayoWeb/vite.config.js b/AmayoWeb/vite.config.js index 1bef15c..0b1ed13 100644 --- a/AmayoWeb/vite.config.js +++ b/AmayoWeb/vite.config.js @@ -32,7 +32,7 @@ export default defineConfig({ port: 5173, proxy: { '/api': { - target: 'http://localhost:3001', + target: 'http://localhost:3000', changeOrigin: true, } } diff --git a/src/main.ts b/src/main.ts index 9a8b61d..6fb9668 100644 --- a/src/main.ts +++ b/src/main.ts @@ -191,10 +191,11 @@ process.on("SIGTERM", gracefulShutdown); async function bootstrap() { logger.info("🚀 Iniciando bot..."); - await server.listen(process.env.PORT || 3000, () => { - logger.info( - `📘 Amayo Docs disponible en http://localhost:${process.env.PORT || 3000}` - ); + const apiPort = process.env.API_PORT || process.env.PORT || 3000; + await server.listen(apiPort, () => { + logger.info(`📘 Amayo API disponible en http://localhost:${apiPort}`); + logger.info(`🌐 Production API URL: https://api.amayo.dev`); + logger.info(`📝 Frontend URL: https://docs.amayo.dev`); }); // Cargar recursos locales (no deberían tirar el proceso si fallan) try { diff --git a/src/server/server.ts b/src/server/server.ts index a432dab..9178ef6 100644 --- a/src/server/server.ts +++ b/src/server/server.ts @@ -2,12 +2,14 @@ import { createServer } from "node:http"; import { handler } from "./handler"; // Servidor API para api.amayo.dev -const PORT = parseInt(process.env.API_PORT || "3001", 10); +// Este servidor se inicia desde main.ts con el bot +// En producción debe correr en el puerto configurado (default 3000) +const PORT = parseInt(process.env.API_PORT || process.env.PORT || "3000", 10); const HOST = process.env.API_HOST || "0.0.0.0"; export const server = createServer((req, res) => handler(req, res)); -// Iniciar servidor solo si este archivo se ejecuta directamente +// Iniciar servidor solo si este archivo se ejecuta directamente (modo standalone) if (require.main === module) { server.listen(PORT, HOST, () => { console.log(`🚀 API Server running on http://${HOST}:${PORT}`);