Organizar archivos de deployment en carpeta deploy/
This commit is contained in:
106
deploy/NGINX-CONFIG.md
Normal file
106
deploy/NGINX-CONFIG.md
Normal file
@@ -0,0 +1,106 @@
|
||||
# Configuración de Nginx para SnatchGame
|
||||
|
||||
Este documento explica cómo configurar Nginx Proxy Manager para que el juego SnatchGame funcione correctamente con todos sus componentes.
|
||||
|
||||
## Arquitectura del Sistema
|
||||
|
||||
El juego está dockerizado en un solo contenedor que ejecuta dos servicios:
|
||||
- **Frontend (Vue.js)**: Puerto 3000 interno
|
||||
- **Backend (Colyseus)**: Puerto 2567 interno
|
||||
|
||||
El contenedor está conectado a la red `principal` de Docker sin exponer puertos al host.
|
||||
|
||||
## Configuración en Nginx Proxy Manager
|
||||
|
||||
### 1. Proxy Host Principal
|
||||
|
||||
**Configuración básica:**
|
||||
- **Domain Names:** `snatchgame.nucleoriofrio.com`
|
||||
- **Forward Hostname/IP:** `snatchgame`
|
||||
- **Forward Port:** `3000`
|
||||
- **Cache Assets:** ON
|
||||
- **Block Common Exploits:** ON
|
||||
- **Websockets Support:** ON
|
||||
|
||||
### 2. Custom Locations (Advanced Tab)
|
||||
|
||||
#### Location: `/api`
|
||||
- **Forward to:** `http://snatchgame:2567/api`
|
||||
- **Websockets Support:** OFF
|
||||
|
||||
#### Location: `/ws`
|
||||
- **Forward to:** `http://snatchgame:2567`
|
||||
- **Websockets Support:** ON
|
||||
|
||||
#### Location: `/colyseus` (Opcional - Monitor)
|
||||
- **Forward to:** `http://snatchgame:2567/colyseus`
|
||||
- **Websockets Support:** OFF
|
||||
|
||||
### 3. Custom Nginx Configuration
|
||||
|
||||
Para que el dashboard SSE funcione correctamente, agregar en **Advanced → Custom Nginx Configuration:**
|
||||
|
||||
```nginx
|
||||
location /api/dashboard-stream {
|
||||
proxy_pass http://snatchgame:2567/api/dashboard-stream;
|
||||
proxy_set_header Host $http_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;
|
||||
|
||||
# Headers específicos para SSE
|
||||
proxy_buffering off;
|
||||
proxy_cache off;
|
||||
proxy_read_timeout 24h;
|
||||
proxy_http_version 1.1;
|
||||
}
|
||||
```
|
||||
|
||||
### 4. SSL Configuration
|
||||
|
||||
- **SSL Certificate:** Request new Let's Encrypt
|
||||
- **Force SSL:** ON
|
||||
- **HTTP/2 Support:** ON
|
||||
|
||||
## Rutas Resultantes
|
||||
|
||||
Una vez configurado, las siguientes rutas estarán disponibles:
|
||||
|
||||
| Ruta | Destino | Propósito |
|
||||
|------|---------|-----------|
|
||||
| `https://snatchgame.nucleoriofrio.com/` | `snatchgame:3000` | Frontend principal (Vue.js) |
|
||||
| `https://snatchgame.nucleoriofrio.com/api/*` | `snatchgame:2567/api/*` | API REST del backend |
|
||||
| `https://snatchgame.nucleoriofrio.com/ws` | `snatchgame:2567` | WebSocket de Colyseus |
|
||||
| `https://snatchgame.nucleoriofrio.com/api/dashboard-stream` | `snatchgame:2567/api/dashboard-stream` | Server-Sent Events para dashboard |
|
||||
| `https://snatchgame.nucleoriofrio.com/colyseus` | `snatchgame:2567/colyseus` | Monitor de Colyseus |
|
||||
|
||||
## Configuración del Cliente
|
||||
|
||||
El cliente (frontend) está configurado para usar estas rutas automáticamente:
|
||||
|
||||
- **WebSocket:** `wss://snatchgame.nucleoriofrio.com/ws`
|
||||
- **API:** `https://snatchgame.nucleoriofrio.com/api`
|
||||
- **SSE Dashboard:** `https://snatchgame.nucleoriofrio.com/api/dashboard-stream`
|
||||
|
||||
## Problemas Comunes y Soluciones
|
||||
|
||||
### Dashboard SSE no funciona
|
||||
**Síntoma:** Error "MIME type text/html instead of text/event-stream"
|
||||
**Solución:** Verificar que la configuración custom nginx para `/api/dashboard-stream` esté presente con `proxy_buffering off`
|
||||
|
||||
### WebSocket no conecta
|
||||
**Síntoma:** Error de conexión WebSocket
|
||||
**Solución:** Verificar que "Websockets Support" esté habilitado en la location `/ws`
|
||||
|
||||
### API calls fallan
|
||||
**Síntoma:** Errores 404 o 502 en calls de API
|
||||
**Solución:** Verificar que la location `/api` esté configurada correctamente apuntando a `snatchgame:2567/api`
|
||||
|
||||
## Despliegue Automático
|
||||
|
||||
El sistema utiliza Gitea Actions para CI/CD:
|
||||
1. Build de imagen Docker única
|
||||
2. Deploy automático en contenedor `snatchgame` en red `principal`
|
||||
3. Nginx proxy maneja el routing automáticamente
|
||||
|
||||
No se requiere reiniciar nginx tras deploys, solo el contenedor se actualiza.
|
||||
Reference in New Issue
Block a user