新买了一台主机,准备搭个 PVE 服务器,在这记录一下过程。

安装 PVE

PVE 本身基于 Debian 系统,安装起来并不会十分复杂。下载最新版的 PVE 镜像,还有最新版引导盘制作软件 Rufus,将镜像写入 U 盘后再从 U 盘启动即可。遇到一个比较坑的问题,引导进入 PVE 安装界面后却提示 no device with valid ISO found, please check your installation medium。因为我这 U 盘拿来做各种启动盘也挺久了所以一开始没怀疑到它,总觉得是自己引导盘做的有问题,还换了 Etcher,用 AI 搜来的过时信息对 bios 一通修改。结果最后换了个 U 盘就好了,并不用做任何多余的操作。

安装 PVE 时注意想好主机名和分配给服务器的 ip,之后虽然也可以修改,不过一开始能定下来后面就省点心。

PVE 服务器改名

hostnamectl set-hostname <新名字>
修改 /etc/hosts 替换老名字

mkdir /root/tmp
cp -r /etc/pve/nodes/<老名字>/* /root/tmp/ # 复制现有配置
rm -rf /etc/pve/nodes/<老名字>
mkdir /etc/pve/nodes/<新名字>
cp -r /root/tmp/* /etc/pve/nodes/<新名字> # 复制现有配置
reboot

修改镜像源

安装完后要更新软件,首先就是改镜像源了。按清华大学镜像站的指引更换 Debian 和 Proxmox 软件源。

企业版源列表文件内的内容 /etc/apt/sources.list.d/pve-enterprise.list 可以全部注释掉。

ceph 源,将 ceph.source 复制备份后新建 /etc/apt/sources.list.d/ceph.list,内容为

deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-squid bookworm no-subscription

最后执行 apt update && apt dist-upgrade -y 更新并重启即可。

删除 local-lvm

local-lvm 和 local 本意是一个放 iso 方便安装虚拟机,一个放虚拟机磁盘,相当于默认分了个区,没法有效利用磁盘空间,所以直接删了合并成一个。local-lvm 删除后,空间合并给 local 存储空间。

lvremove /dev/pve/data
lvextend -l +100%FREE -r /dev/pve/root

命令操作完后在 Web 界面删除 local-lvm 存储:点击左侧列表的数据中心节点 – 存储 – 选中 local-lvm 删除。
最后还要配置下 local 存储,在上一步的存储界面选中 local,点击 编辑 – 内容,确保选中了 所有选项(包括磁盘映像、容器等),这样 local 分区就可以存放各类文件了。

安装文件虚拟机

新建一个虚拟机用来管理所有数据磁盘,并通过 smb 分享给其他服务,省得虚拟机各搞各的了。随便装个 Fedora 或者 Debian,配一下 smb.conf。

/usr/sbin/groupadd smbgroup               # 设置 smb 用户组
/usr/sbin/useradd smb_user1               # 新建 smb 用户
/usr/sbin/usermod -aG smbgroup smb_user1  # 添加到组
smbpasswd -a smb_user1                    # 设置密码

ufw allow samba                           # 防火墙放行,如果有的话

sudo chgrp -R smbgroup /srv/samba/shared  # 每个共享目录都要操作
sudo chmod 2770 /srv/samba/shared         # 设置 SGID,保证新建文件继承组身份

配置 smb.conf

[global]
   security = user
   smb passwd file = /etc/samba/smbpasswd
   access based share enum = Yes
   # 禁用不安全的 SMB1 协议
   server min protocol = SMB2_10
   # 禁用不安全的 NTLMv1 认证
   ntlm auth = ntlmv2-only
   # 明确要求客户端使用更安全的加密
   server smb encrypt = desired
[tmp-space]  # 设置共享目录
   comment = 临时目录
   create mask = 0664
   directory mask = 0775
   inherit permissions = Yes
   path = /srv/samba/tmp-folder
   read only = No                     # 目录默认可写
   valid users = smb_user1 smb_user2  # 允许哪些用户访问
   read list = smb_user1              # 重载读写配置,user1 设为只读 
   write list = smb_user2 @wgroup     # 仅 user2 和 wgroup 里的用户可写,再配合全局的 read only 设置就比较完善了

最后重启 smb:systemctl restart smbd nmbd

Windows 连接 smb:在我的电脑 – 工具栏中的“计算机” – 映射网络驱动器。

To be continued

还有其他一些东西需要配置,比如 LUKS 磁盘加密,jellyfin 直通核显硬解等,后续再一一补充。

参考

最后贴一下官方文档,有各种问题都可以去里面找找