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.jsVor der Änderung einmal sichern:
cp -a /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js.bakFix
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.