2025 年的自托管(Self-Hosting)
原文:Self Hosting Like Its 2025 (kiranet.org)· 中文翻译
在近几年,自托管(Self-Hosting)已经兴起,成为替代"老大哥"式数据收集服务的热门选择。坦白说,有一段时间我几乎沉迷于尝试新软件、搭建各种仪表盘、安装一堆我其实并不需要的应用。如今我的这套环境已经基本保持不变地稳定运行了一年多,我想借此机会总结一下自己学到的东西,并介绍一些我个人觉得特别有用、但还没有被广泛知晓的软件。(而且这也正好给了我一个写第一篇博客文章的话题,哈哈 ^^)。我并不是想把任何东西包装成"最佳方案"------毕竟问题各不相同,解决方案也各有千秋。这篇文章也不为任何软件打广告。
容器运行时(Container Runtimes)
如今,容器已经成为了托管的默认选择,传统部署方式越来越少见。这对 Homelab 爱好者来说是个好消息,因为容器不仅能简化软件部署,而且在性能效率上也优于虚拟机。虽然 Docker 似乎是几乎所有人心中的首选,但我很乐意探索其他替代方案。需要说明的是,我关注的是这些运行时在家用环境中的使用,而不是企业级场景。
Docker
作为最早被广泛采用的容器运行时,Docker 在其领域是一个巨头。得益于它详尽的文档,即使是 IT 技能不太高的人,通常也能从 GitHub 上复制粘贴一份 docker-compose.yml 文件轻松上手。当然,安全方面的考量则是另一个话题。
Podman
Podman 是一个新兴的容器运行时,凭借其无根(rootless)架构和对 Docker CLI 的兼容性逐渐受到关注。对于重视安全、又不想运行守护进程(或者想为工作学习这些知识)的人来说,它是一个很有吸引力的选择。Podman 允许用户用几乎相同的命令管理容器,甚至提供别名让你可以继续使用 docker 命令,从原生 Docker 迁移的过程相当平滑。随着社区支持和文档的不断增长,它变得越来越易用------尽管一开始可能会有点令人抓狂。此外,还有 Podman Quadlets,可以让你通过 systemd 以声明式方式管理容器,用来替代 docker compose。
Kubernetes
对于喜欢折腾的自托管爱好者来说,Kubernetes 可能有些大材小用,但它确实是一个迷人的工具,能以一种"管理一整群实例"的优雅方式来管理你的容器化应用。Kubernetes 常常因能编排复杂、可扩展的部署而备受赞誉,对于那些想把企业级能力带进家庭实验室的人来说,它是一个很有成就感的挑战。不过,在家里使用 Kubernetes 的主要价值在于学习本身------它很复杂,而且它的大多数功能对多数用户来说都用不上。
通过 Web 界面管理容器
有些用户可能更喜欢在硬盘上堆放一堆 compose 文件;但如果你不想每次容器崩溃、需要查看日志时都 SSH 进服务器,那么也有不少基于 Web 的工具可以让这件事变得更舒适。
Portainer
我已经使用 Portainer 相当长一段时间了。它在 Homelab 和专业环境中的广泛采用,使它成为通过实践来学习的好工具。在我看来,它是最稳定的 Web 管理容器控制界面。它与 Docker、Kubernetes 甚至 Podman 都能无缝集成。Portainer 提供开源社区版,以及带有更多功能的企业版------企业版可以免费获得三个许可证。
Dockge
Dockge 相对较新,出自 Uptime Kuma(一个非常棒的工具)的开发者之手。虽然它还没有达到 Portainer 那样的成熟度,但 Dockge 在简洁性上确实非常出色。它更新也很勤快,开发者在 GitHub 上处理问题相当及时。
反向代理与 VPN
想随时随地访问你的自托管应用,主要有两种方式:把它们暴露到公网上,或者通过 VPN 访问。VPN 更安全,而把服务暴露到公网当然更方便------前提是你清楚自己在做什么。
Pangolin
这是一个新颖的解决方案,它把 VPN 和反向代理无缝地整合进一个易于部署的软件包中。它就像是自托管的 Cloudflare。你只需要一台 VPS 或类似的环境来托管入口服务器(ingress server),就可以在任何运行着你应用的环境中安装 VPN 客户端。它还集成了 Crowdsec,并具备基础的 SSO(单点登录)能力。事实上,写这篇文章的动机正是源于我对这款软件的热情------我真的觉得它非常出色,假以时日,它很有可能成为替代现有方案的新标准。
Nginx Proxy Manager
我注意到很多人都在用这个软件,但我个人不太喜欢它。它是 Nginx 的一个略显毛病的 Web 前端,用于创建 TCP/UDP/HTTP(S) 代理。虽然它宣称功能丰富,还提供了用户友好的 Web 管理界面,但我发现它有些功能------比如密码保护------不太可靠。我始终没能让它持续稳定地运行。话说回来,它是我尝试过的第一个同类软件,而且当它正常工作时,它确实能很高效地完成任务。
Caddy
如果你想避开花哨的 Web 界面,更愿意编辑一个直白的配置文件,让服务器自己搞定从反向代理到 Let's Encrypt HTTPS 的一切事务,那么 Caddy 就是你的选择。不过,由于没有 Web 界面,我不太推荐完全没基础的新手直接用。但如果你欣赏 UNIX 式的简约工具链,Caddy 是一个非常出色的选择。
NetBird
如果你熟悉 Tailscale,那你用起 NetBird 来会非常顺手。它充当着一个替你打理 WireGuard 网络的 VPN 服务器,大大降低了复杂度。你可以选择自托管,也可以使用他们在云端提供的慷慨免费套餐。
Uptime Kuma
如果你只想要简单直接的监控,又觉得搭一整套 Zabbix 或 Grafana 太吓人,那这款软件简直是救星。只需要一次部署,你就能监控自己的服务,并通过各种各样的渠道接收通知,包括......
Gotify
Gotify 是一个通知管理软件。你可以在手机上安装它的应用,然后通过一个简单的 Web 请求就能触发通知。它还与很多其他自托管软件有集成,比如 Uptime Kuma。非常实用。
其他有用的资源:帮你找到更多应用
Awesome-Selfhosted
这是一个收集了各类软件的大合集,不过内容有点缺乏整理,而且里面也列出了一些已经完全停止开发的项目。
Selfh.st
这是所有资源里我最喜欢的一个。它是一份很棒的每周通讯,会推荐一些非常小众的软件,还有一个可排序的大型应用目录。非常好的网站!
awesome-docker-compose
这是一个"拿来即用"的 compose 文件合集。它们不一定总是最佳选择,因为有些应用在更新时会引入破坏性变更,但总的来说,它依然是一个相当不错的合集。