docs: Update for NetBox Discovery (Diode) setup and Slurpit removal
- Removed Slurpit section from current state (stack removed) - Added NetBox Discovery (Diode) architecture documentation - Added NetDisco to NetBox sync script documentation - Updated network diagram with Diode components - Added changelog entries for 2026-01-23 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Infrastructure Current State: xtrm-lab.org
|
||||
|
||||
## Document Updated: 2026-01-22
|
||||
## Document Updated: 2026-01-23
|
||||
## Target Domain: xtrm-lab.org
|
||||
|
||||
---
|
||||
@@ -49,7 +49,8 @@ graph TB
|
||||
end
|
||||
subgraph Monitoring["Monitoring"]
|
||||
UPTIME["Uptime Kuma<br/>172.18.0.20"]
|
||||
NETBOX["NetBox<br/>172.24.0.5"]
|
||||
NETBOX["NetBox<br/>172.18.0.61"]
|
||||
DIODE["NetBox Discovery<br/>172.24.0.10"]
|
||||
end
|
||||
subgraph Media["Media"]
|
||||
PLEX["Plex"]
|
||||
@@ -113,7 +114,7 @@ graph TB
|
||||
|
||||
**Configuration:**
|
||||
- Upstream: Quad9 DoH (https://dns10.quad9.net/dns-query)
|
||||
- TLS Certificate: Let's Encrypt wildcard (\*.xtrm-lab.org)
|
||||
- TLS Certificate: Let's Encrypt wildcard (*.xtrm-lab.org)
|
||||
- Server Name: dns.xtrm-lab.org
|
||||
- Certificate Expiry: 2026-04-02
|
||||
- Credentials: jazzymc / 7RqWElENNbZnPW
|
||||
@@ -154,7 +155,7 @@ graph TB
|
||||
|---------|--------|---------|
|
||||
| br0 | 192.168.31.0/24 | LAN macvlan (AdGuard Home) |
|
||||
| dockerproxy | 172.18.0.0/16 | Traefik-accessible services |
|
||||
| netbox | 172.24.0.0/16 | NetBox stack |
|
||||
| diode_default | 172.24.0.0/16 | NetBox Discovery (Diode) |
|
||||
| bridge | 172.17.0.0/16 | Default Docker bridge |
|
||||
|
||||
### Key Services
|
||||
@@ -175,7 +176,7 @@ graph TB
|
||||
| CI/CD Server | woodpecker-server | 172.18.0.32 | ci.xtrm-lab.org |
|
||||
| **Monitoring** ||||
|
||||
| Uptime Kuma | UptimeKuma | 172.18.0.20 | uptime.xtrm-lab.org |
|
||||
| NetBox | netbox | 172.24.0.5 | netbox.xtrm-lab.org |
|
||||
| NetBox | netbox | 172.18.0.61 | netbox.xtrm-lab.org |
|
||||
| **Media** ||||
|
||||
| Plex | plex | host | plex.xtrm-lab.org |
|
||||
| Nextcloud | Nextcloud | 172.18.0.24 | nextcloud.xtrm-lab.org |
|
||||
@@ -298,47 +299,86 @@ flowchart TB
|
||||
|
||||
## Network Discovery & Management
|
||||
|
||||
### Slurp'it Stack
|
||||
### NetBox (IPAM/DCIM)
|
||||
|
||||
| Container | IP | Purpose |
|
||||
|-----------|-----|---------|
|
||||
| slurpit-portal | 172.18.0.129 | Web UI (slurpit.xtrm-lab.org) |
|
||||
| slurpit-scanner | 172.25.0.5 | SNMP network scanner |
|
||||
| slurpit-scraper | 172.25.0.3 | Device data collector |
|
||||
| slurpit-warehouse | 172.25.0.4 | Data storage API |
|
||||
| slurpit-mariadb | 172.25.0.2 | Portal database |
|
||||
| slurpit-mongodb | 172.25.0.6 | Discovery database |
|
||||
| netbox | 172.18.0.61 | Web UI (netbox.xtrm-lab.org) |
|
||||
| netbox-postgres | - | Database |
|
||||
| netbox-redis | - | Cache |
|
||||
| netbox-redis-cache | - | Redis cache |
|
||||
| netbox-worker | - | Background tasks |
|
||||
|
||||
**Status:** Operational
|
||||
**Discovered Devices:** 1 (MikroTik Router)
|
||||
**SNMP Communities:** public, netdisco
|
||||
**Plugins Installed:**
|
||||
- netboxlabs-diode-netbox-plugin (NetBox Discovery integration)
|
||||
|
||||
**Configuration:**
|
||||
- SNMP v2c credentials configured
|
||||
- Scan target: 192.168.31.0/24
|
||||
- NetBox integration: Enabled (plugin_online: 1)
|
||||
### NetBox Discovery (Diode)
|
||||
|
||||
**Pending Tasks:**
|
||||
- Add SSH credentials to Vault for device scraping
|
||||
- Troubleshoot SNMP discovery of switch and AP
|
||||
NetBox Labs Diode provides automated network discovery and data ingestion into NetBox.
|
||||
|
||||
| Container | IP | Purpose |
|
||||
|-----------|-----|---------|
|
||||
| diode-ingress-nginx-1 | 172.24.0.10 | API Gateway |
|
||||
| diode-diode-auth-1 | - | OAuth2 authentication |
|
||||
| diode-diode-ingester-1 | - | Data ingestion service |
|
||||
| diode-diode-reconciler-1 | - | Data reconciliation |
|
||||
| diode-hydra-1 | - | OAuth2 provider (Ory Hydra) |
|
||||
| diode-postgres-1 | - | Database |
|
||||
| diode-redis-1 | - | Cache |
|
||||
| diode-discovery-agent | host network | Network scanner (orb-agent) |
|
||||
|
||||
**Data Location:** /mnt/user/appdata/diode/
|
||||
|
||||
**Discovery Agent Configuration:**
|
||||
- Schedule: Every 30 minutes
|
||||
- Target: 192.168.31.0/24
|
||||
- Ports scanned: 22, 80, 161, 443
|
||||
- Site: Home
|
||||
|
||||
**OAuth2 Credentials:**
|
||||
- diode-ingest: For data ingestion
|
||||
- netbox-to-diode: For NetBox plugin
|
||||
- diode-to-netbox: For reconciler
|
||||
|
||||
### NetDisco
|
||||
|
||||
NetDisco provides SNMP-based network discovery and ARP table collection.
|
||||
|
||||
| Container | IP | Purpose |
|
||||
|-----------|-----|---------|
|
||||
| netdisco-web | 172.18.0.41 | Web UI (netdisco.xtrm-lab.org) |
|
||||
| netdisco-backend | 172.18.0.42 | SNMP poller |
|
||||
|
||||
### NetBox (IPAM/DCIM)
|
||||
**Database:** postgresql17 (shared)
|
||||
- Database: netdisco_db
|
||||
- User: netdisco_user
|
||||
|
||||
| Container | IP | Purpose |
|
||||
|-----------|-----|---------|
|
||||
| netbox | 172.24.0.5 | Web UI (netbox.xtrm-lab.org) |
|
||||
| netbox-postgres | 172.24.0.4 | Database |
|
||||
| netbox-redis | 172.24.0.2 | Cache |
|
||||
| netbox-worker | 172.24.0.6 | Background tasks |
|
||||
**Discovered Data:**
|
||||
- 4 SNMP-enabled devices
|
||||
- 42 ARP entries (all network hosts)
|
||||
|
||||
**NetBox Slurp'it Plugin:** Installed and configured
|
||||
### NetDisco to NetBox Sync
|
||||
|
||||
A scheduled sync script pushes NetDisco data to NetBox via Diode.
|
||||
|
||||
**Location:** /mnt/user/appdata/netdisco-netbox-sync/
|
||||
|
||||
| File | Purpose |
|
||||
|------|---------|
|
||||
| sync.py | Python sync script |
|
||||
| Dockerfile | Container build file |
|
||||
| docker-compose.yml | Deployment config |
|
||||
|
||||
**Sync Configuration:**
|
||||
- Source: NetDisco PostgreSQL database
|
||||
- Target: NetBox via Diode gRPC API
|
||||
- Data synced: Devices (with vendor, model, OS) and IP addresses (with MAC)
|
||||
|
||||
**Run manually:**
|
||||
```bash
|
||||
cd /mnt/user/appdata/netdisco-netbox-sync
|
||||
docker compose run --rm netdisco-netbox-sync
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
@@ -354,4 +394,3 @@ A dedicated service account `agent` was created for automated tools:
|
||||
| MikroTik Switch | N/A | No SSH (SwOS) | - |
|
||||
|
||||
**Credentials:** See docs/AGENT-CREDENTIALS.md (gitignored, local only)
|
||||
|
||||
|
||||
@@ -1,3 +1,35 @@
|
||||
## 2026-01-23 - NetBox Discovery (Diode) Setup & Slurp'it Removal
|
||||
|
||||
### Slurp'it Removal
|
||||
- [SLURPIT] Removed entire Slurp'it stack (portal, scanner, scraper, warehouse, mariadb, mongodb)
|
||||
- [SLURPIT] Decision: Use NetBox Discovery + NetDisco instead for better NetBox integration
|
||||
|
||||
### NetBox Discovery (Diode) Installation
|
||||
- [DIODE] Installed Diode server stack via quickstart.sh
|
||||
- [DIODE] Containers: ingress-nginx, diode-auth, diode-ingester, diode-reconciler, hydra, postgres, redis
|
||||
- [NETBOX] Installed netboxlabs-diode-netbox-plugin via custom Dockerfile
|
||||
- [NETBOX] Ran plugin migrations for netbox_diode_plugin
|
||||
- [DIODE] Configured Nginx with public /auth/introspect endpoint for NetBox plugin
|
||||
- [DIODE] Connected NetBox to diode_default network for inter-container communication
|
||||
|
||||
### Discovery Agent Setup
|
||||
- [DIODE] Deployed orb-agent container for network discovery
|
||||
- [DIODE] Configured network_discovery policy: 192.168.31.0/24, ports 22/80/161/443
|
||||
- [DIODE] Schedule: Every 30 minutes (*/30 * * * *)
|
||||
- [DIODE] Successfully discovered 26 hosts on first scan
|
||||
|
||||
### NetDisco to NetBox Sync
|
||||
- [SYNC] Created Python sync script at /mnt/user/appdata/netdisco-netbox-sync/
|
||||
- [SYNC] Uses Diode SDK to ingest devices and IP addresses from NetDisco
|
||||
- [SYNC] Syncs: 4 devices (with vendor, model, OS) and 42 ARP entries (with MAC)
|
||||
- [SYNC] Containerized with Docker for easy deployment
|
||||
|
||||
### Documentation
|
||||
- [DOCS] Updated 00-CURRENT-STATE.md with new discovery architecture
|
||||
- [DOCS] Removed Slurp'it references, added Diode and sync script documentation
|
||||
|
||||
---
|
||||
|
||||
## 2026-01-22 - NetBox Migration to Shared PostgreSQL
|
||||
|
||||
### Database Consolidation
|
||||
|
||||
Reference in New Issue
Block a user