硬核折腾指南:从零打造 PVE + LXC + WAF 企业级 HomeLab 系统
硬核折腾指南:从零打造 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=dir2. 双路由下的 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 日志里被成功拦截的恶意请求时,这一切的熬夜与踩坑,都值了。