Venue network management service that polls routers and correlates network clients with hydracluster nodes.
| Server | hydraneck.experiencenet.com (46.225.8.28) |
| hcloud | hydraexperiencenet context, cx23 nbg1 |
| Config | /root/.hydraneck/config.yaml |
| Data | /root/.hydraneck/ |
| Service | systemctl status hydraneck |
| Logs | journalctl -u hydraneck -f |
| Health | GET /api/v1/health |
ssh root@46.225.8.28 systemctl status hydraneck
Or via the health endpoint:
curl -s https://hydraneck.experiencenet.com/api/v1/health
ssh root@46.225.8.28 journalctl -u hydraneck -f
Show last 100 lines:
ssh root@46.225.8.28 journalctl -u hydraneck -n 100 --no-pager
ssh root@46.225.8.28 systemctl restart hydraneck
Updates happen automatically. The service polls releases.experiencenet.com for new versions and applies them. To check the current version:
ssh root@46.225.8.28 hydraneck version
Never manually deploy -- always use the release pipeline (tag + push to trigger CI, release server distributes, service auto-updates).
Trigger a network scan for a specific venue:
curl -X POST https://hydraneck.experiencenet.com/api/v1/venues/<venue-id>/scan \
-H "Authorization: Bearer <token>"
curl -s https://hydraneck.experiencenet.com/api/v1/venues/<venue-id>/network \
-H "Authorization: Bearer <token>" | jq .
curl -s https://hydraneck.experiencenet.com/api/v1/venues/<venue-id>/bandwidth \
-H "Authorization: Bearer <token>" | jq .
Returns 24h of bandwidth samples (tx/rx in bps) and the venue's capacity in bps. Also visible as a chart on the venue detail page.
curl -s https://hydraneck.experiencenet.com/api/v1/venues/<venue-id>/tunnels \
-H "Authorization: Bearer <token>" | jq .
Check correlation state and connectivity for a specific node:
curl -s https://hydraneck.experiencenet.com/api/v1/nodes/<node-id>/connectivity \
-H "Authorization: Bearer <token>" | jq .
curl -s https://hydraneck.experiencenet.com/api/v1/nodes \
-H "Authorization: Bearer <token>" | jq .
GET / -- Landing pageGET /docs -- Redirects to /docs/overviewGET /docs/{section} -- Documentation viewer (partner network design, traffic flows, etc.)GET /admin -- Dashboard (venue overview, WireGuard tunnels, air units)GET /admin/venues/{name} -- Venue detail page (routers, nodes, bandwidth)POST /admin/nodes/{id}/assign -- Assign node to district/venueGET /api/v1/health -- Health endpointGET /api/v1/runbook -- Raw markdown runbookGET /api/v1/venues -- List venuesGET /api/v1/venues/{name} -- Venue detailsGET /api/v1/venues/{name}/network -- Node network statusPOST /api/v1/venues/{name}/scan -- Trigger scanGET /api/v1/venues/{name}/bandwidth -- Bandwidth historyGET /api/v1/venues/{name}/wg -- WireGuard statushealthy -- node is on the network and its agent is responding normallyagent-down -- node is visible on the network but its agent is not respondingnot-on-network -- node's agent is reporting in but the node is not visible on the venue router (network issue)unmanaged -- a network client that does not match any known hydracluster node. When HydraCluster is configured (cluster.url), each unmanaged device row shows an Enrol button that deep-links to HydraCluster's /enroll page with the device name and IP pre-filled. The admin fills in the owner field and submits; HydraCluster creates a pending node with the correct IP and shows the install script to run on the device./root/.hydraneck/. Stores venue network state, node correlations, and router configurations. Bandwidth history is stored per venue in /root/.hydraneck/bandwidth/<venue>.yaml (24h rolling window, ~288 samples at 5min intervals). No database required.If the YAML store becomes corrupted (partial writes, disk issues):
systemctl stop hydraneckls -la /root/.hydraneck/systemctl start hydraneckjournalctl -u hydraneck -n 50 --no-pagercat /root/.hydraneck/config.yamlss -tlnp | grep <port>ls -la $(which hydraneck)hydraneck servecurl -s https://hydraauth.experiencenet.com/api/v1/verify -H "Authorization: Bearer <token>"ssh root@46.225.8.28 curl -s https://hydraauth.experiencenet.com/api/v1/healthssh root@46.225.8.28 date -- token validation may fail if the server clock is skewedjournalctl -u hydraneck --since "1 hour ago" | grep -i "poll\|router\|omada\|mikrotik"ssh root@46.225.8.28 ping <router-ip>ssh root@46.225.8.28 cat /root/.hydraneck/config.yamlcurl -s https://hydraneck.experiencenet.com/api/v1/nodes/<node-id>/connectivity -H "Authorization: Bearer <token>" | jq .curl -X POST https://hydraneck.experiencenet.com/api/v1/venues/<venue-id>/scan -H "Authorization: Bearer <token>"ssh root@46.225.8.28 systemctl restart hydraneckcurl -s https://hydraneck.experiencenet.com/api/v1/venues/<venue-id>/tunnels -H "Authorization: Bearer <token>" | jq .ssh root@46.225.8.28 wg showHetzner automated daily server snapshots are enabled on hydraneck (46.225.8.28), context hydraexperiencenet. Backup window: 02:00–06:00 UTC, 7-day retention.
The snapshot covers the entire server disk, including:
/root/.hydraneck/ — venue network state, node correlations, router configurations/root/.hydraneck/bandwidth/ — per-venue bandwidth history (24h rolling window)/root/.hydraneck/config.yaml — service config and auth tokenshydraexperiencenet project), open Servers → hydraneck → Backups.curl https://hydraneck.experiencenet.com/api/v1/health
curl -H "Authorization: Bearer $TOKEN" https://hydraneck.experiencenet.com/api/v1/venues