Internet traffic
—
· last 24 h
Independent network · in production 24/7
$ An independent, self-hosted network focused on networking, automation and modern architectures.
It is not a lab: it is a real production network, running 24/7, that connects homes and datacenters in 3 countries and carries the everyday traffic of the people behind them. It hosts services such as Linux mirrors, DNS, VPN, SD-WAN and IPv6, all deployed through automation pipelines.
Built to learn, test and share — run like production, combining reliability, simplicity and curiosity.
// right now · real data
Real measurements from our monitoring, published every few minutes as totals only.
—
· last 24 h
—
last 24 h
—
last 24 h
—
last 24 h
—
last 24 h
// network map · real state, every 5 minutes
This map is generated from the production inventory on every build: 3 cores in full mesh, 18 edge sites and 2 cloud nodes, every edge dual-homed to every core over WireGuard, with BGP for routing and BFD for sub-second failover. In Real mode every tunnel shows its real state and activity, refreshed every 5 minutes; Simulation mode lets you play failures. Tap a router to inspect it.
// what we do
63 encrypted tunnels built automatically. Every site is dual-homed; BGP chooses the path and BFD detects failures in milliseconds.
Each router is a YAML file. Python configlets render firewall, LAN, WAN, WiFi, VPN and DHCP, and push them through the RouterOS API. Idempotent, with dry-run and clean-up.
380 firewall rules versioned in git, global and per site. Safe, DMZ, services, guest and lab VLANs; RADIUS for WiFi and VPN users.
Public IPv6 addressing planned per site, with static and SLAAC prefixes carried across the mesh alongside IPv4.
Sites, tunnels, VPN users and leases are polled continuously and stored as time series; netwatch events stream over MQTT.
Devices, cables, circuits and sites are synchronised with NetBox, so documentation never drifts from reality.
// fleet
Counted from the inventory and the DHCP reservations on every build. Only totals are published.
| Item | Count |
|---|---|
| Smart home (lights, sensors, relays) | 170 |
| Servers & services | 54 |
| TV & media | 41 |
| Network gear | 32 |
| Cameras | 25 |
| Computers & printers | 13 |
| Energy & power | 10 |
| Vehicles | 4 |
| Other | 63 |
| Item | Count |
|---|---|
| MikroTik hEX | 5 |
| MikroTik hAP ax² | 4 |
| MikroTik hAP ac² | 3 |
| Linux VPS (OVH) | 2 |
| MikroTik hAP ac³ LTE6 | 2 |
| MikroTik RB5009UG+S+IN | 2 |
| MikroTik CHR (cloud) | 1 |
| MikroTik Chateau 5G ax | 1 |
| MikroTik LtAP mini | 1 |
| MikroTik L009 | 1 |
| MikroTik Chateau 5G | 1 |
// architecture
The principles behind the configuration — simplified, but exactly what the code enforces.
A laptop in one home opens a file on a NAS in another home. The packet never crosses the internet unencrypted.
// gitops
Nobody types configuration on a router. A change is a pull request; the pipeline does the rest.
Inventory, VLANs, firewall and DHCP in YAML.
config_prod/The whole suite runs on every push and blocks bad changes.
pytestGitHub Actions on a self-hosted runner renders the intended state.
mikro_main.pyDiff against every router and push only what changed, in parallel.
RouterOS APIMonitoring and NetBox close the loop.
InfluxDB · NetBox# 2026-10-25 21:13 UTC · commit local
$ git commit -m "Add sonos to secure VLAN #push" && git push
✓ pytest · all tests passed
✓ loaded 23 devices from inventory
✓ rendered 63 WireGuard links · 380 firewall rules · 535 DHCP reservations
✓ pushed changes to 21 routers in parallel
→ network converged. 0 manual steps.
// stack
Self-hosted. 🚀