Proxmox VE (PVE) 8.2.2 服务器主机名配置显示为中文
分享个 Proxmox VE (PVE) “黑产级” 小技巧,通过改一点点后台代码和前端脚本,直接让 PVE 的侧边栏显示 VM 的备注第一行,支持显示为中文。效果就是一眼望去,你的 “测试机”、“数据库”、“挂机宝” 全都清清楚楚。
注意:此操作是基于 8.2.2 版本,操作前务必先备份文件,万一代码对不齐把网页搞崩了,还能救回来。
一共三个步骤:
- 后端: 让 PVE 的 API 在获取集群资源时,顺便去读一下 VM 配置文件里的备注字段。
- 前端: 让网页侧边栏拿到这个字段,并把它显示出来。
- 重启: 刷新服务生效。
直接上代码,可以直接把下面这一整段代码复制到 PVE 的 Shell 里执行。代码里加上了自动备份功能,改错了也能找回原文件。
# ==========================================
# 第一步:后端修改 (让 API 吐出备注数据)
# ==========================================
# 先备份,万一翻车好救命
cp /usr/share/perl5/PVE/API2/Cluster.pm /usr/share/perl5/PVE/API2/Cluster.pm.bak
# 在 API 定义里加个 description 字段
sed -i "/name => {/i \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ description => { description => \"Description\", type => \"string\", optional => 1 }, " /usr/share/perl5/PVE/API2/Cluster.pm
# 注入读取逻辑:直接去读 /etc/pve/ 下的配置文件第一行注释
sed -i "/my \$entry = PVE::API2Tools::extract_vm_stats/a \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ eval { my \$raw = PVE::Tools::file_get_contents(\"/etc/pve/\" . (\$entry->{type} eq 'lxc' ? 'lxc' : 'qemu-server') . \"/\$vmid.conf\"); if (\$raw =~ /^#(\\\\S+)/) { \$entry->{description} = \$1; } };" /usr/share/perl5/PVE/API2/Cluster.pm
# ==========================================
# 第二步:前端修改 (让网页侧边栏显示备注)
# ==========================================
# 还是先备份
cp /usr/share/pve-manager/js/pvemanagerlib.js /usr/share/pve-manager/js/pvemanagerlib.js.bak
# 在 ResourceStore 资源池里注册一下 description 字段
sed -i "4000,4500s|name: {|description: { header: gettext('Description'), type: 'string', hidden: true }, name: {|" /usr/share/pve-manager/js/pvemanagerlib.js
# 修改侧边栏显示逻辑:如果有备注就显备注,没备注就显原来的名字
sed -i "s|text += \" (\" + info.name + ')';|text += \" (\" + (info.description ? decodeURIComponent(info.description).split('\\\\n')[0] : info.name) + ')';|" /usr/share/pve-manager/js/pvemanagerlib.js
# ==========================================
# 第三步:重启服务,刷新页面
# ==========================================
systemctl restart pvedaemon pveproxy
执行之后,使用 Ctrl+F5 强制刷新 PVE 网页。
选中一个虚拟机,点开备注。
在备注的第一行写上你想显示的文字,比如:核心数据库。
填了之后侧边栏 ID 后面括号里显示的就是你填的备注,支持中文和特殊字符。
关于更新: PVE 每次大版本更新,这些系统文件都会被覆盖。到时候如果你发现备注没了,再跑一遍这个脚本就行。
万一网页打不开了: 别慌,用 cp /usr/share/pve-manager/js/pvemanagerlib.js.bak/usr/share/pve-manager/js/pvemanagerlib.js 把备份覆盖回去,再重启服务就恢复了。


