参考文章 https://blog.kkk.rs/archives/28 网页链接
整体架构拓朴图,画的不好轻喷

硬件汇总
机箱:MS04
主板:雲星B250
CPU:I9-9900T
内存:光威32G*2
数据硬盘:希捷酷鹰ST4000VX016 4T*3 + WD HC550 16T*1
PVE硬盘:SN550 1T + PM991A 512G
PVE系统盘:小黄鱼MLC U盘
电源:益衡7650B 500W
显卡:蓝戟A380单槽刀卡(DG2)
其他:主路由为小米路由器BE7000
外网访问架构: 1,光猫拨号设置主路由为DMZ区,内部服务通过端口转发到达DMZ区域,通过DDNS域名+端口来到达指定服务
2,通过部署的VPN,使用OpenVPN客户端连接到内网,直接通过内网IP+端口达到指定服务
能解决什么需求?
1,存储需求,内部群晖直通Lan2口与机械硬盘,从而达到最高使用效率,群晖对外暴露WebDAV(Windows)/SMB(电视机)/NFS(PVE镜像存储)/ISCSI(PVE客户机磁盘)来满足内外网设备的存储需求
2,下载、PT需求,群晖下载站套件和迅雷套件可以满足大部分下载场景,PT通过QB套件来进行下载和存储
3,内外网的影视库需求,依赖Jellyfin服务对外提供影视服务,内网设备也可通过SMB串流来播放,外网设备可以通过Jellyfin手机端等来实现转码播放
4,魔法需求,本质上clash docker可以部署在任意环境,复杂场景比如xbox可以通过部署的openwrt旁路由来实现
5,虚拟机输出到电视机的需求,部署的Ubuntu桌面可以观看直播等
6,虚拟机测试远程桌面需求,工作需要,Windows桌面可以通过RPD远程桌面来访问,Linux桌面可以通过spice远程工具来进行访问
7,其他项目和服务的测试和部署,通过PVE来实现
8,arm模拟需求,由于QEMU的特性,我们可以使用PVE来进行简单的arm模拟需求(解决有无的问题),但效率偏低
部署架构细节:
PVE部署群晖,直通网口、机械硬盘、核显HD630给群晖(只做人脸识别用),群晖对外暴露服务
PVE部署ubuntu24,ubuntu部署docker,docker部署n大jellyfin,直通DG2显卡给jellyfin硬解,系统通过内网网桥来SMB挂载群晖内影视文件夹(不占用物理交换机资源),jellyfin识别并建立媒体库
PVE部署windows、Linux、openvpn、openwrt等其他服务,按需连接内网网桥和外网网桥
下文的所有部署内容只介绍我清楚的有把握的地方,并且介绍思路为主
主板和BIOS设置
DG2需要主板打开Resizable BAR和Above 4G以获取更高性能
PVE直通需要打开VT-D,这个很关键,不要忘
如果有SR-IOV设备记得打开这个选项
CPU睿频记得开
其他如果有特殊配置的按照店家发你的手册来进行操作即可
PVE部署
因为不想浪费主板正面的USB2.0接口(本来是群晖引导专用),我把PVE系统部署在了这个接口上的一个小黄鱼买来的DIY MLC U盘,有风险,千万不要学我
PVE部署和大多常规系统一样,没什么特殊的,下载镜像后通过工具写盘即可,下载地址如下
https://www.proxmox.com/en/downloads
写盘工具比如rufus,软碟通都行,引导盘和系统盘分清楚,不部署在USB内也可以部署在内置的NVME硬盘内,如果PVE内安装路径找不到硬盘,可以先把盘取下来格式化一下
如果不能理解,直接B站内找播放量比较高的安装视频即可,PVE使用什么版本看你自己,我倾向于保持最新,如果你怕不稳可以用7x的环境。
PVE直通和其他配置
去除订阅提示,添加CPU温度等信息可以使用类似pve_source 或pvetools-master等工具实现,可以自行搜索
直通参考这个网页链接
PVE直通打开IOMMU,我这里只贴我的关键参数
root@flanker:/etc/modprobe.d# cat /etc/default/grub
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt spectre_v2=off spectre_v1=off"
GRUB_CMDLINE_LINUX=""
-------------------------------------------
quiet intel_iommu=on iommu=pt 直通需要用
spectre_v2=off spectre_v1=off 解释和出处如下
https://blog.kkk.rs/archives/28

关于IOMMU分组:我没开,不知道是为了解决啥场景的,欢迎大家跟我说说。。。
root@flanker:/etc/modprobe.d# cat pve-blacklist.conf
# nvidiafb see bugreport https://bugzilla.proxmox.com/show_bug.cgi?id=701
#block AMD driver
blacklist radeon
blacklist amdgpu
#block NVIDIA driver
blacklist nouveau
blacklist nvidia
blacklist nvidiafb
#intel
blacklist i915
blacklist snd_hda_intel
blacklist snd_hda_codec_hdmi
#attach
options vfio_iommu_type1 allow_unsafe_interrupts=1 群晖部署
直接用最新的RR就行,我用的是SA6400,这个太多了就不展开了,找现成教程就行,我贴一下我的配置吧,没什么特殊的,HD630在最新的RR SA6400可以直接驱动
root@flanker:/etc/pve/qemu-server# cat 101.conf
agent: 1
balloon: 4096
bios: ovmf
boot: order=sata1
cores: 4
cpu: host
hookscript: local:snippets/hooks-igpupt.pl
hostpci0: 0000:08:00,pcie=1 #网口
hostpci1: 0000:00:02,pcie=1,x-vga=1 #HD630核显
hostpci2: 0000:00:17,pcie=1 #SATA控制器
machine: q35
memory: 8192
meta: creation-qemu=8.0.2,ctime=1696955655
name: DSMService
net1: virtio=BC:24:11:09:28:1C,bridge=vmbr1,firewall=1
numa: 0
ostype: l26
sata0: CoreDataBase:vm-101-disk-0,discard=on,size=115G,ssd=1
sata1: CoreDataBase:vm-101-disk-1,discard=on,size=3585M,ssd=1
scsihw: virtio-scsi-single
serial0: socket
smbios1: uuid=ab732b2c-55b0-42b9-a8c7-26d5cc211e4f
sockets: 1
tags: core;dsm
vga: none
vmgenid: 4607f454-b7ca-41bf-97a4-969c1ffab742
root@flanker:/etc/pve/qemu-server# Ubuntu24 desktop部署,这个也很简单,配置没什么特殊的,见配置
#ubuntu-24.04下,A380显卡可以实现开箱即用
root@flanker:/etc/pve/qemu-server# cat 104.conf
agent: 1
args: -spice 'tls-port=60020,port=60021,addr=192.168.31.68,tls-ciphers=HIGH,seamless-migration=on,streaming-video=all,password-secret=test' -object 'secret,id=test,data=******'
balloon: 4096
boot:
cores: 4
cpu: host
hostpci0: 0000:03:00,pcie=1,x-vga=1 #DG2
hostpci1: 0000:04:00,pcie=1 #DG2 声卡
ide2: ISO:iso/ubuntu-24.04-desktop-amd64.iso,media=cdrom,size=5971344K
machine: q35
memory: 8192
meta: creation-qemu=8.1.5,ctime=1715165938
name: Ubuntu
net0: virtio=BC:24:11:06:24:2F,bridge=vmbr0,firewall=1
net1: virtio=BC:24:11:A0:38:B8,bridge=vmbr1,firewall=1
numa: 0
ostype: l26
parent: perfect
scsi0: CoreDataBase:vm-104-disk-0,discard=on,iothread=1,size=100G,ssd=1
scsihw: virtio-scsi-single
serial0: socket
smbios1: uuid=15416d6c-39c9-4b9e-8229-2202c815df3b
sockets: 1
spice_enhancements: videostreaming=all
usb0: host=1-3
usb1: host=1-4
usb2: host=10d7:b012
vga: none
vmgenid: e72c0369-335f-42a0-a3e9-2c22cdac882a
[perfect]
agent: 1
args: -spice 'tls-port=60020,port=60021,addr=192.168.31.68,tls-ciphers=HIGH,seamless-migration=on,streaming-video=all,password-secret=test' -object 'secret,id=test,data=******'
boot:
cores: 8
cpu: host
hostpci0: 0000:03:00,pcie=1,x-vga=1
hostpci1: 0000:04:00,pcie=1
ide2: ISO:iso/ubuntu-24.04-desktop-amd64.iso,media=cdrom,size=5971344K
machine: q35
memory: 8192
meta: creation-qemu=8.1.5,ctime=1715165938
name: Ubuntu
net0: virtio=BC:24:11:06:24:2F,bridge=vmbr0,firewall=1
net1: virtio=BC:24:11:A0:38:B8,bridge=vmbr1,firewall=1
numa: 0
ostype: l26
runningcpu: host,kvm=off,+kvm_pv_eoi,+kvm_pv_unhalt
runningmachine: pc-q35-8.1+pve0
scsi0: CoreDataBase:vm-104-disk-0,discard=on,iothread=1,size=100G,ssd=1
scsihw: virtio-scsi-single
serial0: socket
smbios1: uuid=15416d6c-39c9-4b9e-8229-2202c815df3b
snaptime: 1715267057
sockets: 1
spice_enhancements: videostreaming=all
usb0: host=1-3
usb1: host=1-4
usb2: host=10d7:b012
vga: none
vmgenid: e72c0369-335f-42a0-a3e9-2c22cdac882a
vmstate: CoreDataBase:vm-104-state-perfect docker 的部署与版本
见官网https://docs.docker.com/engine/install/ubuntu/
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
root@flanker:~# docker -v
Docker version 26.1.2, build 211e74b Jellyfin yml文件
root@flanker:/home/flanker/docker/jellyfin# cat docker-compose.yml
version: '3.8'
services:
jellyfin:
image: nyanmisaka/jellyfin
container_name: jellyfin
user: 0:0
network_mode: 'host'
devices:
- /dev/dri:/dev/dri #显卡
volumes:
- /home/flanker/docker/jellyfin/config:/config
- /home/flanker/docker/jellyfin/cache:/cache
- /home/flanker/docker/jellyfin/media:/media
restart: 'unless-stopped'
# Optional - alternative address used for autodiscovery
environment:
- JELLYFIN_PublishedServerUrl=http://example.com #不知道 自带的
- http_proxy=http://192.168.10.233:7890 #代理
- https_proxy=http://192.168.10.233:7890 #代理
- no_proxy=localhost,127.0.0.1 #代理
# Optional - may be necessary for docker healthcheck to pass if running in host network mode
extra_hosts:
- 'host.docker.internal:host-gateway'
- 'image.tmdb.org:143.244.49.177' #hosts
- 'api.themoviedb.org:18.164.124.55'#hosts
转码截图


啥?你问我为啥不直接用HD630?那不是DG2强嘛!
结束