Proxmox VE 9.x 换源关掉订阅提示脚本

dwf135 146.5K 0

先说结论:这玩意儿没什么黑科技,就是个 1400 行的 Bash 单文件,把我在论坛里搜了三小时才拼出来的那几件事,做成了能选数字的菜单。但它确实省了我两个晚上。

项目在这儿:xiangfeidexiaohuo/pve-diy。

Proxmox VE 9.x 换源关掉订阅提示脚本

它治的是哪几个病

国内机器装 PVE 之后,大概人人都会撞上三件事。

第一件是源慢。官方源在境外,配上默认送你的 enterprise 企业源,没订阅就是满屏 401 Unauthorized,连 apt update 都给你搞得半残。第二件是那个"没有有效订阅"的红字,天天挂在那儿,看着烦。第三件最要命——节点主页就那几行 CPU 占用、内存、负载,温度一个都没有,机器到底热不热全靠手摸机箱(别笑,我第一台就是这么干的)。

这个脚本把这三件事一起收拾了,顺手还塞了直通、CPU 电源模式、Ceph 卸载、删旧内核这些。原始版本来自 shidahuilang/pve,现在这位作者是 2025 年起重写的,PVE 8/9 和 Debian trixie 都照顾到了。

怎么跑

它要 curl,很多 PVE 默认没装,先补一句:

apt-get update -y && apt-get install curl wget sudo bash -y

然后一行进菜单:

bash -c "$(curl -fsSL https://raw.githubusercontent.com/xiangfeidexiaohuo/pve-diy/master/pve.sh)"

有个副作用得提前说:跑完系统语言就变英文了(它要切 en_US.UTF-8,后面改 JS 里的正则得靠英文字符串匹配)。不习惯的话心里有个数。

菜单里那八项,值得说的其实不多

第 1 项是最值回票价的。一个函数里连着干六件事:apt 源换成中科大(按 Debian 大版本自动选 bullseye/bookworm/trixie)、CT 模板源、中科大的 pve-no-subscription 源、掐掉企业源、用 sed 把 proxmoxlib.js 里那个订阅弹窗 Ext.Msg.show 前面插一段 void({ // 短路掉、再把 gpg 密钥从 USTC 拉下来(拉不到自动回退到作者仓库里的 gpg/)。

有意思的是它最后没有替你 dist-upgrade。大版本升级这事儿交回给你自己判断,这个克制我挺认可的。

第 2 项是直通。先 dmesg 里查 DMAR/IOMMU,不支持直接退;然后按你是 Intel 还是 AMD 加 intel_iommu=on 还是 amd_iommu=on,再 append 五个 vfio 模块,写 blacklist 和 vfio.conf。vfio.conf 里预置了 ids=8086:3185,也就是 Intel 核显的 device id——所以你想搞核显直通、黑群晖人脸识别那套,这脚本等于把前置路铺好了,改完重启就行。

第 3 项选 CPU 模式。六种:conservative、ondemand、powersave、performance、schedutil,加一个恢复默认。菜单里那句提示挺实在:现在大部分 CPU 走 pstate 驱动,其实只给你 performance 和 powersave 两档,选别的它会比对 scaling_available_governors 然后告诉你"不支持"。我这种挂着一堆 All-in-one 的机器,用 ondemand 就够了;想让风扇逻辑省心直接 performance。

第 4、5 项是这次改版最用心的。原理是三处联动:后端 Nodes.pm 里吐 sensors -j 的数据,前端 pvemanagerlib.js 注册 widget 渲染成 CPU: xx ℃、主板: xx ℃、固态: xx ℃,顺带把订阅弹窗那个文件也改了。依赖一次装齐 lm-sensors nvme-cli sysstat linux-cpupower,还给 nvme、hddtemp 打 +s 提权(不然 web 服务读不到 SMART)。

比老版本强的地方:动态扫 NVMe 盘,型号、容量、温度、Available Spare、通电时间、Unsafe Shutdowns 全给你摊到主页上,等于把 SMART 面板搬进来了;AMD 核显温度也支持了;多核机器上 CPU 温度和频率按每 4 核一行折行显示,16 核出四行,不把面板撑爆。

第 5 项是后悔药:cpu_del() 按 pveversion 找 <文件>.<版本>.bak,三个文件整体还原。加回去容易,改坏了能退回去,这是我最服它的地方——别的脚本改完就不管了。

第 6、7、8 项是给特定场景准备的。加 ceph 源(PVE 8/9 走 squid、7/8 走 quincy,顺手把 pveceph.pm 里的 download.proxmox.com 也换成中科大);卸载 ceph(那一串 rm -rf /etc/pve/ceph.conf、/var/lib/ceph/*,删的是数据,手要稳);删旧内核(列出来让你输 1,2,只认一个 y 才动手,开头还挂三行红字警告)。

后两个是全脚本唯一能让你半夜救火的东西,我一般建议留到最后再碰。

Proxmox VE 9.x 换源关掉订阅提示脚本

它的保险丝做得挺到位

判断一个 shell 脚本靠不靠谱,就看它敢不敢留退路。这个脚本留了两条:

一是所有 /etc/apt/ 下的改动统一挪到 /etc/apt/backup/;二是改那三个 JS/PM 文件时生成 <文件>.<pve版本号>.bak,所以 PVE 8 和 9 的备份能并存不打架,第 5 项撤回就靠这个。

代价也有:PVE 升级 pveproxy 包的时候,被你改过的 JS 会被上游包覆盖掉,温度显示没了是正常现象,重跑第 4 项就行。

我踩到的两个坑,跟你们说下

截图里那句 TIME: command not found 不是你按错了。这是脚本自己的 bug:pvelocale() 在第 9 行就调了 TIME,而 TIME() 定义在二十几行之后,Bash 一行行跑过去的时候还没定义,于是报一次。不影响后面任何功能,直接输数字继续就行。看着别扭就把那句 TIME g "..." 注释掉重跑一遍,干净。

另外那满屏 enterprise.proxmox.com 401 是"还没动手"的常态,跑完第 1 项移除企业源再 apt update,红字就没了。

README 里还写了句"下载到本地改第 69 行"——那是旧版遗留,现在的第 69 行是 sver="wheezy" 的判分支,别照着改。真觉得面板高度不够,去 pvemanagerlib.js 里把 widget.pveNodeStatus 的 height: 300 调大,改完 systemctl restart pveproxy。

最后

适用的人很清楚:All-in-one 家庭主机、刚装好 PVE 要换源直通加温度面板的新手,以及懒得再翻三篇教程的老手。不适合的是生产环境——README 上那句"出现任何风险,自行承担"是认真的。

我自己用下来的顺序就三步:先跑第 1 项把源和订阅理干净,然后看你要不要直通(第 2 项,改完得重启),再上第 4 项加温度(随时能用第 5 项撤掉)。第 7、8 项别当日常操作。

脚本归脚本,改 /etc/apt 和浏览器那堆 JS 的事儿,重要数据还是先备份一下再跑。

发表评论 取消回复
表情 图片 链接 代码

分享