·约 9 分钟阅读·DeepSeek

2026 年我真正推荐的 best self-hosted apps(以及该跳过的)

我在 2026 年真正会推荐的自托管软件:每个用途只选一个——Vaultwarden、Gitea、Syncthing、Jellyfin 等等——每个都配一句「为什么」、一句体量备注、以及它替代了什么;再加上被过度吹捧的 self-hosting 工具,和一条挑选原则。

self-hostinghomelabdevops

每隔几个月,互联网就会冒出一份「200 个最佳自托管应用」清单,而每一份都是陷阱。 它们列的是能装的软件,不是能跑的软件,这个区别就是你再也拿不回来的一整个 周末。这篇是另一份清单:我在 2026 年真正会推荐的 best self-hosted apps,按用途 分组、每个用途只选一个——以及同样有用的那样东西:我劝你跳过的 self-hosting 项目。不写版本号,不放四十个容器的仪表盘截图,不吹。

先说两条免责声明,因为它们很重要。第一,这里每一条体量备注都是故意模糊的——「很小」 「几百 MB」——因为真实内存占用取决于你的实例:你的数据库、数据量、多少人登录、要不要转码。 任何人跟你保证你的homelab 精确消耗多少内存,都是在猜。第二,这些选择是厂商中立的: 这是我真正会跑的,不是谁给我钱的。

2026 年 best self-hosted apps:只用一条规则来筛

一个应用能不能长期占一个位置,我只有一条规则:我能备份它、升级它、并且用一句话解释它吗? 这三件事里有任何一件做不到,那这个应用就不配上我的机器,演示再好看也不行。

从这条规则里,自然会掉出三种偏好:

  • 一个服务只干一件事。 一个工具干六件事,意味着它挂掉会带走六件事。我宁愿跑四个小进程, 也不跑一个大平台。
  • 存储要无聊。 磁盘上的 SQLite 或纯文件,胜过我要去运维的数据库集群。数据必须不依赖这个 应用本身也能读。
  • 单个二进制,或很小的依赖树。 如果装它意味着我要维护一条构建流水线,那我已经输了。

这不是性格问题,而是「你维护 homelab」和「homelab 维护你」之间的区别。

self-hosted software 2026:每个用途只选一个

每一项都是一个工具、一句为什么、一句粗略的体量、以及它替代了什么。体量随实例大小变化—— 就当它是个数量级。

密码与密钥管理:Vaultwarden

  • 为什么: 一个轻量、兼容 Bitwarden 的密码库,意味着我的浏览器插件和手机说同一套标准协议, 而数据留在我自己的磁盘上。机器密钥则配 age/SOPS 存进 Git,而不是明文 .env。
  • 体量: 很小——一个不大的进程,加上备份。
  • 替代: 1Password、LastPass、官方托管版 Bitwarden。
  • 代价: 备份本身就是产品。没验证过恢复的密码库备份,是你亲手给自己建的锁死陷阱。

文件同步:Syncthing

  • 为什么: 点对点同步,没有中心服务器、没有账号、没有厂商——私有 overlay 上的设备之间 直接保持一致。
  • 体量: 每个节点几百 MB。
  • 替代: Dropbox、Google Drive、iCloud Drive(只替代同步那一半)。
  • 代价: 冲突文件。两台设备离线各改一份,你得像个成年人一样去解决它。

Git:Gitea

  • 为什么: 一个跑在我的信任边界内部的代码托管——仓库、issue、webhook、CI 触发——在我 自己的机器上,想省事就用 SQLite,免去数据库手术。
  • 体量: 几百 MB。
  • 替代: GitHub、托管版 GitLab、Bitbucket。
  • 代价: 自托管 CI 是另一份工作。触发一个 webhook 很容易;自己变成一个构建农场不容易。

笔记:Memos

  • 为什么: 快、单二进制、类 Markdown 的速记——它对标的是你手机自带的备忘录,而不是 wiki。
  • 体量: 很小到几百 MB。
  • 替代: Apple 备忘录、Google Keep、Notion 里「随手记」的那一半。
  • 代价: 它是速记,不是知识库。如果你需要双向链接和长篇的图式思考,那是另一个用途、另一个工具。

媒体:Jellyfin

  • 为什么: 完全开源、不捆绑付费档的媒体服务器,媒体库和元数据都归我。
  • 体量: 服务器几百 MB;真正的开销在转码时的 CPU/GPU,以及媒体库占的磁盘。
  • 替代: Plex 订阅、带广告的电视盒子、一整架抓轨的光盘。
  • 代价: 瓶颈是转码,不是应用本身。直接播放很便宜;实时转码才是硬件被吃光的地方。

统计:GoAccess

  • 为什么: 它读我的 Web 服务器本来就在写的访问日志,生成报表——没有 JavaScript、没有 cookie 弹窗、读者的浏览器里什么也不跑。
  • 体量: 几 MB。
  • 替代: Google Analytics、Matomo、你从来就不想要的那个追踪脚本。
  • 代价: 它看不到点击、滚动深度、漏斗。它只回答「谁把陌生人带了进来」,仅此而已。

仪表盘:Homepage

  • 为什么: 给我所有服务做一个静态起始页,带实时状态磁贴——它替代了我的浏览器书签夹, 是我打开的第一个页面。
  • 体量: 极小——几 MB。
  • 替代: 书签栏、存着一堆 URL 的表格、一页链接 wiki。
  • 代价: 仪表盘是地图,不是监控。当你真的需要指标时,是有意去加一个指标存储——而不是因为 仪表盘看着空就加。

备份:restic

  • 为什么: 加密、去重、带版本的快照,写到我自己不运营的存储上——就是它让自托管成为一场 值得下的赌注。
  • 体量: 客户端极小;重点是存储。
  • 替代: 没有历史记录的 rsync 脚本、「云上有我的东西」、以及祈祷。
  • 代价: 只有恢复过才算备份。两份都要排进计划。

邮件:Stalwart

  • 为什么: 一个现代的一体化邮件服务器——SMTP、IMAP、JMAP——一个你能真正跑起来的服务, 让你把自己想留的邮箱放在自己的磁盘上。
  • 体量: 几百 MB,而且只会涨。
  • 替代: Google Workspace / Fastmail(只替代邮箱那一半)。
  • 代价: 邮箱可以自托管;发信信誉不行。出站走中继。邮件是这份清单里最重的一项,也是我 第一个会砍掉的。

整份清单,一张表

用途选择一句话为什么替代谁
密码 / 密钥Vaultwarden兼容 Bitwarden 的密码库放在自己磁盘1Password、托管 Bitwarden
文件同步Syncthing点对点,无中心服务器Dropbox、Drive
GitGitea跑在信任边界内的代码托管GitHub、GitLab
笔记Memos单二进制速记Apple 备忘录、Keep
媒体Jellyfin拥有媒体库,无付费档Plex、电视盒子
统计GoAccess读你本来就有的日志Google Analytics
仪表盘Homepage给所有服务一个起始页书签夹
备份restic加密、去重、异地rsync 脚本、祈祷
邮件Stalwart拥有邮箱,不拥有信誉Google Workspace

过度吹捧、建议跳过:self-hosting 的坑

那些只会说好话的清单从不告诉你该避开什么。以下是我会跳过的,以及原因——它们都不是坏软件, 只是对 homelab 来说功能过度、范围过大。

  • 在家跑 Kubernetes / k3s。 除非你学它就是因为它是你的工作,否则这是给「一支舰队」用的 编排器,而你只有一台机器。你会把周末全花在控制平面上,永远碰不到真正的应用。几个 systemd 单元在凌晨三点读起来舒服得多。
  • 把 Nextcloud 当成万能大礼包。 Nextcloud 在你装它的那件事上很优秀,在它顺便塞进去的另外 十五件事上很平庸。如果你只需要文件同步,Syncthing 用一小部分的攻击面就做到了。等你真的 需要那套套件时再装平台——不是提前装。
  • 为一台机器上整套 Prometheus + Grafana + Loki。 这是可观测性 cosplay。一台服务器产生不了 足以支撑一条指标流水线的信号量。journalctl、systemctl status 加一个日志阅读器就够 homelab 用了。
  • 给五个服务上自建身份认证。 把 Authentik 或 Keycloak 摆到一切前面,当它是唯一的入口时, 那是锁死风险,不是安全收益。只有服务数量真的超过一个密码管理器能管的时候,再考虑集中化。
  • 你并不需要的自建对象存储(MinIO)。 homelab 很少产生 S3 形状的活儿。restic 写到你自己 不运营的存储上;你不需要为了备份去跑一个存储集群。
  • 把 Web 管理面板暴露到公网。 Portainer 这类东西很方便,但它们同时也是你控制平面的控制 平面。把它们绑到 loopback 或 overlay,永远别绑公网端口。

规律是:self-hosting 这个爱好,就是这样悄悄变成无偿打工的。

怎么选:你懂的服务越少越好,而不是越多越好

我知道的、最有用的一条 self-hosting 规则:优化你能运维的服务数量,而不是你能安装的数量。 十个你搞不懂的服务是负债;三个你能备份、恢复、调试的服务是资产。

在装任何东西之前,回答三个问题:

  1. 它到底替代了什么? 说不出它替代的东西,你就是在装一个 demo。
  2. 它的备份去哪,我恢复过吗? 答案里必须包含一份不在这台机器上的副本。
  3. 它今晚挂了会崩掉什么? 如果答案是「我用来自救的那些工具都进不去了」,那就别跑它。

一个小小的事后审计能让我保持诚实——而且它是唯一有意义的体量测量,因为它是你自己的:

# 这台机器上到底跑着什么,代价是多少?
systemctl list-units --type=service --state=running --no-pager
# 按 RSS 从大到小:你的数字,不是某篇博客的
ps -eo rss,comm --sort=-rss | head -n 15

还有备份路径,写清楚,因为「我有备份」不是计划:

# 加密、去重的快照,写到你自己不运营的存储上。
restic -r s3:s3.example.net/bucket backup /srv /etc /var/lib
restic -r s3:s3.example.net/bucket snapshots
# 唯一算数的测试:
restic -r s3:s3.example.net/bucket restore latest --target /tmp/restore-drill

把恢复演练跑起来。一个你从没恢复过的快照,只是一个愿望。

以上一切,都建立在一套你本来就信任的底座之上:唯一一个公网入口、服务只绑 loopback、以及一份 能离开这台机器的备份。那套形状写在2026 年我到底自托管了什么里, 而具体零件——nginx、systemd、不用容器——在不用 Docker 的自托管里。

best self-hosted apps 不是功能页最长的那批,而是你能用一句话说清、一个晚上备份好、不靠表格 就能恢复的那批。你懂的服务越少越好。这就是全部策略。少装一点,多运维一点。