Skip to content

Instantly share code, notes, and snippets.

@Tech500
Created March 15, 2026 23:56
Show Gist options
  • Select an option

  • Save Tech500/1a997500d5e5df48dbac476847fb16f5 to your computer and use it in GitHub Desktop.

Select an option

Save Tech500/1a997500d5e5df48dbac476847fb16f5 to your computer and use it in GitHub Desktop.
Weather-station-architecture for Hackster.io story

Weather Station Architecture Diagrams

Data Collection and Distribution

[TP3000WC Weather Station]
(192.168.12.199:45000 - Ecowitt protocol)
        │
        ▼
[Raspberry Pi - 192.168.12.15]
  FOSHKplugin (/opt/FOSHKplugin/)
        │
        ├──► Forward:   WeeWX Interceptor (port 8000)
        │                     │
        │               WeeWX generates HTML
        │                     │
        │               Apache ──► /var/www/html/weewx
        │
        ├──► Forward-1: CumulusMX on oscar-ii
        │               (192.168.12.187:8998/station/ecowitt)
        │
        ├──► Forward-2: CWOP (cwop.aprs.net:14580)
        │
        └──► Forward-3: Apache (192.168.12.15:80)

[oscar-ii - Windows 11 - 192.168.12.187]
  CumulusMX (port 8998) ──► Gauges dashboard
  Caddy (port 8080)     ──► Security gatekeeper
  Tailscale             ──► Private + Public Funnel

Public Access via Tailscale Funnel and Caddy

Public Visitor
        │
        ▼
Tailscale Funnel
(oscar-ii.tailXXXX.ts.net)
        │
        ▼
Caddy on oscar-ii (port 8080)
        │
        ├──► /weewx/*      ──► Raspberry Pi Apache
        │                      (WeeWX dashboard)
        │
        ├──► /gauges*      ──► CumulusMX gauges page
        │
        ├──► /api/settings* ──► 403 Forbidden
        ├──► /api/station*  ──► 403 Forbidden
        ├──► /login*        ──► 403 Forbidden
        └──► /api/edit*     ──► 403 Forbidden

Private Admin Access via Tailscale

You (any device, anywhere)
        │
        ▼
Tailscale VPN
        │
        ├──► http://100.110.13.52:8998
        │    (CumulusMX admin — Tailscale IP)
        │
        └──► http://192.168.12.15/weewx/
             (WeeWX dashboard — local IP)

Public internet cannot reach either address.
Only devices on your Tailscale network have access.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment