No description
Find a file
Boris Gingold a985a61562 Fast clone:
- "List in backup jobs" option
  - icons
2026-04-01 23:42:41 +02:00
.vscode nodejsserver: Run/build script improvements 2025-04-01 15:09:31 +02:00
aplinfo update shipped appliance info index 2026-01-17 16:33:34 +01:00
bin Merge remote-tracking branch 'git.proxmox.com/master' into main 2025-12-20 18:16:18 +01:00
configs configs: drop unused country.dat file from install 2025-08-28 23:23:39 +02:00
debian 9.5.1 release 2026-03-18 23:38:38 +01:00
docs Docs: Fix: Summary not displayed properly -> add css 2026-03-10 19:32:04 +01:00
network-hooks makefile: convert to use simple parenthesis 2023-05-29 18:24:00 +02:00
nodejsserver Bugfix: Connection interruptions/failed call to ElectrifiedSession -> A situation was observed, where checkCachedPermission saw a date that had already passed a millisecond further and the permissions were outdated. So we give all methods the same date to operate. 2026-03-18 19:21:20 +01:00
PVE Merge branch 'proxmox_9.1.6' into main 2026-03-18 21:00:09 +01:00
services Merge upsteam (git://git.proxmox.com/git/pve-manager.git/HEAD) 2025-11-23 20:19:02 +01:00
templates notifications: test: style fixup 2025-04-04 20:25:46 +02:00
test various typo fixes in comments and old changelog entries 2025-11-18 19:30:04 +01:00
ui-plugin-example Minor: Plugin.jsx: Add global symbol: Proxmox. Add docs 2026-02-20 00:06:35 +01:00
www Fast clone: 2026-04-01 23:42:41 +02:00
.gitignore Starter / hello world module script using packages and calling a server method 2025-04-21 19:37:32 +02:00
defines.mk Merge upsteam (git://git.proxmox.com/git/pve-manager.git/HEAD) 2025-11-23 20:19:02 +01:00
development-readme.md Minor: Develop: rename targets 2025-10-19 01:10:41 +02:00
local.config.mk.sample Bugfix: local.config.mk was synced to the target pve machine 2025-11-25 16:57:52 +01:00
Makefile Comment 2026-03-18 22:17:56 +01:00
pubkey.asc New pubkey 2025-04-05 05:14:44 +02:00
pve-manager-electrified-secrets.config.sample - Create index readme 2025-04-05 00:27:28 +02:00
readme.md Preview version notes 2026-03-18 19:55:08 +01:00
spice-example-sh doc: spice-example-sh: support special characters in passwords 2017-10-05 13:57:27 +02:00
vzdump-hook-script.pl auto-format code using perltidy with Proxmox style guide 2025-06-17 18:22:29 +02:00

PVE electrified

This is a modification of the Proxmox Virtual Environment user interface, that brings some nice features, mainly for homelab'ers. PVE electrified is independant of the company Proxmox. Also, it adds a plugin system and lifts PVE to a very developer friendly architecture, because in the past it was so hard for developers to enhance the PVE UI that almost no community mods existed.

Motivation

Since years, i have been an enthusiastic user of my PVE home-lab and semi-professional environment, meaning, using it as infrastructure for my development machines for my job as a freelancer. Back in the days, i was experimenting with different linux distos and software stacks and always needed a feature to quickly jump between snapshots or fork from them to test things out. Cloning vms took longer and more disk space than my attention span and storages offered. So i wondered why there is no good way to quickly make copy-on-write clones (inspired/a bit similar to what the "templates" feature offered, but which had its own limitations and misconceptions imho). So i thought: why not modify the PVE gui, since it's open source. But then i realized that there were super many stones in the way to get a proper development environment. I.e. the javascript is delivered as a >20k of lines bigfile, hardly debuggable and for a round trip, you had to run minute long make targets. Not fun at all! So i decided to improve all this and port it to a modern environment with vite, React, typescript on the server and client side. Development took some time: Starting in 2022 and besides having to deal with my normal contract work, and it went a bit off the road cause i realized, that no proper RPC existed for Node.js, like i was used to, with Direct-Web-Remoting in my java days. Therefore, as a side project, Restfuncs was born. And then the next backing side project was born: React deepwatch. And on the way came many other ideas like the cpu bars and a plugin system and, see the planned features.
Also, open source does not develop it's self. Developers need motivation, so write me, if you like it and also i'll be setting um something for financial motivation (donations) which would allow me to put more time into it because currently, i have to go back to focus on contract-work for my earnings.

Features

  • CPU usage bars in the tree. Updated in realtime.1

  • A plugin system that allows to easily create and publish UI plugins.

  • COMING SOON: Instant cloning of guests. It's already usable as a preview version - just right-click on the guest.

    • Uses ZFS's copy-on-write mechanism.
    • Allows cloning of snapshots, so you can have a quick peak into an older state of your vm.
    • Allows cloning with RAM.
    • Has an improved dialog for a faster workflow.

    The mentioned clone features work with ZFS only

  • PLANNED: Show real thin disk usage in the tree.

  • PLANNED: Docker support.

  • PLANNED: Assistants for several small optimizations for home-lab usage: Gpu passthrough; Dynamic ip; Prevent ssd wear-down; Install microcode update packages; Fix zfs memory settings; Fix disk stalling; Warn on simultaneous USB device use; Show password prompts for encrypted disks;

Features are developed for home-lab users first. That's the most reasonable to focus on as a free-time open source developer. If you need features refined for enterprise grade (i.e. working with non-admin permissions), you still have the option to pay me working on them.

Install

Requires PVE 9.x or later.

wget https://pve-electrified.net/pubkey.asc -O /etc/apt/trusted.gpg.d/pve-electrified.asc && \
apt install -y lsb-release && \
echo "deb https://pve-electrified.net/debian $(lsb_release -c -s) main" >> /etc/apt/sources.list
apt update
apt install -y pve-manager-electrified

Uninstall

apt install -y pve-manager-electrified- pve-manager+

Behind the scenes / architecture

These are the differences to the original pve-manager package from Proxmox: These are mainly intended, to improve the developer experience.

  • Backend: Pve-manager-electrified starts a nodejs webserver, which is written in Typescript, so we have more modern language here than Perl. This webserver (port 8006) proxies some of the http and websocket paths, like to /pve2, /novnc, /xtermjs , pwt, /api2 to the original pve backend server (called pveproxy) which is also/still running but was just moved to a different (internal) port: 8005.
  • Frontend: Each time, when started, the nodejs webserver uses vite, to bundle the web files. This way, we can have the most modern web techniques like React, Typescript, npm dependency management and fast reloading during development (during dev, it starts a vite devserver). The old original .js files are also served. But instead of all in a non-debugging-friendly bigfile, they are listed as individual (Vite can still bundle them internally but then we have proper source mapping). React components are used in the mix with the old ExtJS 6 components.
    Vite can also run in dev server mode. Then it watches the files and gives you fast reloading. Under /webBuild, There's control panel, where you can switch modes.

Security consideration when using it in an enterprise

Read here

Plugin development guide

See here

Source code / license

Source code on Github
License. It meets GNU Affero General Public License, GPL and MIT. So it's luckily allowed to modify and republish the Proxmox's packages👍.
contact me

100% hand coded

Electrified code is 100% hand coded (except the Logo, but i'm no painter😀😀) with passion ❤, by an experienced software developer. Contact me, if you need features or if you have freelancer work to give out (in the EU, german / english speaking).


  1. Realtime = 1 second interval. As this comes with some cost, on systems with many lxcs, the interval will increase automatically. ↩︎