Self-Hosting 像 2025 年那样

近年来,self-hosting 作为收集数据、“老大哥”服务的流行替代方案而兴起。我必须承认,曾有一段时间,我几乎沉迷于尝试新软件、构建仪表盘和添加我并不真正需要的应用程序。现在我的设置已经基本保持不变一年多了,我想花点时间总结一下我学到的东西,并重点介绍一些我觉得特别有用的软件,但它们并没有像应有的那样普及(而且我也需要一个主题来写我的第一篇博客文章^^)。我并不想把任何东西都呈现为“最佳解决方案”。毕竟,问题各不相同,解决方案也各不相同。这不是任何所展示软件的广告。

容器运行时

现在,容器已经成为 hosting 的默认选择,传统的部署方法越来越少见。对于 homelab 爱好者来说,这是一个好消息,因为容器不仅简化了软件部署,而且比虚拟机提供更好的性能效率。虽然看起来几乎每个人都选择 Docker,但我很想探索其他的解决方案。值得注意的是,我专注于在家庭环境中使用这些运行时,而不是在企业环境中。

Docker

Docker 是最初的容器运行时,被广泛采用,是该领域的巨头。由于其广泛的文档,即使是不擅长 IT 的人,通常也可以从 GitHub 复制粘贴一个 docker-compose.yml 文件来入门。当然,安全方面的考虑是另外一个话题。

Podman

Podman 是一种新兴的容器运行时,因其 rootless 架构和 Docker CLI 兼容性而备受关注。对于那些优先考虑安全性并希望避免运行守护进程(或者为了工作学习这些主题)的人来说,这是一个很有吸引力的选择。Podman 允许用户使用类似的命令来管理容器,甚至提供别名,因此你仍然可以使用 docker 命令,从而使从原生 Docker 的过渡相对平滑。随着社区支持和文档的不断增长,它正变得越来越容易访问,即使一开始可能会令人沮丧。此外,还有 Podman Quadlets,允许你使用 systemd 而不是 docker compose 以声明方式管理容器。

Kubernetes

Kubernetes

对于喜欢摆弄的 self-hosting 爱好者来说,Kubernetes 似乎有点过头了,但对于那些希望将企业级功能引入其家庭实验室的人来说,它是一个用于管理容器化应用程序的迷人工具,可以优雅地管理整个实例集群。Kubernetes 通常因协调复杂的可扩展部署而备受赞誉,对于在家中使用 Kubernetes 的主要吸引力是学习,Kubernetes 很复杂,并且大多数功能对于大多数用户来说是不需要的。

通过 Web 界面管理你的容器

有些用户可能更喜欢在硬盘上放一堆 compose 文件,但是对于那些不想每次容器崩溃时都 SSH 到服务器并需要检查日志的人来说,有一些基于 Web 的工具可以使这项任务更加舒适。

Portainer

Portainer

我使用 Portainer 已经很长时间了,它在 homelab 和专业环境中的广泛采用使其成为通过实际应用学习的绝佳工具。在我看来,它是目前最稳定的 Web 管理容器控制界面。它可以与 Docker、Kubernetes 甚至 Podman 无缝集成。Portainer 提供了一个开源社区版和一个具有附加功能的企业版,你可以在其中免费获得三个许可证。

Dockge

Dockge Dashboard

Dockge 相对较新,由 Uptime Kuma 背后的开发人员创建,Uptime Kuma 是一个非常棒的工具。虽然它还没有达到 Portainer 的成熟度,但 Dockge 在其简洁性方面确实表现出色。它也经常更新,并且开发人员会及时处理 GitHub 上的问题。

反向代理和 VPN

要从任何地方访问你 self-hosting 的应用程序,主要有两种选择。将其暴露于 Internet 或通过 VPN 访问。虽然 VPN 更安全,但将服务暴露于 Internet 肯定很方便,至少只要你知道自己在做什么。

Pangolin

Pangolin Dashboard

这是一个新鲜且创新的解决方案,它将 VPN 和反向代理无缝地结合到一个易于部署的包中。这就像拥有 self-hosting 版本的 Cloudflare。你只需要一个 VPS 或类似的设置来托管 ingress 服务器,并且你可以将 VPN 客户端添加到运行你的应用程序的任何环境中。它甚至包括 Crowdsec 集成和基本的 SSO 功能。事实上,写这篇文章的动机是我对讨论这个软件的热情。我认为它确实令人印象深刻,并且假以时日,它很可能会成为取代现有解决方案的新标准。

Nginx Proxy Manager

NPM Dashboard

我注意到很多人都在使用这个软件,但我并不是很喜欢它。它是 Nginx 的一个有点问题的frontend,旨在创建 TCP/UDP/HTTP(S) 代理。虽然它拥有广泛的功能,并提供了一个用户友好的 Web 界面进行管理,但我发现一些功能(如密码保护)不可靠。我从未设法让它始终如一地运行良好。也就是说,它是我尝试的第一个同类软件,当它确实有效时,它的工作效果非常好。

Caddy

Caddyfile Syntax

如果你希望放弃花哨的 Web 界面,而更喜欢编辑一个简单的文件,同时让服务器通过 Let's Encrypt 管理从代理到 HTTPS 的一切,那么这就是你的选择。但是,由于没有 Web 界面,我不建议完全的初学者使用它。但是,如果你喜欢基于 UNIX 的简单工具,那么 Caddy 是一个绝佳的选择。

NetBird

NetBird Interface

如果你熟悉 Tailscale,你会发现自己很容易使用 NetBird。它充当 VPN 服务器,代表你处理 WireGuard 网络,从而大大降低了复杂性。你可以选择 self-hosting 或利用他们云上的慷慨的免费套餐。

Uptime Kuma

Uptime Kuma Interface

如果你正在寻找简单的监控,并且觉得设置完整的 Zabbix 或 Grafana 堆栈令人生畏,那么这个软件是真正的救星。只需一次部署,你就可以监控你的服务,并通过各种渠道接收通知,包括……

Gotify

Gotify UI

Gotify 是一种通知管理软件。你可以在手机上安装该应用程序并接收通知,这些通知可以通过简单的 Web 请求触发。它还与许多其他 self-hosting 软件(如 Uptime Kuma)集成。非常方便。

用于查找满足你需求的更多应用程序的其他有用资源

Awesome-Selfhosted

这是一个收集各种软件的大集合,但是它有点无组织,并且还列出了一些已经完全停止开发的应用程序。

Selfh.st

这是我最喜欢的资源。一个很棒的每周新闻通讯,提供非常小众的建议,以及一个大型的可排序的应用程序目录。很棒的网站!

awesome-docker-compose

这是随时可以运行的 compose 文件的集合。它们并不总是最好的选择,因为有时应用程序会在更新中包含破坏性更改,但它仍然是一个相当不错的集合。