简介: Proxmox VE (PVE) 9.0 是一款功能强大的开源虚拟化平台。但在初次部署时,很多用户会遇到两个烦人的问题:apt update 更新失败(错误代码 100)和登录 Web 界面时出现的“没有有效订阅”弹窗。本文将详细介绍这两个问题的原因和解决方法,让你的 PVE 环境顺畅运行。


问题一:apt-get update 失败 (错误代码 100)

🔍 错误现象

执行 apt update 或相关操作时,会遇到类似以下错误:

bash

TASK ERROR: command 'apt-get update' failed: exit code 100

在详细日志中,通常能看到核心错误信息:

bash

401 Unauthorized [IP: 66.70.154.82 443]
The repository 'https://enterprise.proxmox.com/... InRelease' is not signed.

⚠ 原因分析

PVE 9.0 默认配置启用了需要付费订阅的企业源 (enterprise.proxmox.com)。对于没有购买订阅的普通用户,访问该源会被拒绝(401 Unauthorized),导致整个 apt update 过程失败。

✅ 解决方法:切换到免费公共源 (pve-no-subscription)

只需几个命令即可解决:

  1. 移除无效的企业源配置:

    bash

    rm -f /etc/apt/sources.list.d/*enterprise*
    rm -f /etc/apt/sources.list.d/*ceph*  # 通常也需要移除关联的 Ceph 企业源
    rm -f /etc/apt/sources.list.d/*pve*.list  # 移除默认的 PVE 源文件(通常包含企业源指向)
  2. 配置 Debian Bookworm 官方源:

    bash

    cat > /etc/apt/sources.list <<'EOF'
    deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
    deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware
    deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
    EOF
  3. 添加 Proxmox VE 免费公共源:

    bash

    echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
  4. 导入 Proxmox GPG 密钥(验证软件包):

    bash

    wget -qO - https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
  5. 更新软件包列表:

    bash

    apt update

    📌 验证: 执行此命令后应该不再报错,能够正常获取软件包列表。


问题二:Web 界面“没有有效订阅”弹窗

🔍 错误现象

每次登录 PVE Web 管理界面,都会弹出以下提示框:

您没有此服务器的有效订阅。请访问 www.proxmox.com 获取可用选项列表。

虽然这个弹窗不影响 PVE 的核心功能,但每次登录都出现,确实非常影响用户体验。

✅ 解决方法:禁用订阅状态检查弹窗

通过修改前端 JavaScript 文件可以屏蔽这个特定弹窗:

  1. 编辑前端 JS 文件:

    bash

    nano /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
  2. 定位弹窗代码:
    在文件中搜索关键字 Ext.Msg.show({。你会找到类似下面的代码块:

    javascript

    Ext.Msg.show({
      title: gettext('No valid subscription'),
      // ... 其他参数和函数 ...
    });
  3. 替换/覆盖弹窗函数:
    将找到的 整个 Ext.Msg.show({ ... }); 函数调用 (包括里面的所有内容) 替换为下面这行简单的空函数定义:

    javascript

    Ext.Msg.show = function() {};

    📌 重要提示: 这行代码的作用是将 Ext.Msg.show 这个显示消息框的函数替换成一个什么都不做的空函数。它只会屏蔽掉调用这个函数显示的消息框(即订阅提示),不影响界面其他功能。

  4. 保存并退出编辑器:

    • Ctrl + O 写入文件。

    • Enter 确认文件名。

    • Ctrl + X 退出 nano

  5. 刷新浏览器:

    • 在访问 PVE Web 界面的浏览器中,按 Ctrl + Shift + R (Windows/Linux) 或 Cmd + Shift + R (Mac) 强制刷新页面缓存。

    • 或者,使用浏览器的 无痕/隐私模式 访问 PVE。

    • 重新登录后,烦人的订阅弹窗应该就消失了!


📝 总结与注意事项

通过上述步骤,你可以轻松解决 PVE 9.0 部署初期最常遇到的两个障碍:

  1. 修复 apt update 失败: 通过移除企业订阅源,切换到免费的 pve-no-subscription 公共源和 Debian 官方源,确保系统能够正常更新和安装软件包。

  2. 移除订阅弹窗: 通过修改前端 JS 文件,屏蔽了登录时的“没有有效订阅”提示,让 Web 管理界面更加清爽。

重要提示:

  • 升级或重装: 如果你将来升级 PVE 主版本 (例如从 9.x 升级到 10.x) 或者重新安装系统,以上两个问题的解决方法都需要重新执行一次。因为升级或安装过程会覆盖你的修改。

  • 自动化: 考虑将解决订阅弹窗的步骤(尤其是编辑 proxmoxlib.js 的命令)保存成一个简单的 Shell 脚本。这样在升级后,运行脚本即可快速恢复清爽界面。apt 源配置通常在升级后需要按新版本要求重新检查或调整。

  • 免费使用: Proxmox VE 的核心功能对于个人和测试使用是完全免费的。移除订阅提示只是为了改善体验,不意味着解锁付费功能。

希望这篇指南能帮助你顺利部署和使用 Proxmox VE 9.0!