Skip to content

Installation

netbox-peering-manager is a NetBox plugin and follows the standard NetBox plugin install flow, with one extra step: netbox-routing is installed and migrated first.

Requirements

  • A NetBox and Python version supported by the plugin release you install. See the compatibility table.
  • PostgreSQL (whatever NetBox itself supports).
  • A running NetBox RQ worker if you plan to use IRR prefix-list sync jobs (make rqworker in the dev setup, or your production worker service).
  • Optional: a running fastbgpq4 instance if you plan to use IRR sync.
  • Optional: a PeeringDB API key if you plan to read fields that PeeringDB gates behind authentication (contact info, etc.).

Install netbox-routing first

source /opt/netbox/venv/bin/activate
pip install netbox-routing

Add it to PLUGINS in configuration.py and run migrations:

PLUGINS = [
    "netbox_routing",
]
cd /opt/netbox/netbox
python manage.py migrate

Restart NetBox and confirm that the routing models show up in the UI under the Routing menu before moving on.

Install netbox-peering-manager

source /opt/netbox/venv/bin/activate
pip install netbox-peering-manager

Add the plugin to PLUGINS in configuration.py. Order matters: netbox_routing must come first, because Django evaluates the required_plugins declaration during app loading.

PLUGINS = [
    "netbox_routing",
    "netbox_peering_manager",
]

Run the plugin migrations:

cd /opt/netbox/netbox
python manage.py migrate netbox_peering_manager

Restart NetBox (systemctl restart netbox netbox-rq on a typical install). You should now see a top-level Peering menu in the navigation, with sub-menus for Peering, Fabrics, and IRR.

Pinning for production

Pin both plugins in your local_requirements.txt so upgrades are deterministic. Record the versions you just installed and validated:

pip freeze | grep -iE '^netbox[-_](routing|peering[-_]manager)==' >> /opt/netbox/local_requirements.txt

Re-run pip install -r local_requirements.txt && python manage.py migrate after every NetBox or plugin upgrade.

Verify the install

Open the NetBox shell and confirm the apps and the JobRunners are registered:

cd /opt/netbox/netbox
python manage.py nbshell
from django.apps import apps
apps.get_app_config("netbox_peering_manager")
# <PeeringManagerConfig: netbox_peering_manager>

from netbox_peering_manager.jobs import SyncPrefixListJob, SyncAllPrefixListsJob
SyncPrefixListJob.Meta.name
# 'Sync Prefix List from IRR'

If both lines work, the plugin is loaded correctly.

Upgrading

The plugin is published to PyPI. Standard upgrade flow:

source /opt/netbox/venv/bin/activate
pip install --upgrade netbox-peering-manager
cd /opt/netbox/netbox
python manage.py migrate netbox_peering_manager
systemctl restart netbox netbox-rq

If you are migrating from v0.1.x, see the Upgrading from v0.1.x section in the project README. That migration is destructive: it drops every netbox_peering_manager_* table and rebuilds them, and assumes you have already migrated your BGP data into netbox-routing.

Next steps