本文已更新,适用于 Proxmox VE 9.1 及以上版本

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


问题一: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 默认配置启用了需要付费订阅的企业源(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 9.1 及以上)

在 PVE 9.1 之后,前端代码有所调整。以下是新的修改方法:

  1. 备份原始文件(建议操作):

    bash

    cp /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js.bak
  2. 定位并修改状态判断条件

    bash

    line_num=$(grep -n "res.data.status.toLowerCase() !== 'active'" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js | head -1 | cut -d: -f1)
    sed -i "${line_num}s/!==/===/" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js

    说明
    这行代码会将原来判断订阅状态“不等于 active”的逻辑改为“等于 active”,从而绕过弹窗提示。

  3. 重启 PVE Web 代理服务

    bash

    systemctl restart pveproxy
  4. 刷新浏览器

    • Ctrl + Shift + R(Windows/Linux)或 Cmd + Shift + R(Mac)强制刷新页面缓存。

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

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


📝 总结与注意事项

通过上述步骤,你可以轻松解决 PVE 9.x 部署初期最常见的两个障碍:

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

  2. 移除订阅弹窗(适用于 9.1+):通过修改前端 JS 文件中的状态判断条件,屏蔽登录时的“没有有效订阅”提示。

⚠ 重要提示:

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

  • 自动化脚本:建议将上述步骤保存为 Shell 脚本,便于升级后快速恢复配置。

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