Deployment guide

Netdisco

Overview

Netdisco is an open-source, web-based network management tool for small to very large networks. It polls your switches, routers and access points over SNMP (and CLI or device APIs) and collects IP and MAC address data into a PostgreSQL database. Its web interface lets you inventory every device, browse and search ports and nodes, locate where a given MAC or IP address is connected, and view how devices link together.

The SecureAnyCloud image runs Netdisco 2.101000 on Ubuntu 24.04 on Azure. Netdisco ships by default with an anonymous full-access guest. This image disables that guest and generates a unique admin login on the first boot of every VM.

What you get:

  • Netdisco 2.101000 (BSD-3-Clause) run from the official netdisco/netdisco Docker images (a web frontend and a backend poller daemon), managed by netdisco-web.service and netdisco-backend.service
  • Netdisco published on port 80 via an nginx reverse proxy, so the web UI is reachable without exposing the container port
  • A bundled local PostgreSQL 16 database holding Netdisco's schema plus 33,850 MAC vendor (OUI) reference entries, ready to identify devices out of the box
  • A required login: the default anonymous guest is disabled (no_auth: false), and a per-VM admin user is seeded, so nothing is open to the network
  • A unique admin password, a unique PostgreSQL password and a unique SNMP read-only community, generated per VM on first boot and written to a root-only credentials file
  • postgresql@16-main.service, netdisco-web.service, netdisco-backend.service and nginx.service as systemd units, enabled and active
  • 24/7 SecureAnyCloud support

Prerequisites

  • An active Azure subscription, an SSH key pair, and a VNet plus subnet in the target region
  • Standard_B2s (2 vCPU / 4 GiB RAM) is a good starting point.
  • NSG inbound: allow 22/tcp from your management network and 80/tcp for the Netdisco web UI. Front the web UI with TLS for public exposure (see Enabling HTTPS).
  • The bundled PostgreSQL listens only on loopback and is never exposed.
  • Netdisco reaches your network devices over 161/udp (SNMP) outbound, so make sure your devices permit SNMP from this VM.

Step 1 - Deploy from the Azure Marketplace

Sign in to the Azure Portal. Choose Create a resource, search the Marketplace for Netdisco by SecureAnyCloud, and select Create.

On Basics, pick your subscription, resource group, region and size. Under Administrator account, choose SSH public key and paste your key. Under Inbound port rules, allow SSH (22) and HTTP (80).

Select Review + create, then Create.

Step 2 - Deploy from the Azure CLI

Deploy the image from the Azure CLI. Replace the values in angle brackets with your own:

# Accept the Marketplace terms once per subscription (required before the first CLI deploy)
az vm image terms accept --urn sac1647283583153:netdisco-ubuntu-24-04:default:latest
az vm create \
  --resource-group <your-rg> \
  --name netdisco \
  --image sac1647283583153:netdisco-ubuntu-24-04:default:latest \
  --size Standard_B2s \
  --admin-username azureuser \
  --ssh-key-values ~/.ssh/id_ed25519.pub \
  --vnet-name <your-vnet> --subnet <your-subnet> \
  --public-ip-sku Standard
az vm open-port --resource-group <your-rg> --name netdisco --port 80 --priority 1010

Step 3 - Connect to your VM

Connect to the VM over SSH:

ssh azureuser@<vm-public-ip>

Step 4 - Confirm the services are running

Check that all four services are active:

systemctl is-active postgresql@16-main.service netdisco-web.service netdisco-backend.service nginx.service

All four report active. On first boot, the image generates a unique admin password, a unique database password and a unique SNMP read-only community. It then starts the web frontend and the backend poller.

Step 5 - Retrieve your admin credentials

The first boot writes a root-only credentials file. Read it with sudo:

sudo cat /root/netdisco-credentials.txt

The file shows the web URL, the admin username (admin) and its unique password, and the per-VM SNMP read-only community. Keep this file safe. It is the only copy of the generated password.

Step 6 - Check the health endpoint

nginx proxies Netdisco's own health endpoint. It needs no authentication, so it suits a load balancer probe. It returns 200 when the database is reachable:

curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1/health

Step 7 - Confirm your login gates the tool

The anonymous guest is disabled. An unauthenticated request to a page such as the inventory therefore gets the login form, not the data. Confirm the tool is not open:

curl -s http://127.0.0.1/inventory | grep -q 'name="password"' && echo "login required - not open"

The login required - not open result confirms that unauthenticated visitors get the login form, so nothing is exposed without signing in.

Step 8 - Open Netdisco in your browser

Browse to http://<vm-public-ip>/. Sign in with the admin username and the password from your credentials file.

After you sign in, you land on the dashboard. It has a Find Anything search box and a Discover box to add your first device.

Step 9 - Add your first device

Netdisco discovers a device over SNMP and then follows its neighbors. In the Discover box on the dashboard, enter the hostname or IP address of a switch or router that permits SNMP from this VM. Select Discover.

By default, Netdisco uses the per-VM read-only community from your credentials file. You can also set a per-device community under Admin.

Discovery and later polling run as background jobs on the backend daemon. Watch them under Admin -> Job Queue.

Step 10 - Manage users

Open Admin -> User Management to see the per-VM admin account. Add further users here. Each user has their own password and optional administrator or port control rights.

The bundled database and MAC vendor data

The image ships PostgreSQL 16 with Netdisco's schema already deployed and the MAC vendor (OUI) reference data loaded. Device and node vendors are identified from the moment your first device is discovered.

Inspect the bundled database directly on the VM:

sudo -u postgres psql -d netdisco -c "SELECT count(*) AS mac_vendor_ouis FROM oui;"
sudo -u postgres psql -d netdisco -c "SELECT username, admin, port_control FROM users ORDER BY username;"

Security notes

  • The default Netdisco anonymous guest with full admin rights is disabled in this image (no_auth: false). A real login is always required.
  • The admin password, the PostgreSQL application role password and the SNMP read-only community are generated uniquely on the first boot of every VM. They are written to /root/netdisco-credentials.txt (mode 0600). No usable login ships inside the image.
  • The bundled PostgreSQL listens only on 127.0.0.1:5432 and is never exposed to the network.
  • Change or add web users under Admin -> User Management. To rotate the admin password later, edit the user there.
  • Only ports 22, 80 and 443 need to be open to the VM. Netdisco reaches your devices outbound over SNMP.

Enabling HTTPS

For public exposure, put the VM behind a certificate. Point a DNS name at the VM and open 443/tcp. Install a certificate with your preferred tool, for example Certbot with the nginx plugin. Let nginx terminate TLS in front of the reverse proxy.

For example, with Certbot:

sudo apt-get update && sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.example.com

Certbot edits the existing nginx site to serve HTTPS and sets up automatic renewal.

Maintenance

  • Service status: systemctl status netdisco-web.service netdisco-backend.service
  • Logs: journalctl -u netdisco-web.service and journalctl -u netdisco-backend.service, plus sudo ls /var/lib/netdisco/logs
  • Configuration: static policy lives in /var/lib/netdisco/config/deployment.yml. Per-VM secrets are in /var/lib/netdisco/netdisco.env.
  • Database backups: sudo -u postgres pg_dump netdisco > netdisco-backup.sql
  • OS updates: unattended security upgrades are enabled, and the base is fully patched at build time.

Support

Every SecureAnyCloud image is backed by 24/7 support. If you have a question about this image or need help with a deployment, contact the SecureAnyCloud team.

Deploy on Azure

Launch Netdisco on Ubuntu 24.04 LTS on Azure with 24/7 support from SecureAnyCloud.

View this image

Need Help?

Our support team is available 24/7.

sales@secureanycloud.com

Deploy on Azure