Files
infrastructure/docs/archive/12-PHASE8-NETDISCO-INTEGRATION.md
XTRM-Unraid b250493d5a
All checks were successful
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────────────┘