Compare commits

...
2 Commits
Author SHA1 Message Date
Eric WagonerandClaude Opus 5.5 6572a1ad92 The hosting line says what it promises: chipping in unlocks nothing, and nothing is held back without it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MbtUPJ24P6vc6tE1x6RS3m
2026-10-13 09:23:44 -04:00
Eric WagonerandClaude Fable 5.1 30abb71e26 The nightly rollup and backup say by their exit status whether they managed, and the deploy leaves the cron file off a host the hall schedules
On the shared host the hall's hall-nightly.sh (game-kit, gamehall/ops) runs
both scripts for every game and checks in with Sentry Crons once for all,
so this game's own check-in files are absent there and its exit status is
the word. A box of its own keeps its cron and check-ins as before.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-12 10:07:05 -04:00
4 changed files with 16 additions and 5 deletions

No files matched your search

+5 -1
View File
@@ -43,7 +43,11 @@ ssh "root@$HOST" '
install -m 755 /opt/waving-hands/app/deploy/pulse.sh /usr/local/bin/waving-hands-pulse.sh install -m 755 /opt/waving-hands/app/deploy/pulse.sh /usr/local/bin/waving-hands-pulse.sh
install -m 755 /opt/waving-hands/app/deploy/waving-hands-rollup.sh /usr/local/bin/waving-hands-rollup.sh install -m 755 /opt/waving-hands/app/deploy/waving-hands-rollup.sh /usr/local/bin/waving-hands-rollup.sh
install -m 755 /opt/waving-hands/app/deploy/waving-hands-backup.sh /usr/local/bin/waving-hands-backup.sh install -m 755 /opt/waving-hands/app/deploy/waving-hands-backup.sh /usr/local/bin/waving-hands-backup.sh
install -m 644 /opt/waving-hands/app/deploy/waving-hands.cron /etc/cron.d/waving-hands # On a host the hall shares, its hall-nightly.sh runs the rollup and backup
# of every game and checks in with Sentry once for all; a game on a box of
# its own schedules its own.
if [ -f /etc/cron.d/gamehall ]; then rm -f /etc/cron.d/waving-hands
else install -m 644 /opt/waving-hands/app/deploy/waving-hands.cron /etc/cron.d/waving-hands; fi
mkdir -p /var/log/waving-hands mkdir -p /var/log/waving-hands
systemctl daemon-reload systemctl daemon-reload
systemctl enable --now waving-hands systemctl enable --now waving-hands
+6 -1
View File
@@ -5,6 +5,8 @@
# Ledgers are append-only JSONL; the duel server never needs stopping. # Ledgers are append-only JSONL; the duel server never needs stopping.
# Sentry Crons check-in: /root/.waving-hands-sentry-cron holds the check-in # Sentry Crons check-in: /root/.waving-hands-sentry-cron holds the check-in
# URL (absent file = no check-ins). SCHEDULE must match /etc/cron.d/waving-hands. # URL (absent file = no check-ins). SCHEDULE must match /etc/cron.d/waving-hands.
# On a host the hall shares, hall-nightly.sh runs this and checks in once
# for every game, so the file is absent and the exit status is the word.
set -u set -u
SCHEDULE="23 7 * * *" SCHEDULE="23 7 * * *"
BUCKET="kestrel-wizwar-backups" BUCKET="kestrel-wizwar-backups"
@@ -27,9 +29,10 @@ checkin() {
if [ ! -s /root/.config/rclone/rclone.conf ]; then if [ ! -s /root/.config/rclone/rclone.conf ]; then
echo "$(date -Is) skipped: rclone is not configured" >> "$LOG" echo "$(date -Is) skipped: rclone is not configured" >> "$LOG"
exit 0 exit 1
fi fi
status=0
{ {
echo "=== $(date -Is) backup start" echo "=== $(date -Is) backup start"
if rclone sync "$SRC" "spaces:$BUCKET/$PREFIX/current" --exclude 'rollup.jsonl' 2>&1 && if rclone sync "$SRC" "spaces:$BUCKET/$PREFIX/current" --exclude 'rollup.jsonl' 2>&1 &&
@@ -37,6 +40,7 @@ fi
checkin ok checkin ok
else else
checkin error checkin error
status=1
fi fi
CUTOFF=$(date -d "90 days ago" +%Y-%m-%d) CUTOFF=$(date -d "90 days ago" +%Y-%m-%d)
rclone lsf "spaces:$BUCKET/$PREFIX/snapshots/" --dirs-only 2>/dev/null | \ rclone lsf "spaces:$BUCKET/$PREFIX/snapshots/" --dirs-only 2>/dev/null | \
@@ -49,3 +53,4 @@ fi
done done
echo "=== $(date -Is) backup done" echo "=== $(date -Is) backup done"
} >> "$LOG" 2>&1 } >> "$LOG" 2>&1
exit $status
+4 -2
View File
@@ -8,7 +8,9 @@
# Cron: /etc/cron.d/waving-hands, installed by deploy.sh; SCHEDULE below # Cron: /etc/cron.d/waving-hands, installed by deploy.sh; SCHEDULE below
# must match it, because the Sentry monitor is told the same shape. # must match it, because the Sentry monitor is told the same shape.
# Sentry Crons check-in: /root/.waving-hands-sentry-cron-rollup holds the # Sentry Crons check-in: /root/.waving-hands-sentry-cron-rollup holds the
# check-in URL (absent = no check-ins). # check-in URL (absent = no check-ins). On a host the hall shares,
# hall-nightly.sh runs this and checks in once for every game, so the
# file is absent and the exit status is the word.
set -u set -u
OUT="/var/lib/waving-hands/rollup.jsonl" OUT="/var/lib/waving-hands/rollup.jsonl"
LOG="/var/log/waving-hands/rollup.log" LOG="/var/log/waving-hands/rollup.log"
@@ -78,4 +80,4 @@ with open(out + ".tmp", "w") as fh:
os.replace(out + ".tmp", out) os.replace(out + ".tmp", out)
print("%s rolled: %d people, %d requests, %d rooms" % (day, len(t["addresses"]), t["human"], created)) print("%s rolled: %d people, %d requests, %d rooms" % (day, len(t["addresses"]), t["human"], created))
PY PY
then checkin ok; else checkin error; fi then checkin ok; else checkin error; exit 1; fi
+1 -1
View File
@@ -347,7 +347,7 @@
{/if} {/if}
<p class="hosting"> <p class="hosting">
The games of Kestrel's Hall are free and will stay free. They run on small servers that cost a few dollars a month, and anyone who wants to chip in toward the hosting can do so at The games of Kestrel's Hall are free and will stay free. They run on small servers that cost a few dollars a month, and anyone who wants to chip in toward the hosting can do so at
<a href="https://ko-fi.com/kestrelsnest" target="_blank" rel="noreferrer">ko-fi.com/kestrelsnest</a>. Every game stays whole either way. <a href="https://ko-fi.com/kestrelsnest" target="_blank" rel="noreferrer">ko-fi.com/kestrelsnest</a>. Chipping in unlocks nothing, and nothing is held back without it.
</p> </p>
<p class="made">Waving Hands is Richard Bartle's, 1977.</p> <p class="made">Waving Hands is Richard Bartle's, 1977.</p>
</div> </div>