Files
game-kit/gamehall/deploy.sh
T

33 lines
1.6 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
# The hall-wide notice every game serves at /hall/announcement.json.
install -m 755 /tmp/gamehall-ops/hall-announce.sh /usr/local/bin/hall-announce
install -d -m 755 /var/lib/hall
mkdir -p /var/lib/gamehall /var/log/gamehall
rm -r /tmp/gamehall-ops
'
echo "published."