Files
infrastructure/docs/archive/12-PHASE8-NETDISCO-INTEGRATION.md
T
jazzymcandClaude Opus 4.5 b250493d5a
ci/woodpecker/push/woodpecker Pipeline was successful
Major documentation restructure - consolidated docs
New Structure:
- 01-NETWORK-MAP.md - Network topology, IPs, Docker networks, services
- 02-SERVICES-CRITICAL.md - DNS, Auth, Routing (P0/P1 services)
- 03-SERVICES-OTHER.md - All non-critical services
- 04-HARDWARE-INVENTORY.md - Physical devices and specs
- 05-CHANGELOG.md - Major events only

New Folders:
- docs/archive/ - Legacy docs (read-only reference)
- docs/wip/ - Planned changes and ideas
  - UPGRADE-2026-HARDWARE.md - N5 Air + N100 migration plan
  - GITOPS-CONTAINERS.md - Phase 2 container GitOps

Changes:
- Moved all 22 legacy docs to archive/
- Consolidated container IPs, physical map, and services into single network map
- Extracted critical vs non-critical service classification
- Simplified changelog to major events only

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 11:17:33 +02:00

6.4 KiB

Phase 8: NetDisco Integration with NetBox

Status: ✅ COMPLETED (Enhanced) Priority: Medium Created: 2026-01-19 Last Updated: 2026-01-19


Overview

Deploy NetDisco for enterprise-grade network discovery using SNMP, and integrate it with NetBox for a unified "Fing-like" network management experience.

Goal: Automatic device discovery, switch port mapping, and L2/L3 topology tracking synchronized to NetBox IPAM/DCIM.


Task Status Summary

Task Description Status
8.1 Enable SNMP on MikroTik Devices ✅ COMPLETED
8.2 Deploy NetDisco on Unraid ✅ COMPLETED
8.3 Configure NetDisco Discovery ✅ COMPLETED
8.4 Traefik Ingress for NetDisco ✅ COMPLETED
8.5 NetBox Integration ✅ COMPLETED
8.6 Testing & Validation ✅ COMPLETED
8.7 Enhanced Network Mapping ✅ COMPLETED

Current State

Tool Status Purpose
NetAlertX Running ARP/ICMP-based device discovery
NetBox Running IPAM/DCIM with Slurpit plugin
NetDisco ✅ Running SNMP-based discovery

Discovered Devices: 4 (hAP ax³, cAP ac, CSS326, Unraid)


Deployment Details

Database

  • Host: postgresql17
  • Database: netdisco_db
  • User: netdisco_user
  • Password: NetD1sc0_M0stW4nt3d@db

Containers

Container Image Port Status
netdisco-web netdisco/netdisco:latest-web 5000 Running
netdisco-backend netdisco/netdisco:latest-backend - Running
netbox netbox-custom:latest (with slurpit) 8090 Running

Access URLs

URL Purpose
https://netdisco.xtrm-lab.org External access (Authentik SSO)
http://192.168.31.2:5000 Internal NetDisco access
https://netbox.xtrm-lab.org External NetBox access
http://192.168.31.2:8090 Internal NetBox access

Task 8.7: Enhanced Network Mapping (COMPLETED)

1. MikroTik DHCP → NetBox Sync

Script: /mnt/user/appdata/netdisco/scripts/mikrotik_dhcp_to_netbox.sh

Syncs DHCP leases from MikroTik router to NetBox IP addresses with:

  • Hostname
  • MAC address
  • Comments/notes from DHCP

Run Command:

/mnt/user/appdata/netdisco/scripts/mikrotik_dhcp_to_netbox.sh

Result: 29 devices synced (26 created, 3 updated)

2. Slurp'it NetBox Plugin

Plugin Version: 1.2.7
NetBox Version: 4.5.0

Custom Image: netbox-custom:latest

Plugin Configuration: /mnt/user/appdata/netbox/config/plugins.py

PLUGINS = ["slurpit_netbox"]
PLUGINS_CONFIG = {
    "slurpit_netbox": {}
}

Note: Slurp'it requires a separate Slurp'it server for full network discovery. The plugin provides NetBox integration once the server is configured.

3. Enhanced NetDisco → NetBox Sync

Script: /mnt/user/appdata/netdisco/scripts/sync_to_netbox.py

Enhanced version syncs:

  • Device info (serial, OS, model, vendor)
  • IP addresses from device_ip table
  • ARP table entries (MAC to IP mappings)
  • System MAC addresses
  • Uptime information

Run Command:

PG17_IP=$(docker inspect postgresql17 --format "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}")

docker run --rm \
  --network dockerproxy \
  -e NETDISCO_DB_HOST=$PG17_IP \
  -e NETBOX_URL=http://192.168.31.2:8090 \
  -v /mnt/user/appdata/netdisco/scripts:/scripts \
  python:3.11-slim python /scripts/sync_to_netbox.py

SNMP-Enabled Devices

Device IP Type Communities
hAP ax³ 192.168.31.1 Router netdisco, public
cAP ac 192.168.31.6 AP netdisco, public
CSS326 192.168.31.9 Switch public
XTRM-Unraid 192.168.31.2 Server netdisco, public

Unraid SNMP Configuration

Config File: /etc/snmp/snmpd.conf

rocommunity netdisco
rocommunity public
syslocation XTRM Home Lab
syscontact admin@xtrm-lab.org
sysname XTRM-Unraid
disk /mnt/disk1
disk /mnt/cache
extend cpumhz /usr/local/emhttp/plugins/snmp/cpu_mhz.sh
extend diskfree /usr/local/emhttp/plugins/snmp/disk_free_space.sh
extend disktemp /usr/local/emhttp/plugins/snmp/disk_temps.sh
extend meminfo /usr/local/emhttp/plugins/snmp/mem_info.sh
extend sharefree /usr/local/emhttp/plugins/snmp/share_free_space.sh

Plugin: kubedzero/unraid-snmp


Sync Scripts Summary

Script Purpose Trigger
sync_to_netbox.py NetDisco → NetBox device sync Manual / cron
mikrotik_dhcp_to_netbox.sh MikroTik DHCP → NetBox IPs Manual / cron

Scheduling (Cron Examples)

# NetDisco sync - hourly at :45
45 * * * * docker run --rm --network dockerproxy -e NETDISCO_DB_HOST=172.18.0.13 -e NETBOX_URL=http://192.168.31.2:8090 -v /mnt/user/appdata/netdisco/scripts:/scripts python:3.11-slim python /scripts/sync_to_netbox.py >> /mnt/user/appdata/netdisco/logs/sync.log 2>&1

# MikroTik DHCP sync - hourly at :50
50 * * * * /mnt/user/appdata/netdisco/scripts/mikrotik_dhcp_to_netbox.sh >> /mnt/user/appdata/netdisco/logs/dhcp-sync.log 2>&1

NetBox Credentials

Item Value
URL http://192.168.31.2:8090
Admin User admin
Admin Password M0stW4nt3d@xtrm
API Token (v1) kI2HiUD8Bb53KfdkOTaiWYxZuERjhGU30CgGdYxm
Secret Key 56537576d25051987077c7270c876099fe44ad83bc7695a7f4531904fce5678e

Troubleshooting

If NetDisco web UI shows "session_cookie_key must be defined":

SELECT * FROM sessions WHERE id = 'dancer_session_cookie_key';
INSERT INTO sessions (id, a_session) VALUES ('dancer_session_cookie_key', md5(random()::text));

NetBox Plugin Not Loading

Check container logs:

docker logs netbox 2>&1 | grep -i plugin

Verify plugins.py is mounted:

docker exec netbox cat /etc/netbox/config/plugins.py

SNMP Not Responding

snmpwalk -v2c -c netdisco 192.168.31.1 system

Phase 8 Summary

Status: ✅ COMPLETED

All tasks completed with enhanced capabilities:

  • 4 devices discovered via SNMP (MikroTik + Unraid)
  • NetDisco → NetBox sync with device details
  • MikroTik DHCP → NetBox sync (29 devices/IPs)
  • Slurp'it plugin installed for future discovery expansion
  • ARP table sync for MAC-to-IP mapping

Data Flow:

MikroTik Devices ─SNMP─> NetDisco ─sync─> NetBox
       │                     │              ↑
       └──────DHCP──────────sync────────────┘