
用于自托管的容器化网关: 安全且本地化的 DNS、动态反向代理以及 Proxmox 电源编排功能。
引言
保持自托管基础架构24×7全天候运行可能非常昂贵,尤其是当它大部分时间处于闲置状态,毫无目的地消耗电力时。这是看门狗的起点,看门狗是一个最小的、高能效的树莓派设置,充当本地网络的哨兵,仅在需要时才启动Proxmox等关键基础设施。
但它的功能远不止于此。
其目标并非让用户记住 IP 地址和端口号,或与局域网唤醒(Wake-on-LAN)数据包较劲,而是打造无缝的用户体验:接入局域网,通过人类可读的域名访问服务,其余工作由网关安全且透明地处理。
动机
核心想法源于一个简单需求:在不使用 Proxmox 时使其断电以节省能源,但在需要时能够可靠地按需唤醒,同时无需向每个用户暴露局域网唤醒的复杂细节。
树莓派 3B+ 具有超低功耗和可靠的 24×7 运行时间,非常适合作为持久节点。它将充当访问网关、DNS 解析器、反向代理,最重要的是,成为决定其他基础设施何时需要唤醒的“看门狗”。
架构概述
硬件:树莓派 3B+
容器化:Docker + Docker Compose
网络接口:通过 OpenResty(Nginx + Lua)实现条件性反向代理,通过 Pi-hole 实现 DNS 路由

图中箭头代表数据流量
关键组件和工作流程
1.使用 Pi-hole 进行 DNS 路由
Pi-hole 作为网络的本地 DNS 解析器。用户无需记住原始 IP 地址和端口号,只需访问 openwebui.com、photoprism.lan 等域名即可。它还能在整个网络范围内屏蔽广告和遥测数据,提升隐私性和性能。
2.使用 OpenResty 进行条件性反向代理
这里体现了智能之处。OpenResty(一款捆绑了 Lua 的高性能 Nginx 发行版)充当可编程反向代理。每当有对 Proxmox 托管服务的请求时:
网关会检查 Proxmox 节点是否在线。
如果节点离线,用户将被重定向到“守门人(Gatekeeper)”,这是一个基于 Streamlit 的应用程序,提供局域网唤醒控制功能。
请求会被保留,直到节点启动且服务可访问。
一旦就绪,请求将被透明转发。
这为终端用户抽象了启动过程,他们只需“点击即用”。
3.Proxmox 电源编排
Proxmox的API目前用于手动发出关机命令。在未来的迭代中,这将通过监控节点活动并在系统长时间处于空闲状态时启动关闭来实现自动化。局域网唤醒已经通过运行在树莓派上的Dockerized脚本进行了本机处理。
4.安全考虑
仅局域网访问:所有服务仅在内部网络中可访问。
无公开端口:无需端口转发或将 Proxmox 暴露到互联网。
角色分离:除了通过 API 或局域网唤醒进行电源编排外,“看门狗”从不直接接触 Proxmox 核心堆栈。
5.优势
节能:仅在实际需要时才启动 Proxmox。
安全至上:无服务公开暴露。所有流量均为内部或通过隧道传输。
用户友好:无需记忆 IP 地址,局域网唤醒由简单的 Web 应用程序处理。服务名称人类可读。
配置简单:一次性设置脚本。易于适配。
6.未来增强功能
基于闲置检测自动关闭 Proxmox。
集成 Grafana + Loki 以监控“看门狗”的运行时间和行为。
提供经过身份验证的服务发现和电源控制的 Web 仪表板。
探索该项目,将其适配到您的设置中,或在 github 中贡献您的力量。
https://github.com/ninja-con-gafas/watchdog
全部0条评论
快来发表一下你的评论吧 !