操作步骤

备份原始文件

  • SSH/控制台执行:

    cp /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js \
       /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js.bak
  • 恢复官方文件(后期如需)

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

屏蔽订阅弹窗

  • 直接执行如下命令

    python3 - <<'PY'
    from pathlib import Path
    
    p = Path("/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js")
    s = p.read_text()
    
    old = """                    if (
                            res === null ||
                            res === undefined ||
                            !res ||
                            res.data.status.toLowerCase() !== 'active'
                        ) {"""
    
    new = """                    if (false) {"""
    
    if old not in s:
        raise SystemExit("ERROR: 未找到目标代码,未进行修改")
    
    p.write_text(s.replace(old, new, 1))
    print("OK: 已关闭 No valid subscription 弹窗")
    PY
  • 检查:

    grep -n -B 3 -A 12 "No valid subscription" \
    /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
  • 正常应该看到:

    if (false) {
        Ext.Msg.show({
            title: gettext('No valid subscription'),
  • 然后:

    systemctl restart pveproxy

清理浏览器缓存

  • 在浏览器的 PVE 页面:

    Ctrl + F5
  • 如果仍然出现,直接关闭浏览器重新打开 PVE。

  • 验证是否成功

  • 执行:

    grep -n "if (false)" \
    /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
  • 如果返回类似:

    610:                    if (false) {
  • 就说明已经修改成功。

修改建议

  • PVE 9.2.2 当前订阅弹窗已经可以关闭,不需要修改 /etc/pve、不需要安装任何东西,也不会影响 VM、Thin Pool、XFS 存储。

  • 另外建议保留刚才的:

    /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js.bak
  • 因为以后 PVE 更新 proxmox-widget-toolkit 后,这个修改很可能会被官方更新覆盖,需要重新执行一次。