像 2025 年那样玩转 Self-Hosting
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⌗
对于喜欢摆弄的 self-hosting 爱好者来说,Kubernetes 似乎有点过头了,但对于那些希望将企业级功能引入其家庭实验室的人来说,它是一个用于管理容器化应用程序的迷人工具,可以优雅地管理整个实例集群。Kubernetes 通常因协调复杂的可扩展部署而备受赞誉,对于在家中使用 Kubernetes 的主要吸引力是学习,Kubernetes 很复杂,并且大多数功能对于大多数用户来说是不需要的。
通过 Web 界面管理你的容器⌗
有些用户可能更喜欢在硬盘上放一堆 compose 文件,但是对于那些不想每次容器崩溃时都 SSH 到服务器并需要检查日志的人来说,有一些基于 Web 的工具可以使这项任务更加舒适。
Portainer⌗
我使用 Portainer 已经很长时间了,它在 homelab 和专业环境中的广泛采用使其成为通过实际应用学习的绝佳工具。在我看来,它是目前最稳定的 Web 管理容器控制界面。它可以与 Docker、Kubernetes 甚至 Podman 无缝集成。Portainer 提供了一个开源社区版和一个具有附加功能的企业版,你可以在其中免费获得三个许可证。
Dockge⌗
Dockge 相对较新,由 Uptime Kuma 背后的开发人员创建,Uptime Kuma 是一个非常棒的工具。虽然它还没有达到 Portainer 的成熟度,但 Dockge 在其简洁性方面确实表现出色。它也经常更新,并且开发人员会及时处理 GitHub 上的问题。
反向代理和 VPN⌗
要从任何地方访问你 self-hosting 的应用程序,主要有两种选择。将其暴露于 Internet 或通过 VPN 访问。虽然 VPN 更安全,但将服务暴露于 Internet 肯定很方便,至少只要你知道自己在做什么。
Pangolin⌗
这是一个新鲜且创新的解决方案,它将 VPN 和反向代理无缝地结合到一个易于部署的包中。这就像拥有 self-hosting 版本的 Cloudflare。你只需要一个 VPS 或类似的设置来托管 ingress 服务器,并且你可以将 VPN 客户端添加到运行你的应用程序的任何环境中。它甚至包括 Crowdsec 集成和基本的 SSO 功能。事实上,写这篇文章的动机是我对讨论这个软件的热情。我认为它确实令人印象深刻,并且假以时日,它很可能会成为取代现有解决方案的新标准。
Nginx Proxy Manager⌗
我注意到很多人都在使用这个软件,但我并不是很喜欢它。它是 Nginx 的一个有点问题的frontend,旨在创建 TCP/UDP/HTTP(S) 代理。虽然它拥有广泛的功能,并提供了一个用户友好的 Web 界面进行管理,但我发现一些功能(如密码保护)不可靠。我从未设法让它始终如一地运行良好。也就是说,它是我尝试的第一个同类软件,当它确实有效时,它的工作效果非常好。
Caddy⌗
如果你希望放弃花哨的 Web 界面,而更喜欢编辑一个简单的文件,同时让服务器通过 Let's Encrypt 管理从代理到 HTTPS 的一切,那么这就是你的选择。但是,由于没有 Web 界面,我不建议完全的初学者使用它。但是,如果你喜欢基于 UNIX 的简单工具,那么 Caddy 是一个绝佳的选择。
NetBird⌗
如果你熟悉 Tailscale,你会发现自己很容易使用 NetBird。它充当 VPN 服务器,代表你处理 WireGuard 网络,从而大大降低了复杂性。你可以选择 self-hosting 或利用他们云上的慷慨的免费套餐。
Uptime Kuma⌗
如果你正在寻找简单的监控,并且觉得设置完整的 Zabbix 或 Grafana 堆栈令人生畏,那么这个软件是真正的救星。只需一次部署,你就可以监控你的服务,并通过各种渠道接收通知,包括……
Gotify⌗
Gotify 是一种通知管理软件。你可以在手机上安装该应用程序并接收通知,这些通知可以通过简单的 Web 请求触发。它还与许多其他 self-hosting 软件(如 Uptime Kuma)集成。非常方便。
用于查找满足你需求的更多应用程序的其他有用资源⌗
Awesome-Selfhosted⌗
这是一个收集各种软件的大集合,但是它有点无组织,并且还列出了一些已经完全停止开发的应用程序。
Selfh.st⌗
这是我最喜欢的资源。一个很棒的每周新闻通讯,提供非常小众的建议,以及一个大型的可排序的应用程序目录。很棒的网站!
awesome-docker-compose⌗
这是随时可以运行的 compose 文件的集合。它们并不总是最好的选择,因为有时应用程序会在更新中包含破坏性更改,但它仍然是一个相当不错的集合。