{"id":34046245,"url":"https://github.com/k1nky/netbox-otp-plugin","last_synced_at":"2026-04-05T01:32:29.077Z","repository":{"id":65036555,"uuid":"580907518","full_name":"k1nky/netbox-otp-plugin","owner":"k1nky","description":"This netbox plugin adds support for one-time password (OTP) to Netbox.","archived":false,"fork":false,"pushed_at":"2025-12-12T14:11:05.000Z","size":342,"stargazers_count":34,"open_issues_count":3,"forks_count":11,"subscribers_count":6,"default_branch":"master","last_synced_at":"2026-03-06T09:22:35.495Z","etag":null,"topics":["netbox","netbox-plugin","otp-verification"],"latest_commit_sha":null,"homepage":"","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/k1nky.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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}},"created_at":"2022-12-21T19:00:59.000Z","updated_at":"2025-12-12T14:11:10.000Z","dependencies_parsed_at":"2024-07-14T09:43:54.769Z","dependency_job_id":"954f758a-a54e-4b24-88f5-921bd3e3d092","html_url":"https://github.com/k1nky/netbox-otp-plugin","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/k1nky/netbox-otp-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k1nky%2Fnetbox-otp-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k1nky%2Fnetbox-otp-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k1nky%2Fnetbox-otp-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k1nky%2Fnetbox-otp-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/k1nky","download_url":"https://codeload.github.com/k1nky/netbox-otp-plugin/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k1nky%2Fnetbox-otp-plugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31421869,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T00:25:07.052Z","status":"ssl_error","status_checked_at":"2026-04-05T00:25:05.923Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["netbox","netbox-plugin","otp-verification"],"created_at":"2025-12-13T23:41:51.709Z","updated_at":"2026-04-05T01:32:29.055Z","avatar_url":"https://github.com/k1nky.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Netbox OTP Plugin\n\nTwo-factor authentication for [NetBox](https://github.com/netbox-community/netbox). The plugin provides user OTP token verification and OTP device management is provided and bases on [django-otp](https://github.com/django-otp/django-otp) with Time-based One-time Password algorithm.\n\n![alt text](assets/login.png \"Login page\")\n\n## Compatibility\n\n| NetBox Version| Plugin Version|\n|---------------|---------------|\n| 4.4           | \u003e= 1.3.4      |\n| 4.3           | \u003e= 1.3.3      |\n| 4.2           | \u003e= 1.3.2      |\n| 4.1           | \u003e= 1.3.0      |\n| 4.0           | \u003e= 1.1.0      |\n| 3.X           | 1.0.7         |\n\n\n## Installation\n\nThe plugin is available as a [Python package](https://pypi.org/project/netbox-otp-plugin/) in pypi and can be installed with pip\n```\nsource /opt/netbox/venv/bin/activate\npython -m pip install netbox-otp-plugin\n# or\n# python -m pip install netbox-otp-plugin==\u003cversion\u003e\n```\n\nEnable the plugin in /opt/netbox/netbox/netbox/configuration.py:\n```\nPLUGINS = ['netbox_otp_plugin']\n```\n\nRun migration:\n```\n./manage.py migrate netbox_otp_plugin\n```\n\nTo ensure the 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 append the `netbox-otp-plugin` package:\n\n```no-highlight\necho netbox-otp-plugin \u003e\u003e local_requirements.txt\n```\n\n## Configuration\n\nAn OTP device can be attached to a user on your NetBox site or using the command:\n```\n./manage.py addtotp \u003cusername\u003e\n```\nThen you will see a QR code that you can add to an TOTP authenticator.\n\nTo reset user OTP device use the site or the command:\n```\n./manage.py resettotp \u003cusername\u003e\n```\n\nThe plugin has additional options:\n* `otp_required` - if set to True then two-factor authentication will be always required even if a user doesn't have an OTP device yet. False value required to authenticate users only with an OTP device attached only. Default: `True`.\n* `issuer` - the issuer parameter for the otpauth URL (see more https://github.com/google/google-authenticator/wiki/Key-Uri-Format). Default: `'Netbox'`.\n* `top_level_menu` - if set to True then the plugin menu will be placed at the top level of the menu.\n\n### Example\n\n```\nPLUGINS_CONFIG = {\n    'netbox_otp_plugin': {\n        'otp_required': False,\n        'issuer': 'MyOrgNetbox'\n    }\n}\n```\n\n## OTP Self-registration\n\nTo allow users to register their devices themselves, you need to grant them the following permissions:\n\n| Objects                   | Actions   | Constraints       |\n|---------------------------|-----------|-------------------|\n| Otp_Totp \u003e TOTP Device    | view, add | {\"user\": \"$user\"} |\n| Users \u003e User              | view      | {\"pk\": \"$user\"}   |\n\nNote: `otp_required` the plugin options should be set to `False`.\n\n## Screenshots\n\n![alt text](assets/device_list.png \"Device list\")\n\n![alt text](assets/device_add.png \"Add a device\")\n\n![alt text](assets/device_edit.png \"Edit a device\")\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fk1nky%2Fnetbox-otp-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fk1nky%2Fnetbox-otp-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fk1nky%2Fnetbox-otp-plugin/lists"}