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.

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:

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

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.

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