Hello Proxmox Team,
I’d like to ask whether it would be possible to integrate a plugin system into Proxmox.
I’ve already developed a proof of concept to install, disable, and manage plugins in Proxmox. Currently, it works by patching the pve-manager source code: the JavaScript for a plugin is loaded via a patch to /usr/share/pve-manager/index.html.tpl. This approach prevents the frontend from failing to load due to faulty plugin code. A plugin is only activated if all patches can be applied successfully, ensuring that Proxmox’s core functionality is not affected.
For every patched file, a corresponding “.distrib” file is created so that we always have the original file available for rollbacks. Plugins must follow a specific folder structure.
I also think it would be useful if plugins weren’t limited to Perl. To make that possible, I built a small Perl-to-Python bridge. Using a pve_plugin module, it mirrors the routes and parameters of the existing Perl routes, allowing plugins to be implemented in Python as well.
Would you be open to discussing how such a plugin system could be integrated upstream or that it can be an optional Modul? I’m happy to share more details and prototypes.
.tree
├── metadata.json
├── patches
│ ├── pve-manager-ups-menu.orig
│ ├── pve-manager-ups-menu.repl
│ ├── pve-nodes-ups-import.orig
│ ├── pve-nodes-ups-import.repl
│ ├── pve-nodes-ups-index.orig
│ ├── pve-nodes-ups-index.repl
│ ├── pve-nodes-ups-register.orig
│ └── pve-nodes-ups-register.repl
├── PVE
│ └── API2
│ └── UPS.pm
├── python
│ ├── __init__.py
│ └── pveups.py
└── www
├── MonView.js
├── Status.js
├── StatusView.js
├── UpsInstallWizard.js
├── UserEdit.js
├── UserView.js
└── Utils.js

I’d like to ask whether it would be possible to integrate a plugin system into Proxmox.
I’ve already developed a proof of concept to install, disable, and manage plugins in Proxmox. Currently, it works by patching the pve-manager source code: the JavaScript for a plugin is loaded via a patch to /usr/share/pve-manager/index.html.tpl. This approach prevents the frontend from failing to load due to faulty plugin code. A plugin is only activated if all patches can be applied successfully, ensuring that Proxmox’s core functionality is not affected.
For every patched file, a corresponding “.distrib” file is created so that we always have the original file available for rollbacks. Plugins must follow a specific folder structure.
I also think it would be useful if plugins weren’t limited to Perl. To make that possible, I built a small Perl-to-Python bridge. Using a pve_plugin module, it mirrors the routes and parameters of the existing Perl routes, allowing plugins to be implemented in Python as well.
Would you be open to discussing how such a plugin system could be integrated upstream or that it can be an optional Modul? I’m happy to share more details and prototypes.
.tree
├── metadata.json
├── patches
│ ├── pve-manager-ups-menu.orig
│ ├── pve-manager-ups-menu.repl
│ ├── pve-nodes-ups-import.orig
│ ├── pve-nodes-ups-import.repl
│ ├── pve-nodes-ups-index.orig
│ ├── pve-nodes-ups-index.repl
│ ├── pve-nodes-ups-register.orig
│ └── pve-nodes-ups-register.repl
├── PVE
│ └── API2
│ └── UPS.pm
├── python
│ ├── __init__.py
│ └── pveups.py
└── www
├── MonView.js
├── Status.js
├── StatusView.js
├── UpsInstallWizard.js
├── UserEdit.js
├── UserView.js
└── Utils.js
