作为一名喜欢折腾家庭服务器的人,我对项目搞砸导致虚拟化节点宕机并不陌生。不过,我的很多家庭实验、数据归档和生产力需求,都依赖以Docker容器部署的自托管服务,失去它们会给日常任务带来很大麻烦。如果你想知道的话,以下是我在家庭服务器“升天”后会最先部署的应用清单。

Pi-hole

打开网易新闻 查看精彩图片

毕竟,它是我所有系统的DNS服务器。

我最初在本地服务器上部署Pi-hole,是为了它的广告拦截能力。在体验了它的DNS沉洞功能后,我确保所有设备都把DNS请求经由它路由。但直到我开始管理家庭实验室,才意识到Pi-hole还藏着其他很酷的功能。

一方面,它会记录本地设备发出的DNS请求,这很适合用来留意智能设备是否试图连接可疑服务器。在安全层面,Pi-hole的拦截列表也能有效限制访问藏有恶意软件的网站。但真正的主角是它创建本地DNS记录的能力,我用它配合Nginx Proxy Manager(稍后会提到)给我的FOSS应用栈分配自定义域名。

但如果我的Pi-hole实例出故障,我会非常难受。即使先不谈我也无法使用本地域名这一点,如果这个中央Pi-hole容器不再运行,我的大部分设备都会失去互联网访问,这就是为什么我会在其他任何自托管服务之前尝试恢复它。

Nginx Proxy Manager

我的网络栈中另一个不可或缺的部分。

如果你非要这么说,叫我新手也行,但对于本地代理主机,相比命令行版本,我更喜欢Nginx Proxy Manager整洁的网页界面。由于我这个没钱的人还没买专用域名,Pi-hole充当本地DNS解析器,把自定义域名翻译成我的Nginx Proxy Manager的IP地址。

NPM则负责把流量转发到正确的FOSS服务的IP地址和端口号。由于我没有记住Docker服务器上运行服务的端口号(也不打算去记),我更愿意在重新部署任何其他应用之前先把NPM恢复上线。

Dockhand

我需要这个整洁的网页界面来做Docker实验。

Portainer曾是我控制Docker环境的主要界面,但随着时间推移,我开始厌倦它复杂的UI和付费功能。在尝试了不同的替代品后,我最终转向了Dockhand,它把我之前在Portainer上使用的几乎所有工具都打包进了一个整洁的网页界面。不过,它还有几个独特功能,使其成为我工具箱中最重要的容器之一。

除了常见的网络、镜像和容器管理选项,Dockhand还兼容Compose和环境文件,并且可以跨多个节点部署服务。它的通知渠道很适合在容器栈出问题时快速发出警报,而这个强大的Docker控制中心甚至可以自动化容器更新流程。

再加上我会用Dockhand来重新部署我的大部分FOSS工具,你就能明白为什么一旦家庭服务器宕机,我会想尽快恢复它。

Nextcloud

当然,还有它的各种应用。

说实话,我第一次接触Nextcloud时并不太感兴趣。毕竟,它看起来只是一个自托管文件分享平台,而小文件我可以用PairDrop,需要传输超过10GB的文件时还有NAS提供的网络共享,所以我不太在意它。因此,直到我看到它应用商店里数量庞大的FOSS应用模板和集成,我才意识到这个平台的真正用途。

如今,我依赖Nextcloud Office + Collabora Office组合来处理电子表格、演示幻灯片和文本文档(包括这篇文章),仅这一点就让它成为我日常任务中不可或缺的Docker容器。但我也开始使用它的Calendar、Tasks和Deck,尤其是因为我最近才意识到,我可以用CalDAV事件来控制我的Home Assistant设备。

但这些并不是出问题时我会重新部署的唯一工具。

除了目前提到的Docker容器,我还会忙着尝试启动其他虚拟机和服 务。严格来说,我把Home Assistant配置为虚拟机而不是Docker环境,但我认为它和我的网络栈同样重要。然后,我会继续恢复我的数据归档服务,包括Jellyfin、Immich、Paperless-ngx和RomM。

至于它们的媒体文件,我把所有内容都存储在NAS上,并配置了SMB共享,让每个应用都能访问我的归档。如果你想知道的话,是的,我也为NAS万一挂掉做了准备。你看,我配置了一条3-2-1备份流水线,把我重要的媒体文件和容器快照存储在一台距离我折腾洞穴数千英里之外的第二台NAS上。这样,即使一次实验(或者只是运气不好)弄坏了我家庭实验室里的每个节点,我也总能恢复我的自托管工具库。