硬核折腾指南:从零打造 PVE + LXC + WAF 企业级 HomeLab 系统

· 阅读约需9分钟

硬核折腾指南:从零打造 PVE + LXC + WAF 企业级 HomeLab 系统

前言

将家庭网络打造成一个集打印中心、智能家居、车辆追踪、密码管理于一体的“数字堡垒”,是每个硬核玩家的终极目标。本文完整复盘了在 Proxmox VE (PVE) 中,利用 LXC 容器与 Docker,从底层硬件直通开始,最终引入雷池 WAF 与 Lucky 反向代理,构建出兼顾极高安全性与现代化审美的企业级 HomeLab 全过程。

⚠️ 免责与脱敏声明:本文所有具体公网域名、内网 IP、端口号及安全凭证均已替换为通用示例(如 192.168.1.10 和 yourdomain.com)。请在实际操作时替换为您自己的环境信息。

第一章:底层基石 —— LXC 直通与网络避坑

LXC 容器共享宿主机内核,资源占用极低,是家庭服务的绝佳载体,但必须解决硬件直通与复杂的家庭双路由环境。

1. USB 设备全局挂载

为了让容器内的 CUPS 能驱动打印机,在 PVE 宿主机的容器配置文件(/etc/pve/lxc/105.conf)中添加:

lxc.cgroup2.devices.allow: c 189:* rwm
lxc.mount.entry: /dev/bus/usb dev/bus/usb none bind,optional,create=dir

2. 双路由下的 Docker 网络断联

在 主路由 + 旁路由 架构下,LXC 容器极易因 ICMP 重定向导致外网不通。在 PVE 界面中,应将容器的网关直接静态指向主路由(如 192.168.1.1),或在旁路由中为 Docker 的虚拟网段(172.17.0.0/16)配置 NAT 转发规则。

第二章:应用矩阵 —— 打造家庭数字中心

使用 Portainer 统一管理 13 个容器,部署以下核心服务:

  • Homepage:统一导航门户,使用 YAML 配置所有入口。
  • CUPS Web:现代化打印前端,结合 LXC 直通实现手机/电脑无缝打印。
  • Traccar:GPS 追踪平台,配合手机端 App 实时上传位置。
  • Vaultwarden:轻量级密码库,实现数据主权完全私有化。
  • AdGuard Home:全屋广告拦截 DNS 网关。

第三章:安全防线 —— 雷池 WAF 与 Lucky 的完美配合

将公网流量收归 WAF 清洗,是防止恶意扫描与 CC 攻击的终极手段。核心架构:外网 -> 雷池 WAF -> Lucky 反代 -> 内网服务。

1. 端口解耦

  • 雷池 WAF:监听 44300 端口(业务入口)与 44301 端口(管理后台)。
  • Lucky 反代:内网监听 44300(或通过 Docker 映射至其他端口),负责泛解析与分发。

2. 解决死循环重定向 (ERR_TOO_MANY_REDIRECTS)

若 WAF 与 Lucky 都在强制 HTTPS,会导致无限重定向。正确做法:在雷池中配置上游服务器时,必须使用 http:// 协议(如 http://192.168.1.10:44300),由外层 WAF 负责 HTTPS 解密。

3. BOT 防护与白名单

雷池的“人机验证”功能极易拦截手机 App 和 API 请求。解决方案:在 WAF 的 BOT 防护中配置精准放行规则:

# 满足条件时跳过认证
# 条件组1:URL 路径 前缀匹配 /printers
# 条件组2:源 IP 属于网段 192.168.1.0/24

第四章:自动化运维 —— 跨机证书同步与备份

1. 跨机自动续签证书

当 Lucky 与 WAF 分属不同机器时,可通过 SSH 免密与脚本实现证书自动覆盖:

#!/bin/bash
# 1. 打通 SSH 免密
ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
ssh-copy-id root@192.168.1.20  # WAF 机器 IP

# 2. 同步脚本 (将证书直接通过管道写入 WAF 容器)
CRT_FILE=$(find "/opt/lucky/certs" -name "*.pem" | head -n 1)
KEY_FILE=$(find "/opt/lucky/certs" -name "*.key" | head -n 1)
ssh root@192.168.1.20 "cat > /tmp/new_cert.pem" < "$CRT_FILE"
ssh root@192.168.1.20 "docker exec -i safeline-tengine sh -c 'cat > /data/safeline/resources/nginx/certs/cert_1.crt' < /tmp/new_cert.pem"

注:也可以使用 Python 调用雷池 OpenAPI 实现更稳定的更新。将脚本填入 Lucky 的“证书变化后触发脚本”即可实现全自动闭环。

2. LXC 不支持快照时的备份方案

由于直通了 USB,PVE 无法为 LXC 创建快照。直接使用 vzdump 命令进行完整备份:

vzdump 105 --dumpdir /root/backup/

第五章:UI 美化与极客细节

使用 Homepage 的 custom.css 和 custom.js 注入极致 UI:

  • 毛玻璃卡片:backdrop-filter: blur(12px) 配合半透明背景。
  • 隐形搜索框:隐藏 input 的 placeholder,只保留边框线。
  • 魔法文字替换:使用 JS 定时器监听 DOM,强行将系统资源栏的 Free 替换为 RAM 和 ROM,满足极客强迫症。

💎 结语

这套基于 PVE LXC 构建的 HomeLab,不仅实现了全栈服务的轻量化部署,更通过 WAF 实现了企业级的边界防御。折腾的乐趣在于过程,但工具最终的意义是服务于生活。当你看着面板上全绿的运行状态,以及 WAF 日志里被成功拦截的恶意请求时,这一切的熬夜与踩坑,都值了。