{"id":17906632,"url":"https://github.com/bonzo81/netbox-librenms-plugin","last_synced_at":"2026-04-20T12:14:11.174Z","repository":{"id":257797844,"uuid":"862600771","full_name":"bonzo81/netbox-librenms-plugin","owner":"bonzo81","description":"Netbox plugin to sync data between LibreNMS and Netbox","archived":false,"fork":false,"pushed_at":"2026-04-13T13:52:41.000Z","size":11258,"stargazers_count":93,"open_issues_count":5,"forks_count":11,"subscribers_count":6,"default_branch":"master","last_synced_at":"2026-04-13T14:27:08.618Z","etag":null,"topics":["hacktoberfest","librenms","netbox","netbox-plugin","plugin"],"latest_commit_sha":null,"homepage":"https://across-the-wire.gitbook.io/netbox-librenms-plugin/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bonzo81.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":"bonzo81","thanks_dev":null,"custom":null}},"created_at":"2024-09-24T21:53:14.000Z","updated_at":"2026-04-13T12:54:36.000Z","dependencies_parsed_at":"2026-01-17T11:05:44.696Z","dependency_job_id":null,"html_url":"https://github.com/bonzo81/netbox-librenms-plugin","commit_stats":null,"previous_names":["bonzo81/netbox-librenms-plugin"],"tags_count":36,"template":false,"template_full_name":null,"purl":"pkg:github/bonzo81/netbox-librenms-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bonzo81%2Fnetbox-librenms-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bonzo81%2Fnetbox-librenms-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bonzo81%2Fnetbox-librenms-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bonzo81%2Fnetbox-librenms-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bonzo81","download_url":"https://codeload.github.com/bonzo81/netbox-librenms-plugin/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bonzo81%2Fnetbox-librenms-plugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31840121,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T11:29:19.690Z","status":"ssl_error","status_checked_at":"2026-04-15T11:29:19.171Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hacktoberfest","librenms","netbox","netbox-plugin","plugin"],"created_at":"2024-10-28T19:01:29.643Z","updated_at":"2026-04-15T12:03:18.284Z","avatar_url":"https://github.com/bonzo81.png","language":"Python","funding_links":["https://buymeacoffee.com/bonzo81"],"categories":["Plugins"],"sub_categories":[],"readme":"# NetBox LibreNMS Plugin\n\nThe NetBox LibreNMS Plugin enables integration between NetBox and LibreNMS, allowing you to leverage data from both systems. NetBox remains the Source of Truth (SoT) for you network, but\nthis plugin allows you to easily onboard device objects from existing data in LibreNMS. The plugin does not automatically create objects in NetBox to ensure only verified data is used to populate NetBox.\n\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/bonzo81/netbox-librenms-plugin)\n## Features\n\nThe plugin offers the following key features:\n\n### Device Import\nSearch and import devices from LibreNMS into NetBox with comprehensive validation and control:\n\n- Filter devices by location, type, OS, hostname, or system name\n- Validate import prerequisites (Site, Device Type, Device Role)\n- Smart matching for Sites, Device Types, and Platforms\n- Import as physical Devices or Virtual Machines\n- Bulk import multiple devices\n- Automatic Virtual Chassis creation for stackable switches\n- Background job processing for large device sets\n\nSee the [Device Import Guide](docs/librenms_import/overview.md) for detailed usage instructions.\n\n### Device Field Sync\nSynchronize device information from LibreNMS to NetBox. The following device fields can be synchronized:\n\n- Device Name (with naming preference support)\n- Serial Number (including virtual chassis members)\n- Device Type\n- Platform\n\n### Interface Sync\nPull interface data from Devices and Virtual Machines from LibreNMS into NetBox. The following interface attributes are synchronized:\n\n- Name\n- Description\n- Status (Enabled/Disabled)\n- Type (with [custom mapping support](docs/usage_tips/interface_mappings.md))\n- Speed\n- MTU\n- MAC Address\n- VLAN (Tagged and untagged)\n\n\u003e Set custom mappings for interface types to ensure that the correct interface type is used when syncing from LibreNMS to NetBox.\n\n### Cable Sync\nCreate cable connection in NetBox from LibreNMS links data.\n\n### IP Address Sync\nCreate IP address in NetBox from LibreNMS device IP data.\n\n### VLAN Sync\n- Create VLAN objects in NetBox from LibreNMS device VLAN data\n- Per-VLAN group assignment with scope-aware auto-selection\n\n### Add device to LibreNMS from Netbox\n\n- Add device to LibreNMS from Netbox device page. SNMP v2c and v3 are supported.\n\n### Site \u0026 Location Synchronization\nThe plugin also supports synchronizing NetBox Sites with LibreNMS locations:\n- Compare NetBox sites to LibreNMS location data\n- Create LibreNMS locations to match NetBox sites\n- Update existing LibreNMS locations latitude and longitude values based on NetBox data ⚠️ *(currently not working due to LibreNMS API issue)*\n- Sync device site to LibreNMS location\n\n### Multi LibreNMS Server Configuration\n- Configure multiple LibreNMS instances in your NetBox configuration\n- Switch between different LibreNMS servers through the web interface\n- Maintain backward compatibility with single-server configurations\n\n## Screenshots/GIFs\n\u003eScreenshots from older plugin version\n#### Site \u0026 Location Sync\n![Site Location Sync](docs/img/Netbox-librenms-plugin-Sites.gif)\n\n#### Sync devices and Interfaces\n![Add device and interfaces](docs/img/Netbox-librenms-plugin-interfaceadd.gif)\n\n#### Virtual Chassis Member Select\n![Virtual Chassis Member Selection](docs/img/Netbox-librenms-plugin-virtualchassis.gif)\n\n#### Interface Type Mappings\n![Interfaces Type Mappings](docs/img/Netbox-librenms-plugin-mappings.png)\n\n\n\n## Contributing\nThere's more to do! Coding is not my day job. Bugs will exist and improvements will be needed. Contributions are very welcome!  I've got more ideas for new features and improvements but please [contribute](docs/contributing.md) if you can!\n\n### Development Environment\nAn easy way to get started with development is to use the included **development container**:\n\n- **Local Development**: Open the project in VS Code and choose \"Reopen in Container\"\n- **GitHub Codespaces**: Click \"Code\" → \"Create codespace\" in the GitHub repository\n- **Ready in 5 minutes**: A complete NetBox environment with PostgreSQL, Redis, and the plugin pre-installed\n\n📖 **[See the Dev Container README](.devcontainer/README.md)** for detailed setup instructions, available commands, and troubleshooting.\n\nAlternatively, share your ideas for the plugin over in [discussions](https://github.com/bonzo81/netbox-librenms-plugin/discussions).\n\n## Compatibility\n\n| NetBox Version | Plugin Version |\n|----------------|----------------|\n|     4.1        | 0.2.x - 0.3.5  |\n|     4.2 - 4.5       | 0.3.6+          |\n## Installing\n\n\n### Standard Installation\n\nActivate your virtual environment and install the plugin:\n\n```bash\nsource /opt/netbox/venv/bin/activate\n```\nInstall with pip:\n\n```bash\n(venv) $ pip install netbox-librenms-plugin\n```\n\nAdd to your `local_requirements.txt` to ensure it is automatically reinstalled during future upgrades.\n\n```bash\necho \"netbox-librenms-plugin\" \u003e\u003e /opt/netbox/local_requirements.txt #Check your NetBox install location\n```\n\n### Docker\n\nFor adding to a NetBox Docker setup see how to create a custom Docker image.\n[the general instructions for using netbox-docker with plugins](https://github.com/netbox-community/netbox-docker/wiki/Using-Netbox-Plugins).\n\nAdd the plugin to `plugin_requirements.txt` (netbox-docker):\n\n```bash\n# plugin_requirements.txt\nnetbox-librenms-plugin\n```\n\n## Configuration\n\n### 1. Enable the Plugin\n\nEnable the plugin in `/opt/netbox/netbox/netbox/configuration.py`, or if you use netbox-docker, your `/configuration/plugins.py` file :\n\n```python\nPLUGINS = [\n    'netbox_librenms_plugin'\n]\n```\n\n### 2. Apply the plugin configuration\n\nMulti server example:\n```python\nPLUGINS_CONFIG = {\n    'netbox_librenms_plugin': {\n        'servers': {\n            'production': {\n                'display_name': 'Production LibreNMS',\n                'librenms_url': 'https://librenms-prod.example.com',\n                'api_token': 'your_production_token',\n                'cache_timeout': 300,\n                'verify_ssl': True,\n                'interface_name_field': 'ifDescr'\n            },\n            'testing': {\n                'display_name': 'Test LibreNMS',\n                'librenms_url': 'https://librenms-test.example.com',\n                'api_token': 'your_test_token',\n                'cache_timeout': 300,\n                'verify_ssl': False,\n                'interface_name_field': 'ifName'\n            },\n            'development': {\n                'display_name': 'Dev LibreNMS',\n                'librenms_url': 'https://librenms-dev.example.com',\n                'api_token': 'your_dev_token',\n                'cache_timeout': 180,\n                'verify_ssl': False,\n                'interface_name_field': 'ifDescr'\n            }\n        }\n    }\n}\n```\n\nOr use the original single server confiig example:\n\n```python\nPLUGINS_CONFIG = {\n    'netbox_librenms_plugin': {\n        'librenms_url': 'https://your-librenms-instance.com',\n        'api_token': 'your_librenms_api_token',\n        'cache_timeout': 300,\n        'verify_ssl': True, # Optional: Change to False if needed,\n        'interface_name_field': 'ifDescr', # Optional: LibreNMS field used for interface name. ifName used as default\n    }\n}\n```\n\n### 3. Apply Database Migrations\n\nApply database migrations with Netbox `manage.py`:\n\n```\n(venv) $ python manage.py migrate\n```\n\n### 4. Collect Static Files\n\nThe plugin includes static files that need to be collected by NetBox. Run the following command to collect static files:\n\n```\n(venv) $ python manage.py collectstatic --no-input\n```\n\n### 5. Restart Netbox\n\nRestart the Netbox service to apply changes:\n\n```\nsudo systemctl restart netbox\n```\n\n### 6. Custom Field\n\nAs of version 0.4.4, the plugin **automatically creates** the `librenms_id` custom field (JSON type) when migrations are run. No manual setup is required.\n\nThe field is created for Device, Virtual Machine, Interface, and VM Interface objects and stores a per-server mapping (e.g., `{\"production\": 42}`).\n\nFor more info check out [custom field docs](docs/usage_tips/custom_field.md)\n\n## Update\n\n```\nsource /opt/netbox/venv/bin/activate\npip install -U netbox-librenms-plugin\npython manage.py migrate\npython manage.py collectstatic --no-input\nsystemctl restart netbox\n```\n\n\n## Uninstall\n\nSee [the instructions for uninstalling plugins](https://netboxlabs.com/docs/netbox/en/stable/plugins/removal/).\n\n## Credits\n\nBased on the NetBox plugin tutorial and docs:\n\n- [demo repository](https://github.com/netbox-community/netbox-plugin-demo)\n- [tutorial](https://github.com/netbox-community/netbox-plugin-tutorial)\n- [docs](https://netboxlabs.com/docs/netbox/en/stable/plugins/development/)\n\nThis package was created with [Cookiecutter](https://github.com/audreyr/cookiecutter). Thanks to the [`netbox-community/cookiecutter-netbox-plugin`](https://github.com/netbox-community/cookiecutter-netbox-plugin) for the project template.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbonzo81%2Fnetbox-librenms-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbonzo81%2Fnetbox-librenms-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbonzo81%2Fnetbox-librenms-plugin/lists"}