Files
game-kit/gamehall/deploy.sh
T
Eric WagonerandClaude Opus 5.5 1dbf5763e1 The hall counts its visitors: a digest, a nightly rollup, and the games it sends people to
gamehall/ops holds the traffic counter, the visitors digest and the
nightly rollup, installed by gamehall/deploy.sh; the gamehall-visitors
skill reads them. The hall now sends its origin as referrer, so a game
can tell who came from it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
2026-09-26 12:41:55 -04:00

30 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
# Publish Kestrel's Hall to the shared host: the page to /opt/gamehall and
# its Caddy site file beside the games'. Usage: gamehall/deploy.sh <host>
set -euo pipefail
HOST="${1:?usage: gamehall/deploy.sh <host>}"
HERE="$(cd "$(dirname "$0")" && pwd)"
rsync -az --delete "$HERE/site/" "root@$HOST:/opt/gamehall/"
scp -q "$HERE/gamehall.caddy" "root@$HOST:/etc/caddy/sites/gamehall.caddy"
rsync -az "$HERE/ops/" "root@$HOST:/tmp/gamehall-ops/"
ssh "root@$HOST" '
set -e
chown -R root:caddy /opt/gamehall
chmod -R g+rX /opt/gamehall
# Validating as root would create the access log as root; Caddy runs as caddy and must own it.
touch /var/lib/caddy/gamehall-access.log
chown caddy:caddy /var/lib/caddy/gamehall-access.log
caddy validate --config /etc/caddy/Caddyfile --adapter caddyfile >/dev/null 2>&1
chown caddy:caddy /var/lib/caddy/gamehall-access.log
systemctl reload caddy
# The counting tools: installed on every publish so the live copies are the repo copies.
install -m 755 /tmp/gamehall-ops/gamehall-visitors.sh /usr/local/bin/gamehall-visitors.sh
install -m 755 /tmp/gamehall-ops/gamehall-rollup.sh /usr/local/bin/gamehall-rollup.sh
install -m 644 -D /tmp/gamehall-ops/traffic.py /usr/local/lib/gamehall/traffic.py
install -m 644 /tmp/gamehall-ops/gamehall.cron /etc/cron.d/gamehall
mkdir -p /var/lib/gamehall /var/log/gamehall
rm -r /tmp/gamehall-ops
'
echo "published."