2025 年的自托管(Self-Hosting)
原文:Self Hosting Like Its 2025(kiranet.org)· 中文翻译
原文链接:kiranet.org/posts/self-…
在近几年,自托管(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 文件合集。它们不一定总是最佳选择,因为有些应用在更新时会引入破坏性变更,但总的来说,它依然是一个相当不错的合集。