From 0bd3e2255f83e41360a1088760b985f807479e1c Mon Sep 17 00:00:00 2001 From: Andrea Manzi Date: Sat, 31 Oct 2026 16:21:56 +0100 Subject: [PATCH] =?UTF-8?q?Il=20gioco=20sta=20solo=20sul=20VPS:=20make=20d?= =?UTF-8?q?eploy=20spedisce=20dritto=20l=C3=AC=20e=20controlla=20la=20vers?= =?UTF-8?q?ione=20sull'indirizzo=20pubblico;=20tolti=20deploy-vps=20e=20la?= =?UTF-8?q?=20copia=20di=20home-server=20(Andrea)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T --- Makefile | 24 ++++++------------------ docker-compose.homeserver.yml | 2 +- docs/STATO.md | 8 ++++---- 3 files changed, 11 insertions(+), 23 deletions(-) diff --git a/Makefile b/Makefile index b99b7d5..b649962 100644 --- a/Makefile +++ b/Makefile @@ -24,7 +24,7 @@ CROP ?= COLORS ?= 64 .PHONY: help serve open test browser verify check-public bump voci voci-elenco sfondi sfondi-genera sfondi-confronto background character \ - build up down restart logs ps shell image-size deploy deploy-vps deploy-logs clean distclean + build up down restart logs ps shell image-size deploy deploy-logs clean distclean ## ------------------------------------------------------------ sviluppo @@ -124,9 +124,7 @@ image-size: ## Dimensione dell'immagine # Host e indirizzo stanno in deploy.local.mk, fuori da git, per esempio: # DEPLOY_HOST = root@mio-server # DEPLOY_URL = https://gioco.esempio -# VPS_URL = https://gioco.esempio (make deploy-vps controlla lì la versione pubblicata) -# VPS_HOST = mio-vps (facoltativo: una seconda copia, con make deploy-vps) -# VPS_DIR = docker/leggenda-regolo +# DEPLOY_DIR = docker/leggenda-regolo (la cartella del compose sul server) -include deploy.local.mk DEPLOY_DIR ?= /root/leggenda-regolo DEPLOY_TMP := $(shell mktemp -d -u /tmp/regolo-deploy.XXXXXX) @@ -152,22 +150,12 @@ deploy: ## Pubblica l'ultimo commit: test, immagine costruita e provata qui, spe @# Sul server il prune toglie l'immagine vecchia; qui restano solo latest e quella appena pubblicata. @docker image ls $(IMAGE) --format '{{.Tag}}' | grep -v -x -e latest -e $$(git rev-parse --short HEAD) | \ xargs -r -I{} docker image rm -f $(IMAGE):{} >/dev/null + @# L'indirizzo pubblico deve servire la versione appena spedita. + @v=$$(grep -o "VERSION = '[^']*'" src/version.js); \ + for i in 1 2 3 4 5; do curl -s $(DEPLOY_URL)/src/version.js | grep -qF "$$v" && break; sleep 2; done; \ + curl -s $(DEPLOY_URL)/src/version.js | grep -qF "$$v" || { echo "$(DEPLOY_URL) non serve $$v"; exit 1; } @echo "→ $(DEPLOY_URL) ($$(git log -1 --format='%h %s'))" -deploy-vps: ## Spedisce al VPS (VPS_HOST, VPS_DIR in deploy.local.mk) l'immagine dell'ultimo commit già provata da make deploy - @test -n "$(VPS_HOST)" -a -n "$(VPS_DIR)" || { echo "mancano VPS_HOST e VPS_DIR: scrivili in deploy.local.mk"; exit 2; } - @docker image inspect $(IMAGE):$$(git rev-parse --short HEAD) >/dev/null 2>&1 || \ - { echo "manca l'immagine dell'ultimo commit ($$(git rev-parse --short HEAD)): prima make deploy"; exit 1; } - ssh $(VPS_HOST) 'mkdir -p $(VPS_DIR)' - git show HEAD:docker-compose.homeserver.yml | ssh $(VPS_HOST) 'cat > $(VPS_DIR)/docker-compose.yml' - docker save $(IMAGE):$$(git rev-parse --short HEAD) $(IMAGE):latest | gzip | \ - ssh $(VPS_HOST) 'gunzip | docker load -q && cd $(VPS_DIR) && docker compose up -d && docker image prune -f >/dev/null' - @ssh $(VPS_HOST) "docker exec $(IMAGE) grep -o \"VERSION = '[^']*'\" /usr/share/nginx/html/src/version.js" | sed 's/^/→ $(VPS_HOST): /' - @# L'indirizzo pubblico (VPS_URL), se c'è: deve servire la versione appena spedita. - @test -z "$(VPS_URL)" || { v=$$(grep -o "VERSION = '[^']*'" src/version.js); \ - for i in 1 2 3 4 5; do curl -s $(VPS_URL)/src/version.js | grep -qF "$$v" && break; sleep 2; done; \ - curl -s $(VPS_URL)/src/version.js | grep -qF "$$v" && echo "→ $(VPS_URL): $$v" || { echo "$(VPS_URL) non serve $$v"; exit 1; }; } - deploy-logs: ## Log del container sul server di deploy @test -n "$(DEPLOY_HOST)" || { echo "manca DEPLOY_HOST: scrivilo in deploy.local.mk"; exit 2; } ssh $(DEPLOY_HOST) 'cd $(DEPLOY_DIR) && docker compose logs -f --tail 50' diff --git a/docker-compose.homeserver.yml b/docker-compose.homeserver.yml index a7fff47..516cd3e 100644 --- a/docker-compose.homeserver.yml +++ b/docker-compose.homeserver.yml @@ -1,5 +1,5 @@ # Deploy dietro un reverse proxy (make deploy): l'immagine arriva già costruita dal PC (docker load), niente porte esposte, il container sta sulla rete esterna nginx-net, -# dove l'NPM interno di home-server lo pubblica col suo nome (50037.manzolo.it → leggenda-regolo:80). +# dove Nginx Proxy Manager del VPS lo pubblica col suo nome (50037.manzolo.it → leggenda-regolo:80). services: leggenda-regolo: image: leggenda-regolo:latest diff --git a/docs/STATO.md b/docs/STATO.md index 1e94d55..5344db4 100644 --- a/docs/STATO.md +++ b/docs/STATO.md @@ -236,9 +236,9 @@ Online su 50037.manzolo.it tutto fino agli effetti ambientali di Codex. Aperto, **Si gioca** in Docker su http://localhost:8080 (`make up`; Manzolo Rush è stato fermato per liberare la porta) e, **online dal 2026-10-23**, su https://50037.manzolo.it (50037 è il CAP di San Piero), finché non va su GitHub Pages. Dal 2026-10-31 il sito pubblico è sul **VPS Contabo** (CNAME `50037` → `vps.manzolo.it`, NPM del VPS col certificato -Let's Encrypt → container `leggenda-regolo`). Si aggiorna con `make deploy` (test, immagine costruita e provata sul PC, -spedita alla copia di scorta su home-server) e poi `make deploy-vps` (la stessa immagine sul VPS, e il controllo che -https://50037.manzolo.it serva la versione nuova). +Let's Encrypt → container `leggenda-regolo`); la copia su home-server è stata tolta. Si aggiorna con `make deploy`: +test, immagine costruita e provata sul PC, spedita al VPS, e il controllo che https://50037.manzolo.it serva la +versione nuova. - **Motore** (`src/engine/`): camminata con percorsi su aree concave, profondità, sette verbi + clic intelligente, clic destro / pressione lunga = guarda, inventario con "usa… con" e "dai… a", dialoghi a scelte (anche una @@ -391,7 +391,7 @@ I prompt fissi (stile, scene, foglio sprite) sono in `prompts/STILE.md`, escluso - La salita dei cipressi (foto di Andrea, 28 ottobre, sfondo di Codex): la strada bianca fra la casa del maestro Bacci (alle spalle) e il viale dei cipressi (lassù spuntano i cipressi). Nome provvisorio, battute provvisorie. - Il gioco pubblico sta sul VPS Contabo (dal 31 ottobre: regola in NPM del VPS, DNS spostato su Aruba, certificato - Let's Encrypt); home-server resta come copia di scorta. + Let's Encrypt); la copia su home-server è stata tolta (Andrea: «la tengo fuori e basta»). - Via Pietro Cipriani (fra Piazza e campeggio): Cinema Taiuti aperto con la locandina del Rattattù 2007 (stile da `assets/raw/riferimenti/rattattu-locandina.png`, scaletta illeggibile). Al campo da basket del Circolo, «Fai due tiri» (`src/engine/basket.js`, vista di lato, sfondo e sprite di Andrea col pallone da Codex): da solo, dieci palloni, a ogni