#!/usr/bin/env bash
# Install this repository as an independent Hetzner service behind Caddy.
# Run as root from the checked-out repository with RKT_DOMAIN set.
set -euo pipefail

: "${RKT_DOMAIN:?Set RKT_DOMAIN, e.g. tracker.example.com}"

APP_DIR=/opt/roaring-kitty-tracker
APP_USER=rkt
REPO_DIR="$(cd "$(dirname "$0")/.." && pwd)"

if [ "$(id -u)" -ne 0 ]; then
  echo "Run this installer as root."
  exit 1
fi

apt-get update
apt-get install -y caddy git python3 python3-venv python3-pip

if ! id -u "$APP_USER" >/dev/null 2>&1; then
  useradd --system --create-home --home-dir "$APP_DIR" --shell /usr/sbin/nologin "$APP_USER"
fi

mkdir -p "$APP_DIR"
cp -a "$REPO_DIR/." "$APP_DIR/"
rm -rf "$APP_DIR/.git" "$APP_DIR/.venv"
python3 -m venv "$APP_DIR/.venv"
"$APP_DIR/.venv/bin/pip" install --upgrade pip
"$APP_DIR/.venv/bin/pip" install -r "$APP_DIR/requirements.txt"
mkdir -p /var/log/caddy
chown -R "$APP_USER:$APP_USER" "$APP_DIR"
chown caddy:caddy /var/log/caddy

install -m 0644 "$APP_DIR/deploy/roaring-kitty-tracker.service" /etc/systemd/system/roaring-kitty-tracker.service
install -m 0644 "$APP_DIR/deploy/roaring-kitty-refresh.service" /etc/systemd/system/roaring-kitty-refresh.service
install -m 0644 "$APP_DIR/deploy/roaring-kitty-refresh.timer" /etc/systemd/system/roaring-kitty-refresh.timer

# Keep this tracker isolated from other Caddy sites on the same server.
mkdir -p /etc/caddy/sites-enabled
sed "s/__RKT_DOMAIN__/${RKT_DOMAIN}/g" "$APP_DIR/deploy/Caddyfile" > /etc/caddy/sites-enabled/roaring-kitty-tracker.caddy
if ! grep -Fq 'import /etc/caddy/sites-enabled/*' /etc/caddy/Caddyfile; then
  printf '\nimport /etc/caddy/sites-enabled/*\n' >> /etc/caddy/Caddyfile
fi
caddy validate --config /etc/caddy/Caddyfile --adapter caddyfile

systemctl daemon-reload
systemctl enable --now roaring-kitty-tracker.service
systemctl enable --now roaring-kitty-refresh.timer
systemctl enable --now caddy.service
systemctl reload caddy.service

echo "Deployment complete. Verify: https://${RKT_DOMAIN}/healthz"
