NetBox Plugin Catalog
A NetBox plugin that provides an in-app catalog for browsing and installing third-party NetBox plugins.
Features
- Browse Plugins: Discover NetBox plugins from PyPI with rich metadata
- Curated Catalog: Quality ratings, categories, and compatibility information
- One-Click Install: Install plugins directly from the NetBox UI via pip
- Compatibility Checking: Verify plugin compatibility with your NetBox version
- Installation History: Track all plugin installation attempts
- Smart Detection: Auto-detect installed and activated plugins
Requirements
- NetBox 4.0.0 or higher
- Python 3.10 or higher
Installation
Via pip
pip install netbox-plugin-catalog
Via source
git clone https://github.com/sieteunoseis/netbox-plugin-catalog.git
cd netbox-plugin-catalog
pip install .
Configuration
Add the plugin to your configuration.py:
PLUGINS = [
'netbox_catalog',
]
PLUGINS_CONFIG = {
'netbox_catalog': {
'pypi_cache_timeout': 3600, # Cache PyPI data for 1 hour
'catalog_json_url': '', # Optional: remote catalog.json URL
'allow_install': True, # Enable/disable pip install feature
'show_uncurated': True, # Show plugins not in curated list
'pypi_index_url': 'https://pypi.org', # PyPI mirror support
}
}
Run migrations:
python manage.py migrate
Collect static files:
python manage.py collectstatic --no-input
Restart NetBox.
Usage
Browsing Plugins
Navigate to Plugins > Plugin Catalog > Browse Plugins to view all available NetBox plugins.
You can filter by:
- Search: Filter by name, summary, or author
- Category: Network Management, Security, Automation, etc.
- Certification: Certified, Compatible, Untested, Deprecated
- Status: Installed, Not Installed, Activated, Upgrade Available
- Compatibility: Compatible, Incompatible, Unknown
Installing Plugins
- Click on a plugin to view details
- Click Install (or Upgrade if already installed)
- Confirm the installation
- Follow the post-installation instructions:
- Add the plugin to
PLUGINSinconfiguration.py - Run
python manage.py migrate - Run
python manage.py collectstatic - Restart NetBox
- Add the plugin to
Compatibility Detection
The plugin checks compatibility through multiple sources:
- Curated catalog: Manually verified compatibility info in
catalog.json - PluginConfig: After pip install, reads
min_version/max_versionfrom plugin - README parsing: Attempts to extract version info from description (fallback)
Compatibility status is shown with clear indicators:
- Compatible: Plugin works with your NetBox version
- Unknown: No compatibility information available
- Incompatible: Plugin requires a different NetBox version
Curated Catalog
The catalog.json file provides curated metadata for plugins:
{
"plugins": {
"netbox-bgp": {
"category": "Network Management",
"tags": ["routing", "bgp"],
"certification": "certified",
"netbox_min_version": "4.0.0",
"notes": "Official BGP plugin",
"recommended": true,
"featured": true
}
}
}
Updating the Catalog
You can host your own catalog JSON and configure it:
PLUGINS_CONFIG = {
'netbox_catalog': {
'catalog_json_url': 'https://example.com/netbox-plugins.json',
}
}
Docker Installation
For Docker deployments, the plugin can automatically add packages to requirements-extra.txt instead of using pip directly. This allows installations to persist across container restarts.
Setup
- Mount requirements-extra.txt as read-write in your
docker-compose.yml:
services:
netbox:
volumes:
- ./requirements-extra.txt:/opt/netbox/requirements-extra.txt:rw
- Set file permissions so the NetBox process can write to it:
# The NetBox container runs the web process as 'unit' user (UID 999)
# The file needs to be writable by this user
chmod 666 ./requirements-extra.txt
- Restart the container to apply the volume mount changes.
How It Works
When properly configured:
- Click Add to Requirements on a plugin's install page
- The package spec is appended to
requirements-extra.txt - Edit
configuration/plugins.pyto add the plugin toPLUGINS - Restart the container:
docker-compose down && docker-compose up -d - The container startup script installs packages from
requirements-extra.txt
Troubleshooting
If you see "Manual Installation Required" instead of the install button:
- Verify
requirements-extra.txtis mounted with:rw(not:ro) - Check file permissions:
ls -la requirements-extra.txt - Ensure the file exists (create an empty one if needed)
Security Considerations
- Permissions: Only users with
netbox_catalog.add_installationlogpermission can install plugins - pip install: Runs in the same Python environment as NetBox
- Docker: Writes to requirements-extra.txt, which is installed on container restart
- Network access: Requires outbound HTTPS to pypi.org
Contributing
Contributions are welcome! Please feel free to submit issues and pull requests.
Adding Plugins to Curated Catalog
To add a plugin to the curated catalog, submit a PR updating catalog.json with:
category: One of the predefined categoriestags: Relevant keywordscertification: certified, compatible, untested, or deprecatednetbox_min_version: Minimum supported NetBox versionnotes: Brief description or compatibility notesrecommended: Whether the plugin is recommendedfeatured: Whether to show in featured section
License
Apache License 2.0
Acknowledgments
- NetBox - The leading network source of truth
- NetBox Labs - Plugin catalog inspiration
- All the NetBox plugin developers
Release files for netbox-plugin-catalog 0.3.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| netbox_plugin_catalog-0.3.3.tar.gz | 43.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| netbox_plugin_catalog-0.3.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 95.0 kB
Release files / netbox_plugin_catalog-0.3.3.tar.gz
| Download URL | netbox_plugin_catalog-0.3.3.tar.gz |
|---|---|
| Size | 43.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9d564b72993b9828644c014f1627ba0eb64c9fd4a9fdd29d7303f2e0b30538b7
|
|
BLAKE2b-256 checksum How to use checksums |
5e71ccc1eefe5873e1585bf5f92bd41a1fe1387ae43f6e93bdd23a852288031d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 13, 2026.
Transparency logRelease files / netbox_plugin_catalog-0.3.3-py3-none-any.whl
| Download URL | netbox_plugin_catalog-0.3.3-py3-none-any.whl |
|---|---|
| Size | 51.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
425ea27875ce36d59b6b61bd4c1911bc2bde2756e52e75a3c7327af675bdfc4d
|
|
BLAKE2b-256 checksum How to use checksums |
ae677291895185c0e4102e54d0250880d584bebceed20da6db5b12d1d3dc2a65
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 13, 2026.
Transparency log