← Back to posts
comparison guide self-hosted · · 11 min read

Netdisco vs LibreNMS vs OpenNetAdmin: Best Network Discovery Tools 2026

Compare Netdisco, LibreNMS, and OpenNetAdmin for self-hosted network discovery, topology mapping, and device inventory management. Includes Docker deployment guides and SNMP configuration examples.

OS
Editorial Team

Why Self-Host Network Discovery and Topology Mapping

If you manage more than a handful of switches, routers, or access points, you need a reliable way to know what devices are on your network, how they are connected, and which ports are active. Cloud-based network management tools require sending SNMP credentials and topology data to external servers — a security risk most organizations cannot accept.

Self-hosted network discovery tools solve this by running entirely on your infrastructure. They scan your network via SNMP, CDP/LLDP, and ARP tables to build real-time topology maps, track MAC address movements, and maintain device inventories. Whether you run a corporate LAN, a university campus network, or a homelab with dozens of devices, having a local discovery platform gives you complete visibility without exposing sensitive network data.

In this guide, we compare three of the most capable open-source network discovery and topology mapping platforms available in 2026: Netdisco, LibreNMS, and OpenNetAdmin (ONA).

Tool Overview and GitHub Statistics

FeatureNetdiscoLibreNMSOpenNetAdmin
GitHub Stars8644,679145
Last UpdatedApril 2026April 2026December 2025
LanguagePerlPHPPHP
LicenseBSD-2-ClauseGPL-3.0MIT
Primary FocusNetwork discovery, port trackingFull network monitoring + discoveryIP address management, device inventory
Web UIYesYes (modern, responsive)Yes (basic, functional)
Docker SupportOfficial imageOfficial imageCommunity images
DatabasePostgreSQLMySQL/MariaDBMySQL/MariaDB
SNMP Versionsv1, v2c, v3v1, v2c, v3v1, v2c, v3
Topology MapsYes (Graphviz-based)Yes (network maps)Limited (manual)
MAC Address TrackingExcellentGoodBasic
VLAN DiscoveryYesYesManual entry
CDP/LLDP SupportYesYesLimited
Auto-DiscoveryYesYesManual/semi-auto
APIREST APIREST APIREST API
Plugin SystemYesExtensiveLimited

Netdisco (netdisco/netdisco) is a purpose-built network discovery tool developed originally by the University of Washington and now maintained by a community of network administrators. It excels at SNMP-based device discovery, port-to-MAC address mapping, and VLAN tracking. Its strength is doing one thing very well: telling you exactly what is connected to every port on every switch in your network.

LibreNMS (librenms/librenms) is a full-featured network monitoring system that forked from Observium in 2013. While its primary identity is as a monitoring platform (metrics, alerting, graphs), it includes robust auto-discovery capabilities through SNMP, CDP, FDP, LLDP, OSPF, BGP, and ARP. Its network map visualization and device auto-categorization make it the most visually polished option. For a deep dive into how LibreNMS compares as a monitoring tool, see our LibreNMS vs Zabbix vs Netdata network monitoring comparison.

OpenNetAdmin (ONA) (opennetadmin/ona) is a web-based IP address and device inventory management tool. It focuses on maintaining an accurate record of your network’s IP allocations, subnet assignments, and device attributes. While its auto-discovery capabilities are more limited than Netdisco or LibreNMS, it provides excellent manual inventory management and subnet planning features.

Installation and Deployment

Netdisco Docker Deployment

Netdisco provides an official Docker image with a bundled PostgreSQL database. The recommended approach uses Docker Compose with separate services for the web interface and the polling daemon:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
version: "3.8"
services:
  netdisco-db:
    image: postgres:15
    container_name: netdisco-db
    environment:
      POSTGRES_USER: netdisco
      POSTGRES_PASSWORD: netdisco_db_pass
      POSTGRES_DB: netdisco
    volumes:
      - netdisco-db-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U netdisco"]
      interval: 10s
      timeout: 5s
      retries: 5

  netdisco-web:
    image: netdisco/netdisco:latest
    container_name: netdisco-web
    ports:
      - "5000:5000"
    environment:
      NETDISCO_DB_USER: netdisco
      NETDISCO_DB_PASS: netdisco_db_pass
      NETDISCO_DB_NAME: netdisco
      NETDISCO_DB_HOST: netdisco-db
    depends_on:
      netdisco-db:
        condition: service_healthy
    volumes:
      - netdisco-config:/home/netdisco/environments

  netdisco-daemon:
    image: netdisco/netdisco:latest
    container_name: netdisco-daemon
    command: daemon
    environment:
      NETDISCO_DB_USER: netdisco
      NETDISCO_DB_PASS: netdisco_db_pass
      NETDISCO_DB_NAME: netdisco
      NETDISCO_DB_HOST: netdisco-db
    depends_on:
      netdisco-db:
        condition: service_healthy
    volumes:
      - netdisco-config:/home/netdisco/environments

volumes:
  netdisco-db-data:
  netdisco-config:

After starting the stack with docker compose up -d, access the web interface at http://<server-ip>:5000. The default credentials are admin / admin — change these immediately.

LibreNMS Docker Deployment

LibreNMS offers an official Docker image maintained by the community. Here is a complete Docker Compose setup with all required dependencies:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
version: "3.8"
services:
  librenms-db:
    image: mariadb:10.11
    container_name: librenms-db
    environment:
      MYSQL_ROOT_PASSWORD: librenms_root_pass
      MYSQL_DATABASE: librenms
      MYSQL_USER: librenms
      MYSQL_PASSWORD: librenms_db_pass
      TZ: UTC
    command:
      - --max-allowed-packet=64M
      - --innodb-file-per-table=1
      - --innodb-buffer-pool-size=256M
    volumes:
      - librenms-db-data:/var/lib/mysql

  librenms:
    image: librenms/librenms:latest
    container_name: librenms
    hostname: librenms
    ports:
      - "8443:443"
      - "8080:80"
      - "514:514/udp"
    environment:
      - DB_HOST=librenms-db
      - DB_NAME=librenms
      - DB_USER=librenms
      - DB_PASSWORD=librenms_db_pass
      - TZ=UTC
      - PUID=1000
      - PGID=1000
    volumes:
      - librenms-data:/data
      - librenms-rrd:/opt/librenms/rrd
    depends_on:
      - librenms-db

  librenms-dispatcher:
    image: librenms/librenms:latest
    container_name: librenms-dispatcher
    environment:
      - DB_HOST=librenms-db
      - DB_NAME=librenms
      - DB_USER=librenms
      - DB_PASSWORD=librenms_db_pass
      - DISPATCHER_NODE_ID=dispatcher1
      - SERVICES=snmptrap,syslog
    volumes:
      - librenms-data:/data
    depends_on:
      - librenms-db

  librenms-msmtpd:
    image: librenms/docker-mta:latest
    container_name: librenms-msmtpd
    environment:
      - SMTP_SERVER=your-smtp-server.example.com
      - SMTP_PORT=587
    ports:
      - "8025:8025"

volumes:
  librenms-db-data:
  librenms-data:
  librenms-rrd:

After deployment, complete the setup wizard at http://<server-ip>:8080/install.php. LibreNMS will guide you through database initialization and initial device discovery configuration.

OpenNetAdmin Docker Deployment

OpenNetAdmin does not have an official Docker image, but community-maintained images are available. Here is a working deployment using a community image:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
version: "3.8"
services:
  ona-db:
    image: mariadb:10.11
    container_name: ona-db
    environment:
      MYSQL_ROOT_PASSWORD: ona_root_pass
      MYSQL_DATABASE: ona
      MYSQL_USER: ona
      MYSQL_PASSWORD: ona_db_pass
    volumes:
      - ona-db-data:/var/lib/mysql

  ona-web:
    image: linuxserver/ona:latest
    container_name: ona-web
    ports:
      - "8080:80"
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=UTC
    volumes:
      - ona-config:/config
    depends_on:
      - ona-db

volumes:
  ona-db-data:
  ona-config:

If a community image is unavailable, you can install ONA on any LAMP stack:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# Ubuntu/Debian installation
sudo apt update
sudo apt install -y apache2 mariadb-server php php-mysql php-gd php-snmp

# Download and extract ONA
cd /var/www/html
sudo wget https://github.com/opennetadmin/ona/releases/download/v18.1.1/ona-18.1.1.tar.gz
sudo tar xzf ona-18.1.1.tar.gz
sudo mv ona-18.1.1 ona
sudo chown -R www-data:www-data ona

# Create database
sudo mysql -u root -e "CREATE DATABASE ona; CREATE USER 'ona'@'localhost' IDENTIFIED BY 'ona_db_pass'; GRANT ALL ON ona.* TO 'ona'@'localhost'; FLUSH PRIVILEGES;"

# Run the web installer at http://<server-ip>/ona/install.php

SNMP Configuration for Network Discovery

All three tools rely on SNMP to discover and inventory network devices. Proper SNMP configuration on your network equipment is essential for accurate discovery.

Configuring SNMPv3 on Cisco Switches

SNMPv3 is strongly recommended over v2c because it supports authentication and encryption:

1
2
3
4
5
6
7
8
9
! Create an SNMP group with auth+priv
snmp-server group NetDiscovery v3 auth read all write all

! Create an SNMP user with SHA authentication and AES encryption
snmp-server user netdisco_user NetDiscovery v3 auth sha YourAuthPass123 priv aes 128 YourPrivPass456

! Enable SNMP traps
snmp-server enable traps
snmp-server host <discovery-server-ip> version 3 auth netdisco_user

Configuring SNMPv3 on Juniper Devices

1
2
3
4
5
set snmp community public authorization read-only
set snmp v3 usm local-engine user netdisco_user authentication-sha256-authentication-password "YourAuthPass123"
set snmp v3 usm local-engine user netdisco_user privacy-aes128-privacy-password "YourPrivPass456"
set snmp v3 vacm security-to-group security-model usm security-name netdisco_user group netdisco-group
set snmp v3 vacm access group netdisco-group default-context-prefix read-view all-jn-view write-view all-jn-view

SNMP Credential Management in Netdisco

Once your devices are configured, add SNMP credentials to Netdisco through the admin interface or by editing the deployment.yml configuration:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# deployment.yml snippet
snmp_auth:
  - tag: "v3_auth_priv"
    seclevel: authPriv
    authpass: "YourAuthPass123"
    privpass: "YourPrivPass456"
    authproto: SHA
    privproto: AES
  - tag: "v2c_community"
    community: "public"

Netdisco will attempt each credential set in order during discovery, falling back gracefully when a device does not support a particular SNMP version.

Feature Deep Dive: Network Topology Mapping

Netdisco Topology Discovery

Netdisco builds topology maps by correlating data from multiple sources:

  • LLDP (Link Layer Discovery Protocol) — directly discovers physical connections between neighboring devices
  • CDP (Cisco Discovery Protocol) — Cisco-proprietary equivalent of LLDP
  • FDP (Foundry Discovery Protocol) — Brocade/Foundry equivalent
  • Bridge MIB (STP) data — infers connections by analyzing MAC address tables across switches
  • ARP table correlation — maps IP addresses to physical ports

The resulting topology is visualized through Graphviz-generated diagrams showing device-to-device links, port-to-port connections, and VLAN membership. Netdisco’s strength is its accuracy — it does not guess connections; it derives them from actual switch forwarding tables.

LibreNMS Network Maps

LibreNMS generates network maps using the xDP (CDP/LLDP/FDP/NDP/EDP/SONMP) data collected during polling. Its map interface is interactive and visually polished:

  • Auto-generated maps — created from xDP neighbor data without manual configuration
  • Custom maps — manually arrange devices and draw connections for documentation purposes
  • Device categorization — automatically classifies devices as routers, switches, firewalls, servers, etc.
  • Geographic maps — plot devices on a world map using GPS coordinates stored in device metadata

LibreNMS also integrates with Weathermap (a plugin) to create bandwidth utilization overlays on topology diagrams, showing which links are congested at a glance.

OpenNetAdmin Inventory Management

ONA takes a different approach to network visibility. Rather than automatic topology mapping, it focuses on maintaining an accurate, manually-curated inventory:

  • Subnet management — define subnets, track IP allocations, and visualize utilization
  • Device records — maintain detailed hardware and software inventories
  • Rack diagrams — document physical device placement in data center racks
  • DHCP scope tracking — correlate DHCP-assigned addresses with static allocations

ONA’s strength is its IP address management (IPAM) capabilities. If your primary need is tracking which IP addresses are assigned to which devices across multiple subnets, ONA provides a clean, searchable database for this purpose.

Choosing the Right Tool

The decision depends on your primary use case:

Choose Netdisco if:

  • Your main goal is knowing what device is connected to every switch port
  • You need accurate MAC address tracking and VLAN auditing
  • You manage a campus or enterprise network with hundreds of switches
  • You want automated, ongoing discovery without manual inventory entry

Choose LibreNMS if:

  • You need both discovery and monitoring in a single platform
  • You want beautiful, interactive network topology maps
  • You need alerting, graphing, and threshold monitoring alongside discovery
  • You prefer a modern, responsive web interface with mobile support

Choose OpenNetAdmin if:

  • Your primary need is IP address management and subnet planning
  • You want a lightweight tool focused on inventory tracking
  • You need to document rack layouts and physical device placement
  • You have a smaller network where manual inventory entry is feasible

For teams already running LibreNMS for monitoring, adding network discovery is essentially free — just enable the auto-discovery feature and configure SNMP credentials. If you already use a dedicated monitoring platform like Zabbix or Netdata, Netdisco provides the discovery layer that monitoring tools often lack.

Scaling Considerations

MetricNetdiscoLibreNMSOpenNetAdmin
Recommended Max Devices2,000+5,000+500
Database Size (1,000 devices)~5 GB~10 GB~1 GB
Polling Interval4-8 hours5-15 minutesManual/N/A
Horizontal ScalingMultiple daemonsDistributed pollersSingle instance
SNMP Walk PerformanceFast (optimized)Moderate (full polling)N/A

Netdisco separates the web frontend from the polling daemon, allowing you to run multiple daemon instances for parallel polling. LibreNMS supports distributed pollers through its dispatcher service, making it suitable for geographically distributed networks. ONA is primarily a single-instance application and does not scale well beyond a few hundred devices.

For broader network infrastructure management, see our network scanning tools comparison for proactive device discovery, and our IP address management guide for subnet planning and IP tracking.

FAQ

What is the difference between network discovery and network monitoring?

Network discovery focuses on finding devices on your network, mapping how they are connected, and maintaining an inventory of hardware and configurations. Network monitoring focuses on collecting metrics (CPU, memory, bandwidth, error rates) and generating alerts when thresholds are exceeded. Tools like Netdisco excel at discovery, while LibreNMS covers both discovery and monitoring in one platform.

Do these tools support SNMPv3 encryption?

Yes, all three tools support SNMPv3 with authentication (SHA/MD5) and privacy/encryption (AES/DES). SNMPv3 is strongly recommended for production environments because SNMPv2c sends community strings in plaintext, which can be intercepted on the network.

Can I discover wireless access points and controllers?

Yes. Netdisco and LibreNMS can discover wireless controllers (Cisco WLC, Aruba, UniFi) via SNMP and map connected access points. They can also discover wireless clients by reading the controller’s client tables, giving you visibility into who is connected to which access point.

How often should I run network discovery scans?

For Netdisco, a full discovery scan every 4-8 hours is typical for stable networks. LibreNMS polls devices every 5-15 minutes for monitoring purposes, with discovery data refreshed on each poll. OpenNetAdmin requires manual updates or scripted imports, so the refresh rate depends on your processes. More frequent scans catch topology changes faster but increase network traffic and database load.

Can these tools integrate with existing monitoring systems?

Yes. LibreNMS is a monitoring system itself, so no integration is needed. Netdisco provides a REST API that can feed discovery data into external monitoring platforms. OpenNetAdmin also offers a REST API for integration with ticketing systems, configuration management databases (CMDBs), and monitoring dashboards.

Do I need root access on network devices for discovery?

No. Network discovery tools use SNMP, which is a read-only protocol. You only need to configure SNMP community strings (v2c) or SNMPv3 credentials on your devices. No SSH or root access is required for basic discovery. However, some advanced features like configuration backup may require SSH access.

Advertise here
Advertise here