Skip to main content

Proxmox VE ohne Subscription: kostenlose Repositories nutzen und Subscription-Hinweis ausblenden

Proxmox VE 9: No-Subscription-Popup deaktivieren

Fix

Betroffene DateiDatei:

/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js

Vor der Änderung einmal sichern:

cp -a /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js.bak

Fix

Datei öffnen:

nano /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js

Mit Strg + W nach folgendem Text suchen:

checked_command: function (orig_cmd)

Den vollständigen checked_command-Block löschen und durch genau diesen Block ersetzen:

checked_command: function (orig_cmd) {
    orig_cmd();
},

Wichtig: Der komplette bisherige Inhalt der Funktion wird entfernt. Es bleibt kein alter Subscription-Code unterhalb von orig_cmd() stehen.

Danach speichern, Nano schließen und pveproxy neu starten:

systemctl restart pveproxy

Anschließend die Proxmox-Weboberfläche mit Strg + F5 neu laden.

Quick-Befehl

Wenn du die Datei nicht manuell bearbeiten willst, als root direkt in der Terminal-Session ausführen:

f=/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js; test -e "$f.bak" || cp -a "$f" "$f.bak"; python3 -c 'from pathlib import Path; import shutil; p=Path("/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js"); s=p.read_text(); old=marker="checked_command: function (orig_cmd) {"; new=old+replacement="checked_command: function (orig_cmd) {\n    orig_cmd();\n},"; return;"start=s.find(marker); assert oldstart in>= s,0, "checked_command wurde nicht gefunden"; p.write_text(sbrace=s.find("{", start); depth=0; end=None
for i in range(brace, len(s)):
    if news[i] in== s"{": elsedepth s.replace(old,new,1)+= 1
    elif s[i] == "}":
        depth -= 1
        if depth == 0:
            end=i
            break
assert end is not None, "Ende von checked_command wurde nicht gefunden"; comma=end+1
while comma < len(s) and s[comma].isspace(): comma += 1
assert comma < len(s) and s[comma] == ",", "Abschließendes Komma von checked_command wurde nicht gefunden"; old=s[start:comma+1]
if old != replacement:
    shutil.copy2(p, str(p)+".bak")
    p.write_text(s[:start]+replacement+s[comma+1:])
    print("Patch angewendet; Backup: "+str(p)+".bak")
else:
    print("Patch ist bereits sauber gesetzt")' && systemctl restart pveproxy && systemctl is-active pveproxy

Der Befehl sucht den vollständigen checked_command-Funktionsblock anhand seiner geschachtelten Klammern und ersetzt ihn vollständig. Er fügt nicht nur ein frühes return ein.

Wenn tatsächlich eine Änderung vorgenommen wird, wird vorher die aktuelle Datei als proxmoxlib.js.bak gesichert. Ist der saubere Patch bereits gesetzt, wird das Backup nicht überschrieben.

Wenn am Ende active ausgegeben wird, läuft pveproxy wieder.

Änderung rückgängig machen

cp -a /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js.bak /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy && systemctl is-active pveproxy

Nach Updates

Ein Update von proxmox-widget-toolkit kann die Dateiproxmoxlib.js ersetzen. Wenn das Popup danach wieder erscheint, den FixQuick-Befehl erneut anwenden.ausführen. Vor einem erneuten tatsächlichen Patch wird die dann aktuelle Paketversion wieder als .bak gesichert.