#!/usr/bin/env bash # Adds the duel server to a droplet that setup-droplet.sh already prepared. # Copy this script and Caddyfile.tmpl to the droplet and run ON the droplet # as root; safe to run again. Installs Node 22, creates the service user and # data directory, and teaches Caddy to hand /api and /ws to the server while # it keeps serving the static site itself. set -euo pipefail if ! command -v node >/dev/null || [[ "$(node -v)" != v22* ]]; then curl -fsSL https://deb.nodesource.com/setup_22.x | bash - apt-get install -qy nodejs fi id -u waving-hands &>/dev/null || useradd -r -m -d /opt/waving-hands-home waving-hands mkdir -p /opt/waving-hands/app /var/lib/waving-hands/rooms chown -R waving-hands:waving-hands /var/lib/waving-hands # Caddy: rewrite the site's configuration from the template, keeping its # address line, so the duel server's paths are routed before the files. HOST_LINE=$(head -1 /etc/caddy/Caddyfile) sed "s|__HOST__|$HOST_LINE|" "$(dirname "$0")/Caddyfile.tmpl" > /etc/caddy/Caddyfile caddy validate --config /etc/caddy/Caddyfile systemctl reload caddy echo "server prerequisites ready: now run deploy/deploy.sh from your machine"