Netbox Plugin - Integrate Proxmox and Netbox
Project description
Proxmox2NetBox
NetBox plugin for synchronizing Proxmox inventory data into NetBox (NetBox v4).
Compatibility
- NetBox:
>=4.2.0, <5.0.0 - Python:
>=3.8 - Plugin package version in this repository:
1.0.1
What Works (Current Runtime)
Out-of-the-box sync requires only a configured Proxmox Endpoint in NetBox.
Implemented sync flows:
- Proxmox nodes -> NetBox
dcim.Device - Proxmox QEMU/LXC VMs -> NetBox
virtualization.VirtualMachine - VM interfaces from Proxmox config -> NetBox
virtualization.VMInterface - Endpoint metadata refresh (
mode,version,repoid, cluster name) - Sync process tracking in
SyncProcess
Runtime Architecture (Source of Truth)
Core sync logic is consolidated in:
netbox_proxbox/services/proxmox_sync.py
Backward-compatible import shim (kept intentionally):
netbox_proxbox/proxmox_sync.py
Primary runtime entrypoints:
- UI endpoints:
netbox_proxbox/views/sync.py - Connection/status badge:
netbox_proxbox/views/keepalive_status.py - Proxmox card data:
netbox_proxbox/views/cards.py - Job wrapper:
netbox_proxbox/jobs.py(ProxboxSyncJob)
Installation (NetBox v4)
1. Install plugin package
Inside NetBox environment:
pip install proxmox2netbox
2. Enable plugin
In NetBox configuration.py:
PLUGINS = ["netbox_proxbox"]
3. Optional PLUGINS_CONFIG
No required plugin settings for core sync.
Optional legacy FastAPI/backend-service controls (only used by legacy backend service views):
PLUGINS_CONFIG = {
"netbox_proxbox": {
"fastapi": {
"sudo": {
"user": "",
"password": "",
}
}
}
}
4. Run migrations/static
python manage.py migrate netbox_proxbox
python manage.py collectstatic --no-input
Configure and Run Sync
Configure Proxmox Endpoint
In NetBox UI:
Plugins -> Proxmox2NetBox -> Endpoints -> Proxmox Endpoints- Create at least one endpoint with:
username- either
passwordor (token_name+token_value) - host via
domainand/orip_address
Run sync from UI
Plugins -> Proxmox2NetBox -> Full Update- Available actions:
Sync NodesSync Virtual MachinesFull Update Sync
Run sync as NetBox Job (wrapper)
jobs.py provides a queue-compatible wrapper around the existing service layer.
Example from NetBox shell:
from netbox_proxbox.jobs import ProxboxSyncJob
from netbox_proxbox.choices import SyncTypeChoices
# Full sync
ProxboxSyncJob.enqueue(sync_type=SyncTypeChoices.ALL)
# Devices only
ProxboxSyncJob.enqueue(sync_type=SyncTypeChoices.DEVICES)
# Virtual machines only
ProxboxSyncJob.enqueue(sync_type=SyncTypeChoices.VIRTUAL_MACHINES)
Behavior note:
- Job class is an orchestrator only.
- Sync mapping, payloads, and upsert logic remain in
services/proxmox_sync.py.
FastAPI / WebSocket Status
FastAPI/WebSocket components are not required for core Proxmox -> NetBox sync runtime. They are kept for legacy compatibility paths and should be treated as optional unless explicitly needed in your deployment.
Development & Validation
Static checks
ruff check netbox_proxbox --select F401,F403,F811,F821,F841,E712
python -m compileall -q netbox_proxbox
Django checks (inside NetBox runtime)
python manage.py check
python manage.py makemigrations --check --dry-run
Tests
Current repository state contains no active pytest test modules.
pytest
# expected: no tests ran
Publish to PyPI
Prerequisites
- You must have access to the
proxmox2netboxproject on PyPI. - If the name is unavailable for your account, change
project.nameinpyproject.tomlto a unique name before publishing. - Configure one of these publish methods:
- Add
PYPI_API_TOKENas a repository secret in GitHub, or - Configure a matching Trusted Publisher in PyPI for this GitHub repository/workflow.
Local preflight
python -m build
twine check dist/*
Publish via GitHub Actions
- Create a GitHub Release (or run the
Publish Python Packageworkflow manually). - The workflow builds and uploads distributions to PyPI.
- After publish:
pip install proxmox2netbox
Repository Layout (Relevant Runtime Files)
netbox_proxbox/
__init__.py
jobs.py
models/
services/
proxmox_sync.py
proxmox_sync.py # compatibility shim
views/
sync.py
keepalive_status.py
cards.py
urls.py
forms/
filtersets.py
tables/
Legacy/Needs-Review Areas
The following are kept to avoid accidental runtime regressions, but are not part of core sync runtime:
netbox_proxbox/websocket_client.pynetbox_proxbox/views/proxbox_backend.pyFASTAPI.mdand other legacy backend-oriented docs
Project details
Release history Release notifications | RSS feed
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 proxmox2netbox-1.0.1.tar.gz.
File metadata
- Download URL: proxmox2netbox-1.0.1.tar.gz
- Upload date:
- Size: 3.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18fea3972ba6d9320bc1440faaa01438a6f5b23577cecd2fb71ab01b59431977
|
|
| MD5 |
59a959d547ebea12234b1875f3c8fbf1
|
|
| BLAKE2b-256 |
ac0a9f2f38b21fb33f303afb5f23dec9e105b7dd3b69d2a9312f878a3903f469
|
Provenance
The following attestation bundles were made for proxmox2netbox-1.0.1.tar.gz:
Publisher:
publish-python-package.yml on patricklind/Proxmox2Netbox
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
proxmox2netbox-1.0.1.tar.gz -
Subject digest:
18fea3972ba6d9320bc1440faaa01438a6f5b23577cecd2fb71ab01b59431977 - Sigstore transparency entry: 992483751
- Sigstore integration time:
-
Permalink:
patricklind/Proxmox2Netbox@9ad9971995b0924eff8a290873e39c29b9c156c5 -
Branch / Tag:
refs/heads/develop - Owner: https://github.com/patricklind
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-python-package.yml@9ad9971995b0924eff8a290873e39c29b9c156c5 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file proxmox2netbox-1.0.1-py3-none-any.whl.
File metadata
- Download URL: proxmox2netbox-1.0.1-py3-none-any.whl
- Upload date:
- Size: 3.5 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8fab0b1af7aad7ccfe71cf2e7b60fc201f74908436ce588c9a7b21ca75e4f140
|
|
| MD5 |
66dd2f5ff82a01779b09e4868b9709df
|
|
| BLAKE2b-256 |
0b9dba71c9628016ae54329367bd950fe1cbe335c7056d99fd8bc8fc06fb48de
|
Provenance
The following attestation bundles were made for proxmox2netbox-1.0.1-py3-none-any.whl:
Publisher:
publish-python-package.yml on patricklind/Proxmox2Netbox
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
proxmox2netbox-1.0.1-py3-none-any.whl -
Subject digest:
8fab0b1af7aad7ccfe71cf2e7b60fc201f74908436ce588c9a7b21ca75e4f140 - Sigstore transparency entry: 992483758
- Sigstore integration time:
-
Permalink:
patricklind/Proxmox2Netbox@9ad9971995b0924eff8a290873e39c29b9c156c5 -
Branch / Tag:
refs/heads/develop - Owner: https://github.com/patricklind
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-python-package.yml@9ad9971995b0924eff8a290873e39c29b9c156c5 -
Trigger Event:
workflow_dispatch
-
Statement type: