Proxmox VE ohne Subscription: kostenlose Repositories nutzen und Subscription-Hinweis ausblenden Proxmox VE 9: No-Subscription-Popup deaktivieren Fix Betroffene Datei: /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js 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 an exakt derselben Position durch diesen Block ersetzen. Die vorhandene Einrückung beibehalten: 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: python3 -c ' from pathlib import Path import re, shutil p = Path("/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js") s = p.read_text() m = re.search(r"^([ \t]*)checked_command:\s*function\s*\(orig_cmd\)\s*\{", s, re.M) if not m: raise SystemExit("FEHLER: checked_command wurde nicht gefunden") indent = m.group(1) start = m.start() brace = s.find("{", m.start()) depth = 0 end = None for i in range(brace, len(s)): if s[i] == "{": depth += 1 elif s[i] == "}": depth -= 1 if depth == 0: end = i + 1 break if end is None: raise SystemExit("FEHLER: Ende von checked_command wurde nicht gefunden") if end >= len(s) or s[end] != ",": raise SystemExit("FEHLER: Abschließendes Komma von checked_command wurde nicht gefunden") end += 1 replacement = ( f"{indent}checked_command: function (orig_cmd) {{\n" f"{indent} orig_cmd();\n" f"{indent}}}," ) if s[start:end] == replacement: print("Patch ist bereits sauber gesetzt") else: shutil.copy2(p, str(p) + ".bak") p.write_text(s[:start] + replacement + s[end:]) print("Patch angewendet; Backup: " + str(p) + ".bak") ' && systemctl restart pveproxy && systemctl is-active pveproxy Der Befehl übernimmt die vorhandene Einrückung der checked_command-Zeile und ersetzt den vollständigen Funktionsblock. Danach steht der Block an derselben Position wie vorher und ist sauber wie folgt eingerückt: checked_command: function (orig_cmd) { orig_cmd(); }, Der alte Subscription-Code wird vollständig entfernt. Wenn tatsächlich eine Änderung vorgenommen wird, wird die vorherige Datei als proxmoxlib.js.bak gesichert. 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 proxmoxlib.js ersetzen. Wenn das Popup danach wieder erscheint, den Quick-Befehl erneut ausführen. Vor einem erneuten tatsächlichen Patch wird die dann aktuelle Paketversion wieder als .bak gesichert.