Infrastructure
A snapshot of everything I run.
Updated whenever I touch something.
- cluster
- turing pi 2
- receivers
- 2× raspberry pi 4
- edge
- hetzner · railway
shelf
turing pi 2 +-----------------------------------------+ n1| cm4-1 Pi CM4 · DE | n2| cm4-2 Pi CM4 · DE | n3| · empty | n4| · empty | |-----------------------------------------| | · powered | +-----------------------------------------+ receivers +-----------------------------------------+ | adsb-de Pi 4B · DE | | adsb-uk Pi 4B · UK | +-----------------------------------------+ edge +-----------------------------------------+ | hz01 Hetzner CPX22 · nbg1 | | railway Railway · shared | +-----------------------------------------+
| host | role | model | ram | disk |
|---|---|---|---|---|
| tpi2 | cluster | Turing Pi 2.5.2 | 128M | 256M |
| cm4-1 | k3s ctrl | Pi CM4 | 8G | 32G |
| cm4-2 | k3s wrk | Pi CM4 | 8G | 32G |
| adsb-de | sdr | Pi 4B | 1G | 32G |
| adsb-uk | sdr | Pi 4B | 4G | 16G |
| hz01 | edge | Hetzner CPX22 | 4G | 80G |
| railway | edge | Railway | — | — |
| name | access | |
|---|---|---|
| cluster | ||
| prometheus k3s | — | |
| grafana k3s | — | |
| node_exporter cm4-1 | — | |
| node_exporter cm4-2 | — | |
| adsb-de | ||
| dump1090-fa | tsnet | |
| fr24feed | flightradar24 | |
| piaware | flightaware | |
| rbfeeder | airnav radar | |
| opensky-feeder | opensky network | |
| adsb-uk | ||
| dump1090-fa | tsnet | |
| fr24feed | flightradar24 | |
| piaware | flightaware | |
| rbfeeder | airnav radar | |
| opensky-feeder | opensky network | |
| hz01 | ||
| jet1090 | jet1090.letey.de | |
| magpie | magpie.letey.de | |
| uptime-kuma | tsnet | |
| railway | ||
| ntfy | ntfy.letey.de | |
| hn-ntfy | — | |
migrate services home
With the cluster up, five things come home from hz01 / Railway and hz01 goes back to being a dumb public proxy:
- jet1090 (aggregator, hz01)
- magpie (stats, hz01)
- uptime-kuma (monitor, hz01)
- ntfy (push, railway)
- quill (feed watcher, railway)
ship quill, replace hn-ntfy
Building quill, a Go service that watches RSS / Atom feeds and fires notifications on new entries. When it's ready, it replaces hn-ntfy on Railway.
feeding opensky network
Tacked on opensky-feeder on both boxes. The same beast feed now goes out to the OpenSky Network too.
It's run by researchers and keeps the raw data around for academic work. Happy to send it my feed.
magpie watching the receivers
Built magpie. It reads each receiver's feed and works out messages per second and the furthest range it's picked up. Runs on hz01 for now, and prometheus on k3s scrapes it too.
prometheus and grafana on k3s
Stood up monitoring on the cluster. node_exporter runs on both CM4s, scraped by prometheus with grafana on top, both running on k3s.
cluster online, k3s up
The Turing Pi is finally online. Both CM4 nodes run Ubuntu and k3s now. cm4-1 is the control node, cm4-2 the worker.
Nothing's migrated home yet. The services are still out on hz01 / Railway.
feeding airnav radar
Tacked on rbfeeder on both boxes. Same beast feed now also goes out to AirNav Radar, alongside FlightRadar24 and FlightAware.
Each of the three networks pulls its weight here: FlightRadar24 is the app I open every day, FlightAware ships dump1090-fa, and AirNav makes the hardware. Feels right to give back to the projects I lean on the most.
feeding fr24 and flightaware
Both boxes were already running dump1090-fa. Tacked on fr24feed and piaware so the same beast feed also goes out to FlightRadar24 and FlightAware.
dump1090-fa on receivers, jet1090 on hz01
Both receivers were running jet1090 locally, and the ADS-B page hit them directly through hz01. Under load, that traffic would knock a receiver offline.
They now run dump1090-fa (the maintained fork by FlightAware) and push the beast feed over the tailnet. A single jet1090 on hz01 takes both streams and serves the merged feed.
hn-ntfy watching the HN front page
Wanted ntfy pings when items hit the HN front page. Spun up hn-ntfy on Railway, polling the HN API. It pings ntfy on every new one.
own ntfy server on railway
Wanted to own the infra, not use obfuscated topic names. Spun up my own at ntfy.letey.de, fully permissioned. uptime-kuma now fires through it.
uptime-kuma watching jet1090
Running on hz01. Probes both receivers' public jet1090 endpoints and pings me through ntfy when one goes offline.
ADS-B receiver in UK · second feed
Second receiver online. A Raspberry Pi in UK running jet1090, same setup as the DE box.
ADS-B receiver in DE · first feed
First receiver online. A Raspberry Pi in DE running jet1090, behind hz01 over Tailscale.