You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

69 lines
3.2 KiB

# Juegoland: despliegue nativo
Debian 12 en 192.168.18.155, Node.js 24, PostgreSQL 15 y systemd, sin contenedores.
## Acceso
Un único proceso ejecuta SvelteKit, API y Socket.IO en **0.0.0.0:3000**.
Acceso local: **http://192.168.18.155:3000**.
Tu proxy Nginx existente debe apuntar a **http://192.168.18.155:3000**, conservando las rutas y Upgrade/Connection para WebSocket.
El origen público es **https://juegoland.imaginacion.com**.
No hay proxy adicional en la VM: Nginx y el antiguo servicio mesa-web quedan deshabilitados.
El ejemplo deploy/external-nginx.conf.example pertenece al proxy de la red; no se instala en esta VM.
Las cookies son Secure por el dominio HTTPS. Solo el origen HTTP local explícito permite cookies para pruebas en la LAN.
PostgreSQL continúa en 127.0.0.1:5432. La configuración no confía en encabezados de IP enviados por clientes.
## Actualizar
Desde PowerShell:
```powershell
./deploy/deploy-native.ps1 -Release 20261004-04 -Activate
```
Usa una versión nueva en cada actualización. El script transfiere solo fuentes y recursos; no incluye datos locales ni secretos.
Comprueba tipos, pruebas y compilación en Linux antes de activar.
La activación guarda configuración y copia de la base antes de migrar, conserva credenciales, cambia current y reinicia mesa-game.
APT fuerza IPv4. npm usa la dirección IPv4 local persistida para el usuario mesa.
## Servicios y datos
Servicio mesa-game: Node server/production.mjs, usuario mesa.
Base mesa_abierta y rol mesa_app sin privilegios administrativos.
Secretos de aplicación y copias en /etc/mesa-abierta/game.env y backup.env, 0640 root:mesa. No se imprimen ni se copian al repositorio.
Las partidas y usuarios de desarrollo no se importan.
```sh
systemctl is-active mesa-game postgresql mesa-backup.timer
curl -4 --fail http://127.0.0.1:3000/api/health
journalctl -u mesa-game --since '10 minutes ago'
```
## Prueba de producción
El script usa exclusivamente identidades y partidas sintéticas. Comprueba catálogo, aceptación, cookies, dos clientes WebSocket, chat, turno, resultado e inactividad.
Después del reinicio comprueba persistencia y elimina solo sus propios registros.
```sh
cd /opt/mesa-abierta/current
runuser -u mesa -- node --env-file=/etc/mesa-abierta/game.env deploy/smoke-production.mjs
systemctl restart mesa-game
runuser -u mesa -- node --env-file=/etc/mesa-abierta/game.env deploy/smoke-production.mjs verify-restart
```
Para comprobar también el acceso local, añade SMOKE_ORIGIN=http://192.168.18.155:3000 mediante env antes de node en ambas ejecuciones.
## Copias y recuperación
mesa-backup.timer: copia diaria a las 03:15 Europe/Madrid, con hasta cinco minutos de variación.
Los archivos pg_dump están en /var/backups/mesa-abierta y se comprueban con pg_restore.
Las copias permanecen en la VM; no se borran automáticamente.
Versiones previas y configuración se conservan en releases y config-<version>.
Para volver de una versión con servidor combinado a otra anterior con el mismo servidor, restaura current y reinicia mesa-game.
Para volver a versiones 01–03, restaura también game.env y las unidades guardadas: utilizaban dos servicios y loopback.
Cambiar current no revierte migraciones de datos.

Powered by TurnKey Linux.