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寸的小风扇来散热。

desk

网络结构图

整个系统采用虚拟化部署,iKuai路由器作为核心运行在PVE中,IP地址为192.168.10.1。目前仅使用了两个物理网口,网络拓扑如下:

border

安装的虚拟机

本方案使用Proxmox VE(简称PVE)8.2.2作为虚拟化平台,共部署了4台虚拟机和2个LXC容器。其中LXC容器相比传统虚拟机更加轻量,但功能相对受限。

vms

  • 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以节省资源。

ikuai

net0 是 pve 的管理的虚拟网卡(也和一个物理网口绑定的),和其他虚拟机进行桥接,。
进到 iKuai,net0 默认是 LAN 口,后续和直通的两张网卡进行链路桥接。
后面的三个 PCI 是直通进去的三个 2.5G 网卡,其中一个作为 WAN 口,剩余的两个作为 LAN 口进行桥接即可。

WAN 口设置(外网)

使用 DHCP 方式通过光猫获取 IP 地址(如果光猫是桥接的,需要使用 PPPOE 拨号方式连接);
这里的 eth1 作为了 WAN 口使用,详细的配置可以查看iKuai 官网

border

LAN 口设置(内网)

除了 WAN,其他都使用链路桥接方式作为 LAN 口,这样所有的 LAN 口连接的设备就在同一个网段了。
也可以设置多个 LAN 口使用不同的网段,我这里是桥接为一个 LAN 口的。

border

桥接之后,三个网口连接都是同一网段,并且都可以正常连接互联网。

注意

至于 iKuai 不会发射无线网络,我在 LAN 口上连接了一个无线路由器,无线路由器选择桥接模式。

DNS 设置

我首选 DNS 使用的是 Openwrt 下面的 AdGuardHome,备选的阿里云 DNS(解析速度基本在毫秒级别);
因为 ipv6 支持不太好,所以我禁用了 ipv6 的解析。

border

Openwrt 旁路由

安装的服务:

  • openclash:海外网站加速访问,这里是安装文档
  • AdGuardHome:DNS 加速,拦截广告等;上游 DNS 也使用的是阿里云的 DNS,这里是官方文档
  • frpc:内网穿透,服务器使用的是腾讯云轻应用服务器,这里是官方文档

群晖 NAS

群晖 NAS 的配置如下所示,注意机型和网络设置。网卡尝试过使用 e1000e,发现 smb 服务和 Drive 很慢,virtio 就正常,不知道是不是我设置不对,还是偶然情况。CPU 这里使用的是 Host 模式,据说性能高一些。

dsm_vm

主要存储照片、常用文件、热数据(这里的热数据是经常访问的数据,在其他设备也有备份)等;
硬件部分:分配 4G 内存、4 核 CPU、映射 1TB 硬盘(做照片和常用数据存储暂时够用了,后面加了硬盘)。

注意事项

我这里使用的引导是 DS923+,因为 DS923+官方配置没有没有核显,所以相册人脸识别是没有问题。期间我换到 DS920+引导,虽然 DS920+使用的是 J4125 的 CPU,但是相册人脸识别会强制调用 GPU。PVE 中我并没有直通 GPU,所以导致了人脸无法识别,场景也无法处理,虽然有补丁可以实现使用 CPU 来识别人脸,但是相册程序升级之后需要重新打补丁比较麻烦。

补丁地址: https://github.com/jinlife/Synology_Photos_Face_Patch

Docker 容器

dsm

  • wordpress:个人博客,使用内网穿透映射到外网
  • frpc:备用,防止 openwrt 挂掉后链接
  • gitea:github 镜像仓库或者自己的自由仓库存储
  • aria2:离线下载工具,主要下载 alist 上的资源
  • xiaoya:主要作为 TVBox 的源使用,上面的资源也可以发给 aria2 下载
  • jellyfin:影音服务器,主要看电视电影;因为电视端不支持客户端解码,所以删除了
  • qbittorrent:种子下载器,主要下载电影等;已经迁移到飞牛 NAS 上了
  • mediago:下载流媒体,m3u8 视频可以直接下载并生成 mp4 文件;暂时没有需求,后续可以在飞牛 NAS 上部署一个

安装的套件

就安装了基本的几个套件,但是整体使用还是很丝滑的。

dsm

功能说明:

  • 文本编辑器:主要修改文本文件,docker 配置等
  • Hyper Backup:备份群晖数据(支持加密,加密后文件结构都是看不到的),我只备份重要文件,支持备份历史
  • Container Manager:原来的 Docker,套件不能满足的都可以使用 Docker 部署
  • Synology Drive:私有外盘,安装后可以通过电脑、手机客户端进行文件同步和访问
  • Synology Photos:照片管理软件,可以创建共享相册和私人相册,共享的照片每个人都可以查看,私人照片只有自己账号和管理员可以查看。支持人脸识别、场景识别等。
  • Cloud Sync:云同步,可以将本地的更改实时的同步到云端,不支持历史
  • Audio Station:音乐播放器,可以将本地下载好的音乐导入

备份方案

Alist 可以挂载各种云盘,例如百度云盘、阿里云盘、123 云盘、微云等。
有些重要的数据一定要做好备份,因为我这里是单盘,所以备份尤其重要。

border

注意事项

Cloud Sync 支持加密备份,虽然文件名是没有加密,但是内容是加密的,例如 word 文件加密的下载下来也是无法打开的,需要使用 Cloud Sync 先加密下载到文件夹中才可以正常打开。

飞牛 NAS

官网: https://fnnas.com/
有问题可以去论坛: https://club.fnnas.com/

主要做影视使用,对比其他的服务,最终还是选择了飞牛 NAS:

  • Emby 是客户端是收费的(开心版在 TV 上不是很好用
  • Jellyfin 在 TV 端不能使用客户端解码,因为 J4125 的性能还是比较差,也没有做显卡直通,所以打开视频的时候会很慢并且 CPU 飙升;

飞牛的影视还是做的可以的,TV 端播放支持客户端解码很流畅,还支持字幕的下载和切换,刮削错误的视频还可以手动刮削;

目前官方只有:影视、相册、虚拟机,其实也足够了,因为有 Docker 的加持,可以自己部署一些应用。
测试了一下飞牛和黑群晖,飞牛的启动速度还是很快的。我分配了 2GB 运行内存,只安装影视勉强够用了。

fnos

我已经将 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

主要参考了以下教程完成搭建:

参考资料

留下回复