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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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.