1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
---title: "Side-quest — migrate radar fetch from cremonde to stan"date-created: "2026-06-10"type: "side-quest"status: "deferred"author: - "st33v" - "claude-opus-4-7"model: - "claude-opus-4-7"tldr: "BOM's anonymous FTP is intended for personal/in-organisation use. Cremonde is a Singapore VPS, which is harder to read as polite. Plan: move the fetch+composite step to stan (local AU pi), have stan push finished APNGs to cremonde over WireGuard, leave cremonde as the public TLS-terminating server. No urgency — only worth doing if BOM complains or if we want to be defensive in advance."parent-thread: "doc/radar-four-cities-and-nav.md"parent-doc: "doc/bom-radar-spec.md"reader-targets: - "claude-code" - "st33v"tags: - "bom" - "radar" - "migration" - "wireguard"trigger-conditions: - "BOM contacts re. FTP usage from cremonde" - "decide to be defensive ahead of any contact" - "moving more BOM-fetching jobs onto the same infrastructure"---# Migrate radar fetch from cremonde to stan## Why`bomsynoptic`'s radar job currently fetches BOM FTP every 6 minutes from cremonde (SG VPS, public IP). BOM's anonymous-FTP terms permit personal / in-organisation use; they explicitly don't promise availability and they reserve the right to throttle abusive clients. A residential AU IP (stan) hitting them is easier to read as polite than an offshore VPS doing the same.This is **pre-emptive politeness**, not a fix for a known complaint. Don't act unless one of the trigger-conditions above hits.## Design (agreed in chat)Split fetch from serve:- **stan** runs `radarFetch.sh` on the systemd timer. Composites APNGs locally.- **cremonde** keeps the nginx vhost, TLS cert, certbot renewal, and the static HTML pages. Its `/srv/www/radar/*-loop.apng` files become a passive drop target.- After each successful composite, stan rsyncs the published APNG to cremonde over WireGuard. Small file (~90 KB), atomic rename at the destination via rsync's default behaviour.```radarFetch.sh (stan) → /srv/www-staging/radar/idrXXX-loop.apng (local) → rsync -a idrXXX-loop.apng cremonde:/srv/www/radar/idrXXX-loop.apng```Only the APNGs travel. The HTML pages stay on cremonde permanently — they're stable, no reason to ship them across.## Changes required- **`radarFetch.sh`**: optional final `rsync` step, gated on `REMOTE_PUBLISH` env var (so the same script works in solo-host mode and split mode).- **`setup.sh`**: split into two paths. On cremonde: install nginx, HTML, no radar timer. On stan: install fetch script, timers, no nginx. Could be one script with a `--role=fetch|serve|both` flag, or two scripts.- **WireGuard**: cremonde's wg interface needs to accept ssh from stan (it presumably already does, since stan is a wg peer). Use a non-interactive key for the rsync user — separate key per direction, document in `doc/`.- **cremonde-side**: a small `rsync`-only ssh key, restricted with `command="rsync --server …"` in authorized_keys to limit blast radius if stan's key is compromised. Or use a dedicated user.- **Monitoring**: stan's rsync silently failing leaves stale APNGs on cremonde. Manifest file? Or use the existing pattern — APNG mtime stamped via `Last-Modified` header. A 15-min-stale check would catch it.## Open questions- WG topology: is stan already a peer of cremonde, or only client→VPS? If only client→VPS, rsync from stan → cremonde already works. If peer-mesh, fine too. If neither, set it up first.- Does stan have the disk space + cpu for 4 radars × 6-minute composites? Pi 4 / 5 should be ample. Pi Zero might not.- BOM's other products (synoptic chart, satellite) — should they migrate too? Synoptic is once-per-6-hours and tiny; less worth migrating. Same logic: only if defensive.## Out of scope- Re-architecting to "stan fetches, stan also serves" — defeats the point of having cremonde's public TLS termination.- Failover (cremonde fetches if stan is down) — defeats the geo-rationale.- Pushing HTML pages from stan to cremonde — they don't change often; deploy via the existing git-pull-and-setup.sh flow on cremonde.## Cross-reference- Original spec: `doc/bom-radar-spec.md` §10 (copyright/terms-of-use flagged for st33v).- Rollout memoir: `doc/bom-radar-rollout.md`.- Day-2 memoir: `doc/radar-four-cities-and-nav.md` — final exchange on this thread is the seed of this side-quest.
|