每隔几个月,互联网就会冒出一份「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 |
| Git | Gitea | 跑在信任边界内的代码托管 | 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 规则:优化你能运维的服务数量,而不是你能安装的数量。 十个你搞不懂的服务是负债;三个你能备份、恢复、调试的服务是资产。
在装任何东西之前,回答三个问题:
- 它到底替代了什么? 说不出它替代的东西,你就是在装一个 demo。
- 它的备份去哪,我恢复过吗? 答案里必须包含一份不在这台机器上的副本。
- 它今晚挂了会崩掉什么? 如果答案是「我用来自救的那些工具都进不去了」,那就别跑它。
一个小小的事后审计能让我保持诚实——而且它是唯一有意义的体量测量,因为它是你自己的:
# 这台机器上到底跑着什么,代价是多少?
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 不是功能页最长的那批,而是你能用一句话说清、一个晚上备份好、不靠表格 就能恢复的那批。你懂的服务越少越好。这就是全部策略。少装一点,多运维一点。