{"id":13585986,"url":"https://github.com/iDebugAll/nextbox-ui-plugin","last_synced_at":"2025-04-07T14:33:02.970Z","repository":{"id":41313392,"uuid":"266204894","full_name":"iDebugAll/nextbox-ui-plugin","owner":"iDebugAll","description":"A topology visualization plugin for Netbox powered by NextUI Toolkit","archived":false,"fork":false,"pushed_at":"2024-07-25T19:01:52.000Z","size":2275,"stargazers_count":467,"open_issues_count":63,"forks_count":59,"subscribers_count":30,"default_branch":"master","last_synced_at":"2024-10-02T21:05:32.339Z","etag":null,"topics":["netbox","netbox-docker","netbox-plugin","nextui","topology-visualization"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iDebugAll.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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}},"created_at":"2020-05-22T20:50:09.000Z","updated_at":"2024-09-18T16:40:57.000Z","dependencies_parsed_at":"2024-06-07T22:29:35.842Z","dependency_job_id":"514ae74c-5bc1-45d9-99d9-b210372152b2","html_url":"https://github.com/iDebugAll/nextbox-ui-plugin","commit_stats":{"total_commits":71,"total_committers":8,"mean_commits":8.875,"dds":0.3943661971830986,"last_synced_commit":"7efc5e0c42a4bd0c376391dbb740b2c3e8bd0dfe"},"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iDebugAll%2Fnextbox-ui-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iDebugAll%2Fnextbox-ui-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iDebugAll%2Fnextbox-ui-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iDebugAll%2Fnextbox-ui-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iDebugAll","download_url":"https://codeload.github.com/iDebugAll/nextbox-ui-plugin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223284934,"owners_count":17119808,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["netbox","netbox-docker","netbox-plugin","nextui","topology-visualization"],"created_at":"2024-08-01T15:05:15.469Z","updated_at":"2025-04-07T14:33:02.963Z","avatar_url":"https://github.com/iDebugAll.png","language":"Python","funding_links":[],"categories":["Python","Uncategorized","Plugins"],"sub_categories":["Uncategorized"],"readme":"# NextBox UI Plugin\n\nNextBox UI is a Next Generation topology visualization plugin for [NetBox](https://github.com/netbox-community/netbox) powered by topoSphere SDK.\u003cbr/\u003e\n\nThe Plugin delivers adaptive and scalable network topology maps, featuring advanced auto-layout algorithms, extended Filters, and multiple export options. Designed for efficiency and flexibility, NextBox UI enhances the visualization and management of complex network infrastructures within NetBox, providing users with intuitive tools to customize views, streamline network planning, and facilitate comprehensive data analysis.\n\n## ⭐️ Community Survey ⭐️\n\n\u003e **We value your feedback!**  \n\u003e Since launching v1.0, NextBox-UI Plugin with topoSphere has experienced rapid growth.\u003c/br\u003e\n\u003e Please help shape its future by taking a brief 5-minute anonymous survey about your experience and feature needs:\n\u003e\n\u003e 👉 [Take the Survey Now](https://forms.gle/XN8SB6UdytjPrbh86)\n\n\u003c/br\u003e\n\n\n![](samples/topology_viewer_light_mode.png)\n*Now with Dark Mode!*\n![](samples/topology_viewer_dark_mode.png)\n\n# Compatibility\n\n|     NetBox     |NextBox UI Plugin|\n|----------------|-----------------|\n| NetBox 3.5.x   | == v0.14.0      |\n| NetBox 3.6.x   | == v0.14.0      |\n| NetBox 3.7.x   | == v0.14.0      |\n| NetBox 4.0.x   | \u003e= v0.15.0      |\n| NetBox 4.1.x   | \u003e= v1.0.0       |\n| NetBox 4.2.x   | \u003e= v1.0.7       |\n\n\n# Installation\n\nGeneral installation steps and considerations follow the [official guidelines](https://netbox.readthedocs.io/en/stable/plugins/).\n\n### Package Installation from PyPi\n\nAssuming you use a Virtual Environment for Netbox:\n```\n$ source /opt/netbox/venv/bin/activate\n(venv) $ pip3 install nextbox-ui-plugin\n```\n\n### Package Installation from Source Code\nThe source code is available on [GitHub](https://github.com/iDebugAll/nextbox-ui-plugin).\u003cbr/\u003e\nDownload and install the package. Assuming you use a Virtual Environment for Netbox:\n```\n$ git clone https://github.com/iDebugAll/nextbox-ui-plugin\n$ cd nextbox-ui-plugin\n$ source /opt/netbox/venv/bin/activate\n(venv) $ pip3 install .\n```\n\nTo ensure NextBox UI plugin is automatically re-installed during future upgrades, create a file named `local_requirements.txt` (if not already existing) in the NetBox root directory (alongside `requirements.txt`) and list the `nextbox-ui-plugin` package:\n\n```no-highlight\n# echo nextbox-ui-plugin \u003e\u003e local_requirements.txt\n```\n\n### Enable the Plugin\nIn the global Netbox **plugins.py** configuration file, update or add `PLUGINS` parameter:\n```python\nPLUGINS = [\n    'nextbox_ui_plugin',\n]\n```\n\nOptionally, update a PLUGINS_CONFIG parameter in **configuration.py** to rewrite default plugin behavior:\n```python\n#PLUGINS_CONFIG = {\n#    'nextbox_ui_plugin': {\n#        'layers_sort_order': (\n#            ADD YOUR SETTINGS HERE\n#            layer_sort_order is a tuple\n#        ),\n#        'icon_model_map': {\n#            ADD YOUR SETTINGS HERE\n#            icon_model_map is a dict\n#        },\n#        'icon_role_map': {\n#            ADD YOUR SETTINGS HERE\n#            icon_role_map is a dict\n#        }\n#        'INITIAL_LAYOUT': 'auto' # or 'layered'\n#    }\n#}\n```\nBy default, the Plugin orders devices on a visualized topology based their roles in Netbox device attributes.\u003cbr/\u003e This order may be controlled by 'layers_sort_order' parameter. Default sort order includes most commonly used naming conventions:\n```\n(\n    'undefined',\n    'outside',\n    'border',\n    'edge',\n    'edge-switch',\n    'edge-router',\n    'core',\n    'core-router',\n    'core-switch',\n    'distribution',\n    'distribution-router',\n    'distribution-switch',\n    'leaf',\n    'spine',\n    'access',\n    'access-switch',\n)\n```\n\nBy default, the Plugin automatically tries to identify the device icon type based on following logic:\n1. 'icon_{icon_type}' tag in the Netbox Device tags.\n   Assign a tag to the device to manually control the displayed icon type (e.g. 'icon_router' or 'icon_switch').\n   Supported icon types:\n```\n{\n    'switch',\n    'router',\n    'firewall',\n    'wlc',\n    'unknown',\n    'server',\n    'phone',\n    'nexus5000',\n    'ipphone',\n    'host',\n    'camera',\n    'accesspoint',\n    'groups',\n    'groupm',\n    'groupl',\n    'cloud',\n    'unlinked',\n    'hostgroup',\n    'wirelesshost',\n}\n```\n2. If no valid 'icon_{icon_type}' tags found, the Plugin checks the default icon to device_type mapping. You can control this behavior with 'icon_model_map' dict. The Plugin checks for substring in a full device_type attribute. Default mapping:\n\n```\n{\n    'CSR1000V': 'router',\n    'Nexus': 'switch',\n    'IOSXRv': 'router',\n    'IOSv': 'switch',\n    '2901': 'router',\n    '2911': 'router',\n    '2921': 'router',\n    '2951': 'router',\n    '4321': 'router',\n    '4331': 'router',\n    '4351': 'router',\n    '4421': 'router',\n    '4431': 'router',\n    '4451': 'router',\n    '2960': 'switch',\n    '3750': 'switch',\n    '3850': 'switch',\n    'ASA': 'firewall',\n}\n```\nKeys are searched substrings. Values should be valid icon types as listed above.\u003cbr/\u003e\n\n3. If no match found on steps 1-2, the Plugin checks the Device Role slug to Icon mapping.\u003cbr/\u003e\nThis mapping may be defined within 'icon_role_map' dict in Plugin parameters.\u003cbr/\u003e\nDefault mapping already contains some general categories:\n```\n{\n    'border': 'router',\n    'edge-switch': 'switch',\n    'edge-router': 'router',\n    'core-router': 'router',\n    'core-switch': 'switch',\n    'distribution': 'switch',\n    'distribution-router': 'router',\n    'distribution-switch': 'switch',\n    'leaf': 'switch',\n    'spine': 'switch',\n    'access': 'switch',\n    'access-switch': 'switch',\n}\n```\n\n4. Default value is 'unknown'.\n\u003cbr/\u003e\u003cbr/\u003e\n\n\nDevice layers are ordered automatically by default. You can control this behavior with INITIAL_LAYOUT plugin parameter. Valid options are 'layered', and 'auto'.\u003cbr/\u003e\n'auto' layout relies on topoSphere best-effort algorithms. It spreads the Nodes across the view so they would be as distant from each other as possible.\n\n\n### Collect Static Files\nThe Plugin contains static files for topology visualization. They should be served directly by the HTTP frontend. In order to collect them from the package to the Netbox static root directory use the following command:\n```\n(venv) $ cd /opt/netbox/netbox/\n(venv) $ python3 manage.py collectstatic\n```\n\n### Restart Netbox\nRestart the WSGI service to apply changes:\n```\nsudo systemctl restart netbox\n```\n\n# Installation with Docker\nThe Plugin may be installed in a Netbox Docker deployment. \nThe package contains a Dockerfile for [Netbox-Community Docker](https://github.com/netbox-community/netbox-docker) extension. Latest-LDAP version is used by default as a source.\u003cbr/\u003e\nDownload the Plugin and build from the source:\n```\n$ git clone https://github.com/iDebugAll/nextbox-ui-plugin\n$ cd nextbox-ui-plugin\n$ docker build -t netbox-custom .\n```\nUpdate a netbox image name in **docker-compose.yml** in a Netbox Community Docker project root:\n```yaml\nservices:\n  netbox: \u0026netbox\n    image: netbox-custom:latest\n```\n\nIn the global Netbox **plugins.py** configuration file, update or add `PLUGINS` parameter:\n```python\nPLUGINS = [\n    'nextbox_ui_plugin',\n]\n```\n\nOptionally, update `PLUGIN_CONFIG` parameter with required custom preferences.\n\nRebuild the running docker containers:\n```\n$ cd netbox-docker\n$ docker-compose down\n$ docker-compose up -d\n```\n\nCollect static files:\n```\n$ docker-compose exec -u root  netbox python3 /opt/netbox/netbox/manage.py collectstatic --no-input\n```\n\n# Fixing Common Installation and Post-Upgrade Issues\n\nIf you are experiencing some unexpected errors or visual behaviors after the installation or upgrade, please make sure that you execute the following steps first:\n\n1. Double-check the plugin name in the **plugins.py**. It's `nextbox_ui_plugin`.\n2. Make sure that the plugin is installed into Netbox venv.\n3. Clear your browser cache and reload the page.\n4. Re-collect static files: `(venv) $ python3 manage.py collectstatic --clear`.\n\n# Usage\n\nOnce installed and initialized, the Plugin will be available via Topology Viewer main menu item in NetBox.\n\n\n### Required Netbox User Permissions\nThe Plugin requires the following user permissions to access the topology view:\n\n  - dcim | site   | Can read site\n  - dcim | device | Can view device\n  - dcim | cable  | Can view cable\n\n# Licensing\n\nPlugin code is published under MIT license. Embedded topoSphere SDK bundle is published under proprietary license special for NextBox UI Plugin and NetBox Community free of charge.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FiDebugAll%2Fnextbox-ui-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FiDebugAll%2Fnextbox-ui-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FiDebugAll%2Fnextbox-ui-plugin/lists"}