A NetBox plugin for browsing and installing third-party plugins
Project description
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
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file netbox_plugin_catalog-0.1.4.tar.gz.
File metadata
- Download URL: netbox_plugin_catalog-0.1.4.tar.gz
- Upload date:
- Size: 31.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea5f8f9deb2241439cac2f702afe9b6b975ab74c718dffef4f0b3bb83c5e820b
|
|
| MD5 |
19128a6446740279f5948c2f85d98e2e
|
|
| BLAKE2b-256 |
66cbfc204e6ece2c56e42fb8eaf31264bb20fc445cba05fdef2818fadf1d46e3
|
Provenance
The following attestation bundles were made for netbox_plugin_catalog-0.1.4.tar.gz:
Publisher:
release.yml on sieteunoseis/netbox-plugin-catalog
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
netbox_plugin_catalog-0.1.4.tar.gz -
Subject digest:
ea5f8f9deb2241439cac2f702afe9b6b975ab74c718dffef4f0b3bb83c5e820b - Sigstore transparency entry: 934006899
- Sigstore integration time:
-
Permalink:
sieteunoseis/netbox-plugin-catalog@f47bba309413d2e36e17dbd44ca95fb8aa97f8e8 -
Branch / Tag:
refs/tags/v0.1.4 - Owner: https://github.com/sieteunoseis
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f47bba309413d2e36e17dbd44ca95fb8aa97f8e8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file netbox_plugin_catalog-0.1.4-py3-none-any.whl.
File metadata
- Download URL: netbox_plugin_catalog-0.1.4-py3-none-any.whl
- Upload date:
- Size: 38.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c6f2e05e626cb30899c875eaac4bb685f26826e4111be9d61d3ae596fa22461c
|
|
| MD5 |
47b9703ea85986a0d27c87beddf06d34
|
|
| BLAKE2b-256 |
54728cdac3a7fbe2253bf2277cb43c303ecf982383b10603d49cee8e1355d41e
|
Provenance
The following attestation bundles were made for netbox_plugin_catalog-0.1.4-py3-none-any.whl:
Publisher:
release.yml on sieteunoseis/netbox-plugin-catalog
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
netbox_plugin_catalog-0.1.4-py3-none-any.whl -
Subject digest:
c6f2e05e626cb30899c875eaac4bb685f26826e4111be9d61d3ae596fa22461c - Sigstore transparency entry: 934006939
- Sigstore integration time:
-
Permalink:
sieteunoseis/netbox-plugin-catalog@f47bba309413d2e36e17dbd44ca95fb8aa97f8e8 -
Branch / Tag:
refs/tags/v0.1.4 - Owner: https://github.com/sieteunoseis
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f47bba309413d2e36e17dbd44ca95fb8aa97f8e8 -
Trigger Event:
push
-
Statement type: