Wiz-War lives on the shared hall host: its scripts, skills and docs name it

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
This commit is contained in:
Eric Wagoner
2026-09-29 12:52:36 -04:00
co-authored by Claude Opus 5.5
parent 56ea593e07
commit 397c68a1c8
8 changed files with 18 additions and 16 deletions
+6 -4
View File
@@ -7,16 +7,18 @@ survive deploys and reboots.
## Current production
- Droplet: `wizwar` (nyc3, s-1vcpu-1gb, tag `wizwar`), IP 104.236.96.198
- Host: `hall` (nyc3, tag `kestrels-hall`), IP 159.203.115.252, shared with
the other games of Kestrel's Hall since 2026-09-29; Wiz-War keeps its own
service user, port 8787, site file and access log there.
- URLs: https://wizwar.kestrelsnest.social
and https://wizwar.104.236.96.198.sslip.io (always works, zero DNS).
and https://wizwar.159.203.115.252.sslip.io (always works, zero DNS).
Caddy serves both; NOTE: kestrelsnest.social's authoritative DNS is at
HOVER (ns1/ns2.hover.com), not DigitalOcean — records must be added there.
A matching record also sits in the DO zone in case nameservers ever move.
## Everyday deploys
deploy/deploy.sh 104.236.96.198
deploy/deploy.sh 159.203.115.252
Builds the client locally, rsyncs the repo (minus node_modules, data/, .git,
research), installs dependencies on the droplet, and restarts the service.
@@ -25,7 +27,7 @@ automatically.
Before any deploy that touches the engine, run the determinism gate:
deploy/verify-ledgers.sh 104.236.96.198
deploy/verify-ledgers.sh 159.203.115.252
It fetches every production ledger and strictly replays it against the local
engine; a single refused command fails the check. A room whose ledger no
+1 -1
View File
@@ -3,7 +3,7 @@
# to a local folder, and write a digest beside them for reading.
# deploy/pull-feedback.sh [host] [folder] (default ~/Desktop/wizwar-reports)
set -euo pipefail
HOST="${1:-104.236.96.198}"
HOST="${1:-159.203.115.252}"
OUT="${2:-$HOME/Desktop/wizwar-reports}"
mkdir -p "$OUT/images"
scp -q "root@$HOST:/var/lib/wizwar/feedback.jsonl" "$OUT/feedback.jsonl"
+1 -1
View File
@@ -3,7 +3,7 @@
# replay it against the LOCAL engine. Any refused command is a hard failure.
# Run from the repo root before deploying any engine change.
set -euo pipefail
HOST="${1:-104.236.96.198}"
HOST="${1:-159.203.115.252}"
TMP=$(mktemp -d)
trap 'rm -rf "$TMP"' EXIT
scp -q "root@$HOST:/var/lib/wizwar/rooms/*.jsonl" "$TMP/"
+1 -1
View File
@@ -74,7 +74,7 @@ for f in sorted(glob.glob("/var/lib/caddy/wizwar-access*.log*")):
ref = " ".join(h.get("Referer", [""]))
m = re.match(r"https?://([^/]+)", ref)
host = m.group(1) if m else ""
ours = host.endswith("kestrelsnest.social") or "104.236.96.198" in host
ours = host.endswith("kestrelsnest.social") or "159.203.115.252" in host
# Scanners forge referrers on paths like /.env, and the app answers
# unknown paths with the page itself, so the status cannot tell a
# probe from a reader. Only the pages count.