这是我写的第二篇关于VPS搭建Emby影视库的文章,这次我加了PVE作为底层,并简化了安装步骤,大多数以代码做架构,虽然看起来很烦,但是绝对新手向,因为我每个代码都做了解释,有喜欢的可以看看,还是那句老话,这是我自己研究的,所以很多东西我解释不了,如果是求助的话我可能无能为力,所以看看就好!附件是我的README跟所有脚本,喜欢的可以下载,不要钱
All-in-One 家庭数据中心(PVE)完整实战手册
适配你的目标:PVE 底层 + 飞牛OS(NAS)+ LXC Docker + iStoreOS 软路由 + Ubuntu 桌面 + SteamOS + 1Panel 面板
配套:VPS 公网中继(Debian 12 + 3X-UI 中文版) + WireGuard 专线
重点:硬件直通(GPU/磁盘)· Emby 公网访问 · 115 网盘挂载 · STRM + 302 直连 · 全站 HTTPS
0. 网络与硬件规划(必读)
拓扑(建议)
[Internet]
**
(443/80/54321/…)
**
[VPS: Debian12 + 3X-UI + Nginx Proxy Manager] ←(ACME证书/反代/管理面板)
** WireGuard 专线 (UDP/51820)
**
[PVE 物理机: Proxmox VE]──[iStoreOS(仅代理)]──(LAN)
**── VM: 飞牛OS (NAS) ——— 直通硬盘/导出NFS/SMB
**── LXC: Docker(Emby / MoviePilot / Lucky / NPM可选 / 1Panel)
**── VM: Ubuntu Desktop(占位)
**── VM: SteamOS(GPU直通)
**── (可选) 旁路网关 or SR-IOV
IP 规划示例
- 家庭 LAN:
192.168.50.0/24
(网关 192.168.50.1)
- PVE 管理:
192.168.50.10
- 飞牛OS:
192.168.50.20
- Docker LXC:
192.168.50.30
- Emby 容器:同 LXC 主机(映射 8096/8920)
- VPS 内网(WireGuard):
10.200.0.1
- PVE 内网(WireGuard):
10.200.0.2
域名:准备一个自己的域名(如 media.example.com 指向 VPS)。
端口:对外只放行 VPS 的 80/443(其余服务走反代);PVE 家中只需出站。
1. VPS(Debian 12)作为公网中继与代理节点
1.1 初始化与加固
apt update && apt -y upgrade
apt -y install curl wget unzip sudo vim ufw net-tools gnupg lsb-release
timedatectl set-timezone Asia/Shanghai
# BBRecho "net.core.default_qdisc=fq" | tee -a /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" | tee -a /etc/sysctl.conf
sysctl -p# 防火墙(仅示例:放通 22/80/443/51820/自定义面板端口)ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw allow 80,443/tcp
ufw allow 51820/udp
ufw enable
1.2 安装 3X-UI 中文版(Xray 面板)
3X-UI 中文优化版,安装脚本与面板中文化更友好;面板用于创建 Trojan/VLESS/Reality 等节点。
bash <(curl -Ls <https://raw.githubusercontent.com/gm-cx/3x-ui-cn/main/install.sh>)# 安装后会显示面板地址/端口/初始账户
建议
- 安装完成后立即修改面板端口与账号密码;启用面板自带 ACME 证书(或用 Nginx/CF 反代面板)。
- 建议创建 Trojan 或 VLESS-REALITY 节点,兼顾稳定与隐蔽。
1.3 安装 Nginx Proxy Manager(NPM)做统一反代
mkdir -p /opt/npm && cd /opt/npm
cat > docker-compose.yml <<'YML'version: "3.8"services: app: image: jc21/nginx-proxy-manager:latest restart: unless-stopped ports: - "80:80" - "81:81" - "443:443" volumes: - ./data:/data - ./letsencrypt:/etc/letsencryptYMLdocker compose up -d
- 初始后台
http://<VPS>:81
(首次登录会引导改密码)。
- 新建 “Proxy Host”:
media.example.com
→ 指向 PVE 内网 Emby 的 WireGuard 地址(见 §2.3)。
- 证书选择 Request a new certificate (Let’s Encrypt),勾选 Force SSL 与 HTTP to HTTPS。
1.4 配置 WireGuard(VPS 端)
apt -y install wireguard
wg genkey | tee /etc/wireguard/server.key | wg pubkey > /etc/wireguard/server.pub
srv_priv=$(cat /etc/wireguard/server.key)srv_pub=$(cat /etc/wireguard/server.pub)cat > /etc/wireguard/wg0.conf <<WG[Interface]Address = 10.200.0.1/24ListenPort = 51820PrivateKey = ${srv_priv}SaveConfig = true# 对端(PVE)示例,公钥稍后填#[Peer]#PublicKey = <PVE_PUBLIC_KEY>#AllowedIPs = 10.200.0.2/32, 192.168.50.0/24#PersistentKeepalive = 25WGchmod 600 /etc/wireguard/wg0.conf
systemctl enable --now wg-quick@wg0
稍后在 PVE 端生成公钥并回填到 VPS 的 wg0.conf。
2. PVE(Proxmox VE)从零到可用
2.1 BIOS 必备设置
- 开启 Intel VT-d / AMD-Vi(IOMMU);开启 Virtualization/AMD-SVM。
- 开启 Above 4G Decoding;如用独显直通,建议开启 Resizable BAR(可选)。
- 禁用 CSM(若需 UEFI),或保留 Legacy(某些旧卡更稳)。
2.2 安装 PVE
- 用 Rufus/Ventoy 写入 PVE ISO,U 盘启动。
- 安装向导:设置 root 密码与主机名、管理 IP(LAN 内网)。
- 安装后访问
https://<PVE内网IP>:8006
登录 Web 界面。
2.3 关闭企业源 + 更新
sed -i 's/^/# /' /etc/apt/sources.list.d/pve-enterprise.list
cat >/etc/apt/sources.list.d/pve-no-subscription.list <<'S'deb <http://download.proxmox.com/debian/pve> bookworm pve-no-subscriptionSapt update && apt -y full-upgrade
2.4 启用 IOMMU 与 VFIO(硬件直通关键)
# 1) 开机参数sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="/GRUB_CMDLINE_LINUX_DEFAULT="quiet iommu=pt /' /etc/default/grub
# Intel:追加 intel_iommu=on;AMD:追加 amd_iommu=onsed -i 's/iommu=pt /iommu=pt intel_iommu=on /' /etc/default/grub # 如果是Intel# sed -i 's/iommu=pt /iommu=pt amd_iommu=on /' /etc/default/grub # 如果是AMDupdate-grub# 2) VFIO 模块cat >/etc/modules <<'M'vfiovfio_iommu_type1vfio_pcivfio_virqfdM# 3) 黑名单(示例:NVIDIA/AMD/Intel按需)cat >/etc/modprobe.d/blacklist-gpu.conf <<'B'blacklist nouveaublacklist nvidiablacklist nvidia_drm# 如需直通AMD独显:# blacklist amdgpu# 如需直通核显很少黑名单,但避免宿主占用 /dev/driB# 4) 绑定设备到 vfio-pci(示例:填你的设备ID)# lspci -nn | egrep -i "vga|audio|usb|sata|nvme"# echo "options vfio-pci ids=10de:2489,10de:228b" >/etc/modprobe.d/vfio-pci-ids.confupdate-initramfs -ureboot
验证:
dmesg | egrep -i "IOMMU|DMAR"find /sys/kernel/iommu_groups/ -type l | sort
‼️ 重要避坑
- 直通设备必须处在独立 IOMMU 分组;若主板把多设备绑在一起,谨慎启用
pcie_acs_override
(不稳定/有风险)。
- 引导显卡直通常见黑屏:尽量让宿主使用核显,独显直通给 SteamOS。
- 直通磁盘务必使用
/dev/disk/by-id/…
,避免盘符漂移。
2.5 WireGuard(PVE 端,与 VPS 互通)
apt -y install wireguard
wg genkey | tee /etc/wireguard/client.key | wg pubkey > /etc/wireguard/client.pub
cli_priv=$(cat /etc/wireguard/client.key)cli_pub=$(cat /etc/wireguard/client.pub)read -r -d '' WGCONF <<WG[Interface]Address = 10.200.0.2/24PrivateKey = ${cli_priv}DNS = 1.1.1.1[Peer]PublicKey = <VPS_PUBLIC_KEY>AllowedIPs = 10.200.0.1/32, 0.0.0.0/0Endpoint = <VPS_IP_OR_DOMAIN>:51820PersistentKeepalive = 25WGecho "$WGCONF" > /etc/wireguard/wg0.conf
chmod 600 /etc/wireguard/wg0.conf
systemctl enable --now wg-quick@wg0
# 回到 VPS 把 PVE 的公钥与网段补进 wg0.conf,然后在 VPS 上重启 WireGuard:# systemctl restart wg-quick@wg0
反**路:VPS NPM ↔︎ WG ↔︎ PVE/LXC(Docker/Emby)。NPM 的 “Forward Hostname/IP” 指向 10.200.0.2:8096
。
3. 创建关键虚拟机/容器
3.1 飞牛OS(NAS)
避坑:直通给 NAS 的盘不要再让 PVE/ZFS 管理;避免双重管理导致掉盘。
3.2 LXC:Docker 容器主机(Debian 12)
# 下载模板(Web界面 > 模板)或命令行:pveam available / pveam downloadpct create 100 local:vztmpl/debian-12-standard_12.0-1_amd64.tar.zst \\ -hostname docker -net0 name=eth0,bridge=vmbr0,ip=dhcp \\ -rootfs local-lvm:16 -memory 4096 -cores 4 -swap 0 \\ -features nesting=1,keyctl=1
pct start 100
pct enter 100
安装 Docker & Compose(官方源)
apt update
apt -y install ca-certificates curl gnupg
install -m 0755 -d /etc/apt/keyrings
curl -fsSL <https://download.docker.com/linux/debian/gpg> | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
echo \\ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] <https://download.docker.com/linux/debian> \\ $(. /etc/os-release && echo $VERSION_CODENAME) stable" | \\ tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update && apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
把 NAS 共享挂到 LXC 主机(推荐 NFS)
apt -y install nfs-common
mkdir -p /mnt/nas/media /mnt/nas/config
echo "192.168.50.20:/export/media /mnt/nas/media nfs defaults,x-systemd.automount,noatime 0 0" >>/etc/fstab
echo "192.168.50.20:/export/config /mnt/nas/config nfs defaults,x-systemd.automount,noatime 0 0" >>/etc/fstab
systemctl daemon-reload && mount -a
路径映射原则:Docker 容器内的 /media、/config 等挂载,统一指向 LXC 主机上 的 /mnt/nas/... 真实目录,避免相对路径。
4. Docker 服务编排(关键示例)
所有 Compose 文件已放在 compose/ 目录,可直接 docker compose -f xxx up -d。
4.1 Emby(带硬件转码 + 走代理刮削)
详见 compose/docker-compose.emby.yml
(已两套示例)。
4.2 MoviePilot(含 115 STRM 助手/MediaWarp)
- 用于 自动订阅 PT、重命名、刮削、生成 STRM。
- 插件:
115网盘STRM助手
、MediaWarp
(优化 STRM 播放)。
4.3 Lucky(DDNS/内网穿透/反代等)
- 轻量网络工具,配合 VPS 与 WireGuard 使用更灵活。
4.4 Nginx Proxy Manager(如需放在内网侧)
- 大多数情况下,建议 NPM 放在 VPS,对外只暴露 VPS。内网 NPM 可选。
5. 115 网盘挂载 & STRM + 302 直连
5.1 115 挂载方案(择一)
- 方案A:rclone(改版,支持 115)→ 本地挂载(只读)
参考 extras/115_rclone_guide.md
,按步骤配置 rclone.conf
并挂载到 /mnt/115drive
。
- 方案B:115 WebDAV 中间层 → rclone/webdav 挂载
通过第三方 WebDAV 服务把 115 暴露为 WebDAV,再用 rclone/webdav 挂载。
注意:网盘接口策略可能变动,尽量只读挂载,避免大规模写入。
5.2 生成 STRM
- MoviePilot + 115 STRM 插件 一键生成,导出至
媒体库/STRM/
,Emby 指向该目录即可。
5.3 302 直连(不走家庭宽带)
思路:STRM 指向的是你的 OpenList/直链服务,Nginx 收到请求后根据规则 302 重定向 到 115 的临时下载地址(走 115 CDN)。
- 你可以在 VPS 上部署
openlist + go-emby2openlist
或类似中间件,获取 115 临时直链;
- NPM/Nginx 配置 302,将 Emby 的播放请求重定向到直链,家庭宽带零上行。
详见 templates/strm/README_strm_302.md,给出 Nginx 规则样例与中间件衔接方式。
6. iStoreOS 软路由(仅代理)
- 在 PVE 创建 VM,分配 两个网卡(外网/WAN 可复用物理口或 VLAN;内网/LAN 桥接 vmbr0)。
- 初始设置完成后,仅安装 代理客户端插件(如 sing-box/clash),出站指向 VPS 3X-UI 节点。
- 若仅用于 Emby 抓取,也可不用 iStoreOS,直接使用 容器侧透明代理(§4.1 方式B)。
7. Ubuntu 桌面 & SteamOS
- Ubuntu 桌面:正常安装即可,用于远程维护或桌面备份。
- SteamOS:给 独显直通(GPU + HDMI 音频功能),独立磁盘 更稳。
- 遇到黑屏:检查 IOMMU 分组;为宿主屏蔽显卡驱动;必要时把独显设为
Primary GPU
。
8. 全站 HTTPS 与重定向
- 对外统一用 VPS 的 NPM 颁发与续期证书(Let’s Encrypt)。
- 打开 Force SSL 与 HTTP → HTTPS 重定向。
- 内网自签或 ACME 也可行,但务必避免明文口令在公网传输。
9. 一键脚本与 Compose 清单
scripts/
:常用动作一键化(VPS 初始化、PVE 直通、LXC 创建、NFS 挂载等)。
compose/
:Emby/Lucky/MoviePilot/NPM 的示例 compose。
templates/
:STRM + 302 的思路与示例。
extras/115_rclone_guide.md
:115 挂载指引。
按顺序:先 VPS 初始化 → PVE 安装 → IOMMU/VFIO → WireGuard → 飞牛OS/NFS → LXC + Docker → Emby/MoviePilot/Lucky → NPM/HTTPS → 115/STRM/302。
10. 故障速查
- Emby 无法硬解:确认 LXC 已绑定
/dev/dri
;Emby Premiere 已启用硬件转码;核显驱动可用。
- 直通失败:检查 IOMMU 分组;核对
vfio-pci ids=
;避免把引导显卡直通。
- VPS 反代不到内网:先
wg show
确认隧道;NPM 指向 10.200.0.2;内网服务监听 0.0.0.0。
- STRM 播放慢:确认 302 是否直连到 115 CDN;Emby 走直链而非回源代理。
祝折腾愉快。每一个合理的约束,都是系统可靠性的朋友。