100 lines
3.6 KiB
Markdown
100 lines
3.6 KiB
Markdown
|
|
---
|
||
|
|
title: central — Data-Hub Spine
|
||
|
|
type: reference
|
||
|
|
tags: [recon]
|
||
|
|
related: ["[[navi]]", "[[services]]", "[[environment]]"]
|
||
|
|
updated: 2026-06-18
|
||
|
|
---
|
||
|
|
# central — Data-Hub Spine
|
||
|
|
|
||
|
|
## Overview
|
||
|
|
|
||
|
|
central is a multi-domain real-time data-hub spine. Adapters normalize upstream sources, publish CloudEvents to **NATS/JetStream**, and archive to **TimescaleDB/PostGIS** for historical and geospatial query. It is the live data backbone for navi traffic tiles and related situational-awareness feeds.
|
||
|
|
|
||
|
|
- **URL (internal):** http://central.echo6.mesh:8000 (mesh-only, no public exposure)
|
||
|
|
- **Host:** utility CT 104 (unprivileged Ubuntu LXC)
|
||
|
|
- **Repo:** github.com/zvx-echo6/central (public, Python, branch )
|
||
|
|
- **Deploy path:** (Python venv, system user)
|
||
|
|
|
||
|
|
## Host
|
||
|
|
|
||
|
|
| Attribute | Value |
|
||
|
|
|-----------|-------|
|
||
|
|
| Container | utility CT 104 |
|
||
|
|
| Local IP | 192.168.1.104 |
|
||
|
|
| Tailscale / mesh | 100.64.0.12 → |
|
||
|
|
| Resources | 4 cores / 12 GB RAM / 100 GB disk |
|
||
|
|
| OS | Ubuntu LXC (unprivileged) |
|
||
|
|
|
||
|
|
## Architecture
|
||
|
|
|
||
|
|
The data flow is: upstream APIs → adapters (central-supervisor) → NATS/JetStream :4222 → central-archive (TimescaleDB/PostGIS :5432). The central-gui (FastAPI + HTMX, :8000) exposes the API consumed by navi via .
|
||
|
|
|
||
|
|
## Systemd Services
|
||
|
|
|
||
|
|
All three units are **enabled and active**; deployment survives reboot.
|
||
|
|
|
||
|
|
| Unit | Role |
|
||
|
|
|------|------|
|
||
|
|
| | Adapter scheduler + CloudEvents publisher |
|
||
|
|
| | JetStream → TimescaleDB consumer |
|
||
|
|
| | FastAPI + HTMX web app + API (the :8000 listener) |
|
||
|
|
|
||
|
|
## Ports
|
||
|
|
|
||
|
|
| Port | Protocol | Purpose |
|
||
|
|
|------|----------|---------|
|
||
|
|
| :8000 | HTTP | GUI / API (bound 0.0.0.0) |
|
||
|
|
| :4222 | TCP | NATS client connections |
|
||
|
|
| :8222 | HTTP | NATS monitoring |
|
||
|
|
| :5432 | TCP | PostgreSQL 16 + TimescaleDB/PostGIS |
|
||
|
|
|
||
|
|
## Adapters (~25 active)
|
||
|
|
|
||
|
|
| Domain | Sources |
|
||
|
|
|--------|---------|
|
||
|
|
| Traffic | ITD 511, WZDX, TomTom flow/incidents, 511 cameras |
|
||
|
|
| Wildfire | WFIGS incidents/perimeters, InciWeb, FIRMS |
|
||
|
|
| Weather / Space-weather | NWS, SWPC k-index/protons/alerts |
|
||
|
|
| Hydro | NWIS |
|
||
|
|
| Earthquakes | USGS |
|
||
|
|
| Avalanche | avalanche.org |
|
||
|
|
| Disasters | GDACS, EONET |
|
||
|
|
| Satellite | CelesTrak TLE, sat positions/orbits, N2YO passes, satpass predict |
|
||
|
|
|
||
|
|
## GUI / API Surface
|
||
|
|
|
||
|
|
Authenticated app with login/sessions/CSRF, first-run setup wizard, operator management, adapter configuration, stream viewer, enrichment pipeline, monitoring-area management, API key management, audit log, and manual resend.
|
||
|
|
|
||
|
|
**Auth-exempt tile endpoints** (used by navi, verified HTTP 200):
|
||
|
|
|
||
|
|
| Endpoint | Format |
|
||
|
|
|----------|--------|
|
||
|
|
| | PNG tile (raster) |
|
||
|
|
| | PBF tile (vector) |
|
||
|
|
|
||
|
|
All other endpoints are auth-gated.
|
||
|
|
|
||
|
|
## Consumer — navi Integration
|
||
|
|
|
||
|
|
navi-traffic (navi's in-VM :8421 extraction service) was **retired on 2026-05-26** and cut over to central. recon-vm's nginx () now proxies → . Tile endpoints verified returning HTTP 200.
|
||
|
|
|
||
|
|
## Dependencies
|
||
|
|
|
||
|
|
| Component | Location |
|
||
|
|
|-----------|----------|
|
||
|
|
| NATS / JetStream | Local (central CT 104) |
|
||
|
|
| PostgreSQL 16 + TimescaleDB + PostGIS | Local (central CT 104) |
|
||
|
|
| Upstream APIs | ~20 external sources (see Adapters table) |
|
||
|
|
|
||
|
|
## Deploy / Drift Notes (as of 2026-06-18 audit)
|
||
|
|
|
||
|
|
- **Deployed HEAD:** v0.14.4
|
||
|
|
- **Repo :** v0.14.5 — deployment is **1 release behind**
|
||
|
|
- **Uncommitted local migration:** exists on disk in the deployment but was **never committed to the repo**
|
||
|
|
- **Stale README:** repo README still reads *"Phase 0 — scaffold, not yet operational"* — central is fully operational
|
||
|
|
- **Stale :** version field shows 0.3.0; real version is the git tag (v0.14.x)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
*Last updated: 2026-06-18 — Initial documentation; central was previously undocumented. Deployment confirmed live, all three systemd units active.*
|