收起左侧

All-in-One 家庭数据中心(PVE)完整实战手册

2
回复
476
查看
[ 复制链接 ]

5

主题

16

回帖

0

牛值

江湖小虾

这是我写的第二篇关于VPS搭建Emby影视库的文章,这次我加了PVE作为底层,并简化了安装步骤,大多数以代码做架构,虽然看起来很烦,但是绝对新手向,因为我每个代码都做了解释,有喜欢的可以看看,还是那句老话,这是我自己研究的,所以很多东西我解释不了,如果是求助的话我可能无能为力,所以看看就好!附件是我的README跟所有脚本,喜欢的可以下载,不要钱tongue

upload 附件:all_in_one_pve_guide.zip

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 反代面板)。
  • 建议创建 TrojanVLESS-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 内网 EmbyWireGuard 地址(见 §2.3)。
  • 证书选择 Request a new certificate (Let’s Encrypt),勾选 Force SSLHTTP 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

  1. 用 Rufus/Ventoy 写入 PVE ISO,U 盘启动。
  2. 安装向导:设置 root 密码与主机名、管理 IP(LAN 内网)。
  3. 安装后访问 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)

  • 新建 VM(BIOS/Legacy 更稳,UEFI 也可)。
  • 磁盘直通
    # 确认磁盘ID:ls -l /dev/disk/by-id/
    # 绑定到VM(示例VMID=200):qm set 200 -sata1 /dev/disk/by-id/ata-ST4000DM004_XXXX
    
  • 网络用 vmbr0 桥接至 LAN。
  • 在飞牛OS里开启 NFS(推荐)或 SMB 共享,导出媒体目录与配置目录。

避坑:直通给 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(带硬件转码 + 走代理刮削)

  • 核显直通(/dev/dri):在 PVE宿主机 上确认存在 /dev/dri;给 LXC 开权限:
    # 宿主机:在 /etc/pve/lxc/100.conf 追加lxc.cgroup2.devices.allow: c 226:* rwm
    lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
    
  • 方式A(简单):给 Emby 设置环境变量 HTTP(S)_PROXY 用于元数据抓取;
    方式B(稳妥):用 sing-box/xray 透明代理,Emby 共享其网络命名空间,所有出站都走 VPS 节点

详见 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 SSLHTTP → 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 走直链而非回源代理。

祝折腾愉快。每一个合理的约束,都是系统可靠性的朋友。

收藏
送赞 1
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

5

主题

86

回帖

0

牛值

初出茅庐

社区上线纪念勋章

你这个有点麻烦,我用一个LXC用compose,一个iStoreOS里面的lucky大吉可以反代,挂代理,一个fnOS三个就够了
我这设立的初衷是能有一个干净的节点,其他都是顺带的  详情 回复
4 天前

5

主题

16

回帖

0

牛值

江湖小虾

4 天前 楼主 显示全部楼层
屯屯鼠 发表于 2025-9-2 19:02
你这个有点麻烦,我用一个LXC用compose,一个iStoreOS里面的lucky大吉可以反代,挂代理,一个fnOS三个就够 ...

我这设立的初衷是能有一个干净的节点,其他都是顺带的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则