M7XSJ
LoRa-APRS · self-hosted · multi-tenant◇ Beta

The LoRa-APRS network, in detail

A self-hosted analytics platform for LoRa-APRS iGates. You keep your hardware and your lora-aprs.live feed; I add live dashboards, RF analytics and outage alerting — one login covering all of your gates, isolated from everyone else's.

⚙️How it works

Your ESP32 LoRa-APRS iGate already emits syslog. Repoint that one setting at the network and everything downstream is automatic — there's no per-operator configuration on my side.

iGate syslog ─UDP→ m7xsj.co.uk:1516 Node-RED parser ├─ read gateway callsign, parse position / SNR / RSSI / telemetry ├─ auto-create a private store for that gate (first sight) └─ InfluxDB your Grafana dashboard └─ also mirrored on to lora-aprs.live (unchanged)

Zero-touch & ownership-checked

A new gate that starts sending syslog is recognised by its callsign and immediately gets its own private data store. Before you get a login, though, you prove the gate is yours: you beacon a one-time code I issue at registration, and the network confirms it arrived through your gate. That keeps the spoofable nature of plain UDP from handing anyone else's data out.

Firmware: parsing is currently built around the syslog format of the CA2RXU LoRa-APRS iGate firmware by Ricardo Guzman (CA2RXU) — the one most people run. Different firmware or a different syslog format? I'd love to add support — email shaun@m7xsj.co.uk with a sample, or catch me at the weekly HADARS meetup.

📊What you get

A Grafana dashboard per gate, grouped under one login for your callsign. Edit it, rearrange it, even delete a panel — it's yours. (Delete the whole thing and a fresh copy self-heals within ~10 minutes.)

🗺️Coverage maps

Where you're being heard — direct contacts (green) shown apart from digipeater relays (orange, drawn to the relaying node), with reception lines, latest distance & RSSI per station and recency trails.

📶Signal & RF

Link quality, SNR-vs-distance, CRC rate and per-station averages — sorted weakest-first.

📡Activity

Packet rate, station activity, packet categories and your furthest-DX records, direct vs via-digi.

🔋Telemetry

Battery and device telemetry from heard stations, plus the raw recent-packets log.

🔒Isolation

You see only your own gates. Folders are locked per operator — no cross-tenant leakage.

Auto-expanding

Add another SSID later and its dashboard appears automatically — no re-registration needed.

Link Quality panel showing RSSI and SNR over time for every station the gate hears.
Link Quality — RSSI & SNR over time for every station your gate hears.
Link Quality panel filtered to a single callsign for a clean RSSI and SNR trace.
…filtered to a single station for a clean RSSI & SNR trace.
Battery stats panel showing reported voltage over time for several heard stations.
Battery telemetry — reported voltage over time for solar / battery stations.
Data retention starts at 1 day for a brand-new gate and is bumped to 180 days once your access is provisioned.

🔔Alerting

Alerts are per-operator and opt-in — everything is off until you switch it on. You choose which alerts you want and set your own thresholds on a secure, token-gated preferences page that's linked in every email the network sends you. State-change only (no spam), self-resolving, and only ever sent to your verified address.

📴

Offline — radio-down vs uplink-down

When your feed goes silent past your threshold, the network checks whether another gate still hears you on RF. If not, it's a true radio/power/antenna outage. If yes, your radio is fine and your internet/uplink is the problem — and the email names the witness gate, how recently it heard you and at what signal.

Recovery

A “back online” email when packets resume, if you opted into either offline alert.

🔋

Low battery

Your gate's own reported voltage under your floor — useful for solar / off-grid sites. No battery sensor = never fires.

⚙️

You're in control

Thresholds and on/off switches are yours, via the prefs link in your emails. If the whole network goes dark at once that's flagged as my infrastructure — you won't get a false "your gate is down" in that case.

The Alert & Digest preferences page — outage, battery and digest toggles with per-operator thresholds.
The token-gated preferences page — every alert and digest is opt-in, with your own thresholds, sent only to your verified address.

📰Digests

Opt-in email summaries of your gates, on the cadence you choose — off by default, switched on from the same preferences page as your alerts. Like everything else, they cover your gates only.

📅Daily

A once-a-day recap each evening (7pm).

🗓️Weekly

The week in review, every Monday (9am).

📆Monthly

A full-month report on the 1st (noon).

Each digest reports packets heard, unique stations, furthest DX (direct RF), furthest via a digipeater, strongest signal, best SNR, and your top-5 busiest stations.

🚀Join the network

  1. Register. n8n.m7xsj.co.uk/form/aprs — enter CALLSIGN-SSID, name and email. You get a verification code (e.g. LORA123456).
  2. Repoint syslog. On your iGate, set syslog server to m7xsj.co.uk, port 1516, protocol UDP.
  3. Beacon the code. Put the code in your beacon comment and let it transmit. The network detects it through your gate (up to a ~90 min window — plenty of time to finish setup).
  4. Accept your invite. You're emailed a Grafana invite — set a password and your dashboard(s) are live. You can remove the code from your comment afterwards.
Make sure your gate's syslog is sent over UDP — a TCP target will look connected but silently send nothing.
Beta: this network is live but still young — feedback and bug reports are very welcome at shaun@m7xsj.co.uk or the weekly HADARS meetup.

➕ Register now   ← Back to home

Prefer to run your own?

The whole stack — syslog parsing in Node-RED, InfluxDB storage and the Grafana dashboard — is documented as a step-by-step build guide.

🛠️ Build your own LoRa-APRS dashboard