#!/usr/bin/env bash set -euo pipefail : "${UPTIMELINK_CONTROLLER_URL:?UPTIMELINK_CONTROLLER_URL is required}" : "${UPTIMELINK_RUNNER_ID:?UPTIMELINK_RUNNER_ID is required}" : "${UPTIMELINK_RUNNER_TOKEN:?UPTIMELINK_RUNNER_TOKEN is required}" target_port="${UPTIMELINK_TARGET_PORT:-18081}" install -d -m 0755 /opt/uptimerunner /etc/uptimerunner cd /uptime.link/uptimerunner deno compile \ --allow-net \ --allow-read \ --allow-write \ --allow-run \ --allow-env \ --allow-sys \ --output /opt/uptimerunner/uptimerunner \ mod.ts chmod +x /opt/uptimerunner/uptimerunner ln -sf /opt/uptimerunner/uptimerunner /usr/local/bin/uptimerunner cat >/opt/uptimerunner/target-server.ts <<'DENO' const port = Number(Deno.env.get('UPTIMELINK_TARGET_PORT') ?? '18081'); Deno.serve({ hostname: '127.0.0.1', port }, () => { return new Response('runner-local healthy\n', { headers: { 'content-type': 'text/plain' }, }); }); DENO cat >/etc/systemd/system/uptimerunner-target.service </dev/null 2>&1; then break fi sleep 1 done curl -fsS "http://127.0.0.1:${target_port}/health" >/dev/null systemctl restart uptimerunner.service