#!/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 set -euo pipefail HOST="${1:?usage: gamehall/deploy.sh }" 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."