Proxmox VE 在执行部分操作时, 如果当前没有有效订阅, 会弹出 No valid subscription 提示。

这个弹窗可以通过修改 proxmox-widget-toolkit 中的前端代码来屏蔽, 无需修改 /etc/pve, 也不需要安装其他软件, 不会影响虚拟机、Thin Pool、XFS 等存储功能。
需要注意的是, 后续如果 PVE 更新了 proxmox-widget-toolkit 软件包, 官方更新会覆盖此次修改。遇到这种情况, 只需要重新执行一次修改命令即可。
屏蔽订阅检查弹窗
通过 sed 将原本的订阅状态判断条件替换为 false, 这样前端就不会进入显示弹窗的逻辑。
备份原始文件
首先备份 PVE 当前使用的 proxmoxlib.js, 方便后续恢复。
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
屏蔽订阅弹窗
执行下面的命令, 将订阅检查条件替换为 false
sed -i '/res === null/,/res.data.status.toLowerCase() !== '\''active'\''/c\false' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
修改后, 原本用于判断订阅状态的条件将变成
if ( false ) {
因此弹窗代码不会被执行
验证修改结果
修改完成后, 可以通过 grep 查看相关代码, 确认订阅检查条件已经被替换为 false
grep -n -B 13 -A 11 "No valid subscription" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
正常情况下, 可以看到以下内容
614- checked_command: function (orig_cmd) {
615- Proxmox.Utils.API2Request({
616- url: '/nodes/localhost/subscription',
617- method: 'GET',
618- failure: function (response, opts) {
619- Ext.Msg.alert(gettext('Error'), response.htmlStatus);
620- },
621- success: function (response, opts) {
622- let res = response.result;
623- if (
624-false
625- ) {
626- Ext.Msg.show({
627: title: gettext('No valid subscription'),
628- icon: Ext.Msg.WARNING,
629- message: Proxmox.Utils.getNoSubKeyHtml(res.data.url),
630- buttons: Ext.Msg.OK,
631- callback: function (btn) {
632- if (btn !== 'ok') {
633- return;
634- }
635- orig_cmd();
636- },
637- });
638- } else {
看到 624-false 即表示修改成功。
重启 PVE Web 服务
可选步骤, 一般刷新浏览器即可生效。如果希望重启 PVE Web 服务, 可以执行
systemctl restart pveproxy
清理浏览器缓存
修改完成后, 在浏览器打开 PVE 管理界面, 按
Ctrl + F5
进行强制刷新。
然后进入 Updates, 点击 Refresh 检查是否还会出现订阅提示。
修改成功后, 点击 Refresh 将直接开始执行更新源检查, 不再弹出 No valid subscription 提示。
原文
Proxmox VE 9.2.2 关闭无有效订阅弹窗:PVE 9.2.2 去除 No valid subscription 提示教程