要移除 Proxmox VE(PVE)登录时弹出的“无有效订阅”提示(内容为“您没有此服务器的有效订阅。请访问 www.proxmox.com 获取可用选项列表”),可通过修改系统文件实现。以下是三种常用方法,适用于 PVE 6.x~8.4.0 版本,操作后需重启服务并清除浏览器缓存生效。注意:每次升级 PVE 后需重新修改


🔧 操作前准备

  1. 连接 PVE 服务器
    通过 SSH 工具(如 Termius、Xshell)或 PVE 网页端的 Shell 登录服务器。

  2. 备份原始文件(避免误操作):

    bash

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

⚙️ 方法一:修改订阅状态判断逻辑(推荐)

此方法通过绕过订阅状态检查来禁用弹窗,兼容性较好。

  1. 编辑目标文件:

    bash

    vim /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
  2. 搜索关键词 data.status(约第 560-570 行),找到以下代码:

    javascript

    if (res === null || res === undefined || !res || res.data.status.toLowerCase() !== 'active') {
  3. 修改为

    javascript

    if (false) {
  4. 保存文件(Vim 命令::wq)。

原理:将订阅状态检测逻辑直接替换为 false,使弹窗条件永不触发。


⚙️ 方法二:禁用弹窗显示函数

直接阻止弹窗的调用,适用于高版本(如 PVE 8.2.2)。

  1. 同一文件中搜索关键词 Ext.Msg.show,定位到:

    javascript

    Ext.Msg.show({
  2. 修改为

    javascript

    Ext.Msg.noshow({   // 或 void({
  3. 保存文件3910

原理:重写弹窗函数,使其无法执行。


⚙️ 方法三:一键命令修改(快速)

使用 sed 命令自动替换,无需手动编辑:

bash

sed -i.bak "s/data.status !== 'Active'/false/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js

此命令会:

  • 自动备份原文件为 proxmoxlib.js.bak

  • data.status !== 'Active' 替换为 false


🔄 重启服务并刷新

  1. 重启 PVE Web 服务:

    bash

    systemctl restart pveproxy
  2. 强制刷新浏览器

    • Ctrl + F5 清除缓存;

    • 或使用无痕模式重新登录 PVE。


⚠️ 注意事项

  1. 升级后需重新修改
    PVE 每次更新会覆盖此文件,弹窗重现时重复上述步骤即可。

  2. 仅影响弹窗提示
    此修改仅移除订阅提示,不影响 PVE 核心功能(如集群、虚拟机管理)。

  3. 文件路径一致性
    所有 PVE 6.3+ 版本均修改 /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js,旧版(如 PVE 5.x)路径可能不同。

💎 三种方法均可生效,若需长期稳定推荐方法一(逻辑覆盖)或方法三(命令自动化)。操作后重新登录即可告别弹窗干扰!