PVE搭建All-In-One服务器方案分享
硬件环境
CPU:Intel J4125
内存:8GB DDR4 2400MHz(4GB x 2)
存储:SSD 64G(内置mSATA)+ 2TB(两个3.5寸外挂)
网卡:4个Intel i226-V 2.5G网口
网络:无公网IP(IPv4/IPv6)
设备图
硬盘使用双盘的硬盘底座,通过USB连接到主机。天气冷的时候温度基本在40度左右,在夏天的时候要外挂一个12寸的小风扇来散热。
网络结构图
整个系统采用虚拟化部署,iKuai路由器作为核心运行在PVE中,IP地址为192.168.10.1。目前仅使用了两个物理网口,网络拓扑如下:
安装的虚拟机
本方案使用Proxmox VE(简称PVE)8.2.2作为虚拟化平台,共部署了4台虚拟机和2个LXC容器。其中LXC容器相比传统虚拟机更加轻量,但功能相对受限。
- nginx:负责内网服务的反向代理,内部已经更换为 Docker 部署的 Nginx Proxy Manager
- docker:专门运行alist服务,用于DSM云端备份,独立部署以确保备份稳定性
- ikuai:核心路由系统,统一管理所有网卡资源
- openwrt:功能丰富的旁路由,用于内网穿透、海外加速、DNS解析等
- dsm:群晖 7.2.2 系统,文件存储同步,照片,备份等
- fnos:飞牛 NAS,主要做影视仓库,视频下载等
iKuai 主路由
下载地址: https://www.ikuai8.com/component/download
对于家庭使用场景,32位系统完全够用。注意:安装时需要分配1GB内存,安装完成后可以降至512MB以节省资源。
net0 是 pve 的管理的虚拟网卡(也和一个物理网口绑定的),和其他虚拟机进行桥接,。
进到 iKuai,net0 默认是 LAN 口,后续和直通的两张网卡进行链路桥接。
后面的三个 PCI 是直通进去的三个 2.5G 网卡,其中一个作为 WAN 口,剩余的两个作为 LAN 口进行桥接即可。
WAN 口设置(外网)
使用 DHCP 方式通过光猫获取 IP 地址(如果光猫是桥接的,需要使用 PPPOE 拨号方式连接);
这里的 eth1 作为了 WAN 口使用,详细的配置可以查看iKuai 官网;
LAN 口设置(内网)
除了 WAN,其他都使用链路桥接方式作为 LAN 口,这样所有的 LAN 口连接的设备就在同一个网段了。
也可以设置多个 LAN 口使用不同的网段,我这里是桥接为一个 LAN 口的。
桥接之后,三个网口连接都是同一网段,并且都可以正常连接互联网。
注意
至于 iKuai 不会发射无线网络,我在 LAN 口上连接了一个无线路由器,无线路由器选择桥接模式。
DNS 设置
我首选 DNS 使用的是 Openwrt 下面的 AdGuardHome,备选的阿里云 DNS(解析速度基本在毫秒级别);
因为 ipv6 支持不太好,所以我禁用了 ipv6 的解析。
Openwrt 旁路由
安装的服务:
- openclash:海外网站加速访问,这里是安装文档
- AdGuardHome:DNS 加速,拦截广告等;上游 DNS 也使用的是阿里云的 DNS,这里是官方文档
- frpc:内网穿透,服务器使用的是腾讯云轻应用服务器,这里是官方文档
群晖 NAS
群晖 NAS 的配置如下所示,注意机型和网络设置。网卡尝试过使用 e1000e,发现 smb 服务和 Drive 很慢,virtio 就正常,不知道是不是我设置不对,还是偶然情况。CPU 这里使用的是 Host 模式,据说性能高一些。
主要存储照片、常用文件、热数据(这里的热数据是经常访问的数据,在其他设备也有备份)等;
硬件部分:分配 4G 内存、4 核 CPU、映射 1TB 硬盘(做照片和常用数据存储暂时够用了,后面加了硬盘)。
注意事项
我这里使用的引导是 DS923+,因为 DS923+官方配置没有没有核显,所以相册人脸识别是没有问题。期间我换到 DS920+引导,虽然 DS920+使用的是 J4125 的 CPU,但是相册人脸识别会强制调用 GPU。PVE 中我并没有直通 GPU,所以导致了人脸无法识别,场景也无法处理,虽然有补丁可以实现使用 CPU 来识别人脸,但是相册程序升级之后需要重新打补丁比较麻烦。
Docker 容器
- wordpress:个人博客,使用内网穿透映射到外网
- frpc:备用,防止 openwrt 挂掉后链接
- gitea:github 镜像仓库或者自己的自由仓库存储
- aria2:离线下载工具,主要下载 alist 上的资源
- xiaoya:主要作为 TVBox 的源使用,上面的资源也可以发给 aria2 下载
- jellyfin:影音服务器,主要看电视电影;因为电视端不支持客户端解码,所以删除了
- qbittorrent:种子下载器,主要下载电影等;已经迁移到飞牛 NAS 上了
- mediago:下载流媒体,m3u8 视频可以直接下载并生成 mp4 文件;暂时没有需求,后续可以在飞牛 NAS 上部署一个
安装的套件
就安装了基本的几个套件,但是整体使用还是很丝滑的。
功能说明:
- 文本编辑器:主要修改文本文件,docker 配置等
- Hyper Backup:备份群晖数据(支持加密,加密后文件结构都是看不到的),我只备份重要文件,支持备份历史
- Container Manager:原来的 Docker,套件不能满足的都可以使用 Docker 部署
- Synology Drive:私有外盘,安装后可以通过电脑、手机客户端进行文件同步和访问
- Synology Photos:照片管理软件,可以创建共享相册和私人相册,共享的照片每个人都可以查看,私人照片只有自己账号和管理员可以查看。支持人脸识别、场景识别等。
- Cloud Sync:云同步,可以将本地的更改实时的同步到云端,不支持历史
- Audio Station:音乐播放器,可以将本地下载好的音乐导入
备份方案
Alist 可以挂载各种云盘,例如百度云盘、阿里云盘、123 云盘、微云等。
有些重要的数据一定要做好备份,因为我这里是单盘,所以备份尤其重要。
注意事项
Cloud Sync 支持加密备份,虽然文件名是没有加密,但是内容是加密的,例如 word 文件加密的下载下来也是无法打开的,需要使用 Cloud Sync 先加密下载到文件夹中才可以正常打开。
飞牛 NAS
官网: https://fnnas.com/
有问题可以去论坛: https://club.fnnas.com/
主要做影视使用,对比其他的服务,最终还是选择了飞牛 NAS:
- Emby 是客户端是收费的(开心版在 TV 上不是很好用)
- Jellyfin 在 TV 端不能使用客户端解码,因为 J4125 的性能还是比较差,也没有做显卡直通,所以打开视频的时候会很慢并且 CPU 飙升;
飞牛的影视还是做的可以的,TV 端播放支持客户端解码很流畅,还支持字幕的下载和切换,刮削错误的视频还可以手动刮削;
目前官方只有:影视、相册、虚拟机,其实也足够了,因为有 Docker 的加持,可以自己部署一些应用。
测试了一下飞牛和黑群晖,飞牛的启动速度还是很快的。我分配了 2GB 运行内存,只安装影视勉强够用了。
我已经将 1TB 的硬盘直通给了飞牛,至于黑群晖,就存储照片这些,其他做一些加密备份到云端。
个人使用经验
- 目前应用中心的 qbittorrent 不是很好用,所以我后面换成了 docker 部署的
- 应用中心的迅雷下载种子的时候有时候不如 qbittorrent 好用
PVE 硬盘直通
磁盘在 PVE 上有两种使用方式:
1、PVE 在硬盘上创建存储,然后将存储分配给虚拟机使用
2、直通给某台虚拟机管理
第 1 种方案有一个缺陷,那就是这个硬盘只能在 PVE 上使用,拔掉没有办法在其他机器使用,要是系统崩溃了,也不好恢复。
第 2 种直通的方案就是将整块硬盘分配给某一台虚拟机使用,其他虚拟机就无法使用这块硬盘了,但是有一个好处就是,如果这个虚拟机挂掉了,那我们只需要重装虚拟机再把磁盘挂上去就可以了,甚至可以挂在另外一台 PVE 上的某个虚拟机,迁移性要好一些。
所以我们说说直通的方案:
其实不算是直通(直通的话应该是整个 SATA 控制器,由于我的机器只有一个 SATA 控制器,所以不能直通),算是映射 PVE 磁盘到虚拟机,参考文档
ls -l /dev/disk/by-id/ # 查看所有的硬盘
# qm set <vm_id> –<disk_type>[n] /dev/disk/by-id/<type>-$brand-$model_$serial_number
# 例如:
qm set 102 --sata2 /dev/disk/by-id/usb-Kingston_DataTraveler_3.0_E0D55EA493B9F430E89A0686-0:0
qm set 102 --sata2 /dev/disk/by-id/ata-ST4000VX000-2AG166_ZGY163KG
外网访问虚拟机
飞牛 NAS 可以通过官方的 Connect 服务直接访问,虽然速度较慢,但用于管理 NAS 已经足够。
其他服务目前使用腾讯云轻量服务器进行内网穿透和反向代理,由于性能较弱,因此并未部署其他额外服务。
尽管我采用了内网穿透方案,但并不建议将过多服务暴露在公网,以降低潜在的安全风险。目前,我仅将 OpenWrt 的 SSH 端口映射到公网,并禁用了密码登录,仅支持公钥认证。至于其他所有服务(如群晖同步插件的端口),均通过 SSH 本地端口转发进行通信。具体的端口转发方法可参考 阮一峰老师的教程。
由于 SSH 端口转发在手机端的使用体验较差,我最近搭建了 Tailscale 进行异地组网。将 OpenWrt 设备加入 Tailscale 后,我可以通过 OpenWrt 的子网功能,使用局域网 IP 直接访问内网服务,例如:
• PVE 管理界面:https://192.168.10.20:8006
• OpenWrt 管理界面:https://192.168.10.15
主要参考了以下教程完成搭建:
- Tailscale玩法之内网穿透、异地组网、全隧道模式、纯IP的双栈DERP搭建、Headscale协调服务器搭建,用一期搞定,看一看不亏吧?_哔哩哔哩_bilibili
- 大内网战略(6):自建 Tailscale DERP 中继服务器 保姆级教程