Author's Picture
Author: Joel Gray Published: 13 March 2025 Read Time: ~2 minutes

How to Remove ‘No Valid Subscription’ Banner on Proxmox UI

What is Proxmox?

Short Answer: It’s an hypervisor for managing VMs and containers.
Less Short Answer: Proxmox VE (Virtual Environment) is an open-source platform for running virtual machines (VMs) and containers. Think of it as a Swiss Army knife for virtualisation – it lets you create, manage, and monitor VMs and containers all from a web-based UI.
Long Detailed Answer: Idk google it or read their webpage: https://www.proxmox.com/en/products/proxmox-virtual-environment/overview

The Problem

The when you use the free version of Proxmox (i.e Proxmox without a subscription) you get this annoying popup every time you log in.

If you aren’t a hobbyist and can afford it I recommend buying a subscription here: https://www.proxmox.com/en/products/proxmox-virtual-environment/pricing

If you are a casual user, hobbyist or fellow hacker slasher it’s not really feasible to spend money on a yearly subscription to Proxmox, so let’s find out how to remove this irritating popup.

The Fix

If you’re not a programmer or software engineer, the next bit might seem daunting as you have to edit some of the Proxmox application code, but don’t worry it’s actually very simple and we can revert our changes easily!

  1. Finding the file!
    It’s in a JavaScript file called proxmoxlib.js, located in the /usr/share/javascript/proxmox-widget-toolkit/ directory.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cd /usr/share/javascript/proxmox-widget-toolkit/
cd /usr/share/javascript/proxmox-widget-toolkit/
cd /usr/share/javascript/proxmox-widget-toolkit/
  1. Backup, backup, backup!
    Before touching anything, I made a backup of the original file. Trust me, you don’t want to skip this step. If something goes wrong, you’ll thank yourself for having a backup.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cp proxmoxlib.js proxmoxlib.js.bak
cp proxmoxlib.js proxmoxlib.js.bak
cp proxmoxlib.js proxmoxlib.js.bak
  1. Edit the file…
    Edit the file using your preferred text editor, I’m using nano.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
nano proxmoxlib.js
nano proxmoxlib.js
nano proxmoxlib.js

In nano you can search for the issue using ‘Ctrl+w’ and typing ‘No valid sub’ and hitting ‘Enter’.
You can see the problem highlighted on line 6 below:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
..
success: function(response, opts) {
let res = response.result;
if (res === null || res === undefined || !res || res
.data.status.toLowerCase() !== 'active') {
Ext.Msg.show({
title: gettext('No valid subscription'),
icon: Ext.Msg.WARNING,
message: Proxmox.Utils.getNoSubKeyHtml(res.data.url),
buttons: Ext.Msg.OK,
...
.. success: function(response, opts) { let res = response.result; if (res === null || res === undefined || !res || res .data.status.toLowerCase() !== 'active') { Ext.Msg.show({ title: gettext('No valid subscription'), icon: Ext.Msg.WARNING, message: Proxmox.Utils.getNoSubKeyHtml(res.data.url), buttons: Ext.Msg.OK, ...
..
     success: function(response, opts) {
         let res = response.result;
         if (res === null || res === undefined || !res || res
            .data.status.toLowerCase() !== 'active') {
            Ext.Msg.show({
                title: gettext('No valid subscription'),
                icon: Ext.Msg.WARNING,
                message: Proxmox.Utils.getNoSubKeyHtml(res.data.url),
                buttons: Ext.Msg.OK,
                ...
  1. Time for the magic:

Before:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
.data.status.toLowerCase() !== 'active') {
Ext.Msg.show({
title: gettext('No valid subscription'),
.data.status.toLowerCase() !== 'active') { Ext.Msg.show({ title: gettext('No valid subscription'),
.data.status.toLowerCase() !== 'active') {
Ext.Msg.show({
    title: gettext('No valid subscription'),

After:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
.data.status.toLowerCase() !== 'active') {
void({
title: gettext('No valid subscription'),
.data.status.toLowerCase() !== 'active') { void({ title: gettext('No valid subscription'),
.data.status.toLowerCase() !== 'active') {
void({
    title: gettext('No valid subscription'),
  1. Save the file:
    If using nano simply press ‘Ctrl + X’, then type ‘y’, then press ‘Enter’ to confirm.
  1. Testing:
    Now that we’ve made the file, we need to restart the service and verify that the pop up is gone.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo systemctl restart pveproxy.service
sudo systemctl restart pveproxy.service
sudo systemctl restart pveproxy.service

Then load the Proxmox UI and log in, you should be brought to the dashboard with no subscription banner!

Made a mistake?

There are two ways to fix/undo your changes.

  1. Simply move the backup file we made early to the original file: (Recommended)
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo mv proxmoxlib.js.bak proxmoxlib.js
sudo mv proxmoxlib.js.bak proxmoxlib.js
sudo mv proxmoxlib.js.bak proxmoxlib.js
  1. Reinstall the proxmox widget package:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo apt-get install --reinstall proxmox-widget-tool
sudo apt-get install --reinstall proxmox-widget-tool
sudo apt-get install --reinstall proxmox-widget-tool