summaryrefslogtreecommitdiff
path: root/setup.sh
diff options
context:
space:
mode:
authorSt33v <github@f3rr3t.com>2026-06-10 19:10:38 +1000
committerSt33v <github@f3rr3t.com>2026-06-10 19:10:38 +1000
commite433a99ceddf7168d23377ffc8d585fc80ba8fb2 (patch)
tree32f7ff056e404ae1d4563125c169bd4c535992aa /setup.sh
parent59e7c485be1e9be62f0b4cdb7d1130701c1e3c46 (diff)
Add synoptic-morph: 30-day rolling morph timelapse
synopticMorph.sh: rolling-cache implementation. On each run: 1. Pick the last WINDOW_DAYS*4 charts from the archive. 2. For each adjacent pair, fill any missing pair-morph (cached at /mnt/enclave/synoptic/pairs/<chartA>__<chartB>/p_NNNN.png). 3. Evict pair dirs whose slug isn't in the current window. 4. Symlink frames into a temp seq dir with LINGER on each source chart and DWELL on the latest, fade-in 1s and fade-out 2s. 5. Encode to /srv/www/pestrel/morph.mp4 with ffmpeg/h264. Bootstrap: ~50 min CPU on first run (119 pair morphs at ~25s each). Steady state: ~1 min/cycle (1 new pair + concat + encode). synoptic-morph.service: oneshot, TimeoutStartSec=2h to cover the bootstrap, Nice=10 + IOSchedulingClass=idle so it doesn't fight the system for CPU/disk. synoptic.service gains OnSuccess=synoptic-morph.service so the chain fires automatically after each successful chart fetch. morph.html: points at /morph.mp4 now. index.html: "Three-day history" button renamed to "Monthly history", URL /morph.html. setup.sh: installs the new unit + script, provisions /mnt/enclave/synoptic/{pairs,out} when the enclave mount is present. .gitignore: drop .claude/ (transient harness state). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Diffstat (limited to 'setup.sh')
-rwxr-xr-xsetup.sh11
1 files changed, 11 insertions, 0 deletions
diff --git a/setup.sh b/setup.sh
index a9b2fec..9da9e70 100755
--- a/setup.sh
+++ b/setup.sh
@@ -63,6 +63,12 @@ chown "$OWNER:$OWNER" /srv/www/pestrel
install -d -o "$OWNER" -g "$OWNER" /opt/radar
install -d -o "$OWNER" -g "$OWNER" /var/lib/radar
install -d -o "$OWNER" -g "$OWNER" /srv/www/radar
+
+if [ -d /mnt/enclave ]; then
+ install -d -o "$OWNER" -g "$OWNER" /mnt/enclave/synoptic /mnt/enclave/synoptic/pairs /mnt/enclave/synoptic/out
+else
+ echo "WARNING: /mnt/enclave does not exist; synoptic-morph will need its workspace path configured."
+fi
install -d -o "$OWNER" -g "$OWNER" /srv/www/radar/sydney
install -d -o "$OWNER" -g "$OWNER" /srv/www/radar/brisbane
install -d -o "$OWNER" -g "$OWNER" /srv/www/radar/canberra
@@ -82,11 +88,16 @@ install -o "$OWNER" -g "$OWNER" -m 644 "$SCRIPT_DIR/radar.cairns.html" /srv/ww
echo "==> Installing radarFetch.sh..."
install -o "$OWNER" -g "$OWNER" -m 755 "$SCRIPT_DIR/radarFetch.sh" /opt/radar/radarFetch.sh
+echo "==> Installing synopticMorph.sh and morph.html..."
+install -o "$OWNER" -g "$OWNER" -m 755 "$SCRIPT_DIR/synopticMorph.sh" /opt/synoptic/synopticMorph.sh
+install -o "$OWNER" -g "$OWNER" -m 644 "$SCRIPT_DIR/morph.html" /srv/www/pestrel/morph.html
+
# ---------------------------------------------------------------------------
# Systemd units
# ---------------------------------------------------------------------------
echo "==> Installing systemd unit files..."
for unit in synoptic.service synoptic.timer synoptic-retry.service synoptic-retry.timer \
+ synoptic-morph.service \
radar.service radar.timer radar-retry.service radar-retry.timer; do
install -m 644 "$SCRIPT_DIR/systemd/${unit}" "/etc/systemd/system/${unit}"
echo " installed ${unit}"