Evert's website

Dealing with the Proxmox Subscription Notice

Over the past few weeks, I have been playing around with Proxmox in a VM. It seems to be an upgrade from my current Fedora + Cockpit based homelab, as the ‘cockpit-machines’ module has some quirks and stability issues. One thing that annoys me however is the subscription notice that is shown when logging in to your Proxmox instance:

Of course, upkeep of open source software is not free. While some projects ask for donations (see e.g. Git), organise fundraisers (GnuPG), sell merchandise and/or books (Lua), Proxmox, like Red Hat for example, offers subscription-based support1. Offering a subscription in itself is no problem in my opinion, but I do have some issues with the above notice:

  1. It is shown on every login, without some sort of ‘Do not show this again’ option;
  2. It is worded in such a way that (to me) implies the product is not fully usable without such a subscription;2
  3. The ‘Community’ subscription is in my opinion quite steeply priced3 for something that does not offer any tangible benefit4.

Having said that, as Proxmox is licensed under the AGPLv3, we can simply fork the component responsible for the subscription notice, disable the notice, and push it to our own package repository. So, without further ado, lets get started!

Setting up the development environment

Note: below instructions are adapted from the Proxmox Developer Documentation and README.dev from the pve-common repository.

As recommended in the above documentation I used a new installation of Debian 11 (Bullseye) for development. After installing Debian with the default settings (except GUI disabled and SSH enabled), add the Proxmox repository key:

// You might need to install opengpg before you can run 'apt-key':
# apt install opengpg
# wget -O- "https://enterprise.proxmox.com/debian/proxmox-release-bullseye.gpg" | apt-key add -

Next, add the Proxmox repositories to the Apt sources:

$ git clone git://git.proxmox.com/git/proxmox-widget-toolkit.git

Upgrade packages – where necessary – to the Proxmox provided version:

# apt update && apt dist-upgrade -y

Install Git and the ‘devscripts’ package, which provides us with ‘mk-build-deps’ to easily install build dependencies:

# apt install git devscripts

Cloning, modifying and building ‘proxmox-widget-toolkit’

Next, clone the ‘proxmox-widget-toolkit’ repository, which contains the subscription notice:

$ git clone git://git.proxmox.com/git/proxmox-widget-toolkit.git

Install the necessary build dependencies using ‘mk-build-deps’:

$ cd proxmox-widget-toolkit
$ mk-build-deps --install --remove --root-cmd sudo
// Accept installation with 'y'.

By grepping for ‘No valid subscription’, we find out that the message is located in src/Utils.js. Let’s comment out the ‘Ext.Msg.show’ call:

Now, build a .deb package for installation on our Proxmox host:

$ make deb

After a few seconds the build completes and we are left with a ‘proxmox-widget-toolkit_3.6.5_all.deb’ file (of course, the version number may differ depending on the current Proxmox version). Copy the package to your Proxmox host, for example using ‘scp’:

$ scp proxmox-widget-toolkit_3.6.5_all.deb root@<Proxmox hostname or IP>:/tmp/

Finally, open a shell on your Proxmox machine, install the package, and restart the web GUI:

# apt install /tmp/proxmox-widget-toolkit_3.6.5_all.deb
# systemctl restart pveproxy

You might need to clear your browser cache because the JavaScript file we modified is probably cached. Finally, go to your Proxmox web GUI, log out and log back in. No message will be shown!

Of course, as soon as Proxmox pushes an update for the ‘proxmox-widget-toolkit’ package, our modifications will be overwritten. In a next post we will investigate 1) how to automate this change whenever a new version of the package is published by Proxmox, and 2) how to serve our custom package to Proxmox through our own repository.

Remarks

  1. While Red Hat unfortunately does no longer offer a bug-for-bug compatible fork in CentOS, they definitely do contribute a lot to the Linux ecosystem. I was not able to find such a record of upstream contributions by Proxmox. At least a contribution to the Debian project would be appreciated, as most of the packages are downloaded directly from the Debian servers (to my knowledge this is even the case when using the Enterprise repository).
  2. The same fearmongering is used on the Pricing page, which notes that the ‘Community’ subscription provides access to the ‘Complete feature-set’ – implying that this is not the case without a subscription, and also on the ‘Repositories’ page in the web interface, where the enterprise repository (unusable without a subscription) is enabled by default, while the ‘pve-no-subscription’ repository has to be added manually, leaving a new installation without a way to receive updates.
  3. When using for example a second-hand 2P server (they seem to be quite cheap every now and then!) the license sets you back 252€ yearly when including Dutch VAT. For personal/hobby use that is unsustainable. I would love to occasionally make a smaller donation, but such a option is not provided.
  4. According to the Proxmox website the ‘Community’ subscription provides the following benefits:
    • ‘Access to Enterprise repository’ – from the Proxmox forums the only difference to the ‘pve-no-subscription’ repository seems to be that new updates are pushed to the latter first, and only when no issues are raised by the unsubscribed community the update is pushed to the Enterprise repo.
    • ‘Complete feature-set’ – which, as noted above, is misleading as the unsubscribed product also provides all features (as is noted on the forums: ‘There are no artificial limits or missing features when not buying an subscription.’).
    • ‘Community support’ – Support is provided through the Proxmox forums, which of course are also accessible without a subscription.