写这篇的起因是周围有朋友陆陆续续问过类似的问题:想在家里或者私人设备上跑点服务,不知道从哪里入手,也搞不清楚要花多少钱、麻不麻烦。所以整理了一下自己的实践,算是入门引导——不讲操作步骤,更多是帮你想清楚「要搭什么」「为什么」「怎么选」。
核心出发点只有三个:便宜、可控、数据是你的。
为什么要自己搭
动机其实很朴素。
云服务现在确实方便,iCloud、Google Photos、OneDrive 开箱即用,每个月收点小钱,大多数情况下够用了。但这里有个前提:你信任对方,而且愿意接受对方可以随时改规则、涨价、停服。国内网盘删库、限速、关停的新闻不是没有,国际服务也有账号被封、区域限制的问题。
自托管的核心价值是主动权在你:数据存在你的硬件上,随时可取,随时可迁移,功能自己决定要不要开。代价是维护责任也在你——硬件坏了、服务挂了,得自己处理。所以这条路比较适合对这件事本身有点兴趣的人;如果完全不想折腾,云服务是更合理的选择。
硬件
迷你主机 / Mac mini
市面上 N100 这类低功耗 x86 迷你主机,功耗在 10-15W 左右,7×24 小时全年电费大概在 100-200 元,算是家用服务器的性价比首选。价格从几百到一两千都有,性能跑绝大部分常见服务没有问题。如果本来就有 Mac mini 常驻家里,顺手兼做服务器也完全可以。
有一点要配置好:断电后自动启动。在 BIOS(找「AC Power Loss」相关选项)或 macOS 的节能设置里打开,不然停电来电之后需要手动开机,很烦。如果预算允许,搭一个家用 UPS 电源,应对短时停电更从容。
旧笔记本
旧笔记本自带电池,本身是一个丐版 UPS——停电了服务还能继续撑一段时间,这是很多人没想到的优势。缺点是功耗比迷你主机高,散热噪音可能也大一点,长期运行建议设置合盖不休眠,或者干脆不合盖。
Linux 在旧笔记本上往往状态更好。我自己一台 2019 年的 Magicbook 装了 ArchLinux,内存占用从 Windows 的 70%+ 降到 400MB 左右,拿来当小服务器跑得很顺畅。
VPS(可选)
如果你想对外提供服务,或者没有公网 IP,一台低配 VPS 可以做公网入口。便宜的配置(1 核 512M-1G)一个月几十块,量力而行,不是必须的。
另一个场景是存储型 VPS:有些云服务商有挂载大磁盘的低配机器,对计算要求不高但存储容量大,适合拿来做备份节点,比单独购买对象存储有时候灵活性更好,看具体需求选择。
基础设施:Tailscale
在讲具体服务之前,先说一个基础问题:怎么安全地从外网访问家里的服务。
Tailscale 是我目前的方案。它基于 WireGuard 协议,把密钥管理和 NAT 穿透都自动处理掉了,装上之后几分钟内就能把所有设备组进同一个虚拟局域网,从外网访问家里的服务就像在局域网里一样。免费计划对个人够用(100 台设备、3 个用户)。
Tailscale 本身不开源,但底层协议 WireGuard 是开源的,它也提供开放的 API。如果你在意这点,Headscale 是社区维护的开源控制服务器,可以替代 Tailscale 官方的控制面,但需要一台有公网 IP 的服务器自己跑,国内某些云服务商在协议层面也有一些限制,折腾成本相对高一些。
有了 Tailscale,所有后续服务的访问都走这条安全通道,不用把端口暴露到公网。
文件共享
SMB
听起来老旧,但兼容性好得出奇:Windows、macOS、Linux、Android、iOS,还有绝大多数影音播放器,基本都认这个协议。在家里的机器上挂一个 SMB 共享目录,当成最简单的「家用 NAS」,门槛极低,够用场景很多。
它更适合「共享存储中心」的模式,一台机器作为主存储,其他设备访问。不太适合多设备双向同步。
Syncthing
如果你的需求是多台设备之间保持某个目录同步(更像 OneDrive 的模式),可以用 Syncthing。完全开源,去中心化,文件在设备之间直接同步,不经过任何中间服务器。
值得一提的是它的文件版本控制:支持保留历史版本,有简单版本、回收站、阶梯式版本等几种策略,配置好之后误删文件可以找回来。这一点比一些商业产品做得不差。
我个人主要用它做内网多机同步,配合 Tailscale 的话跨网络同步也没问题。
影音:Jellyfin
本地视频文件用 SMB 直接播放其实就够——很多播放器(Infuse、VLC、nPlayer 等)都支持直接读 SMB 目录。
想要更「家庭影院」体验,可以搭 Jellyfin:开源的媒体服务器,自动刮削海报、字幕、演员信息,界面很漂亮,多端客户端齐全,基本是开箱即用的水平。
几个注意点:
- CJK 特效字幕(ASS 格式)渲染可能需要折腾字体配置,不是完全开箱即用
- 客户端设备性能够的话直接直播流不转码,省事也省资源;转码配置相对复杂一点
- 存储空间要提前规划,视频文件动辄几十 GB 起步
相册:Immich
Immich 是目前功能最接近 Google Photos / iCloud 相册的开源替代:自动备份手机照片、人脸识别、场景分类、地图视图、时间线,功能相当完整。
机器学习相关的功能(人脸识别等)对硬件有一定要求,低配机器初始索引需要比较长时间,跑起来也可能有点吃力。如果只是想备份照片,不需要这些 AI 功能,用 Syncthing 直接同步照片目录反而更轻量。
本地大模型
这块之前专门写过一篇:工欲善其事,必先利其器(二),不重复细节了,简单列几个选项:
- Ollama:安装简单,命令行管理模型,内置 HTTP API,配合 Open WebUI 可以有不错的界面;但性能上有一些已知问题,高并发或对推理效率要求较高的场景可能不够理想
- LM Studio:图形界面,更适合不熟悉命令行的场景
- vLLM:推理性能更好,更适合有 GPU 且有一定折腾意愿的场景
能跑什么规模的模型取决于内存/显存大小。M 系列 Mac 的统一内存可以当显存用,可以跑比独显更大的量化模型,但推理速度相对慢一些。
对外访问:Cloudflare Tunnel
如果你想把服务暴露到公网,同时不想直接暴露家庭宽带 IP,Cloudflare Tunnel 是个干净的方案:在你的机器上跑一个 cloudflared 客户端,它主动连接 Cloudflare,外部流量通过这条隧道转进来,不需要在路由器上开端口,也不依赖固定 IP。
要注意:稳定使用 Cloudflare Tunnel 需要一个托管在 Cloudflare 上的域名。有一个「Quick Tunnel」的临时模式不需要域名,会生成临时的 *.trycloudflare.com 地址,但每次重启都会变,只适合临时测试。
如果只是自己用,有 Tailscale 就够了,Cloudflare Tunnel 主要解决「让外人访问」或者「特定场景下不方便开 Tailscale」的需求。
顺带提反向代理:同时跑多个服务的话,Caddy 是比 nginx 配置简单很多的选择——自动申请和续签 HTTPS 证书,把多个服务挂在不同子域名下,几行配置搞定。
关于域名:不是必须的,但有了之后能玩的东西多很多,尤其是配合 Cloudflare 的各种能力(访问控制、CDN、DNS 管理)。
备份
自托管最容易被忽视、但最重要的一环。硬件故障的责任在自己,没有备份等于裸奔。
参考 3-2-1 原则:3 份数据,2 种不同介质,1 份异地。实操上:
- 本地备份:外接硬盘,或者另一台机器上跑 Syncthing 镜像
- 异地备份:这块我自己还在调研中。候选方案有:
- Cloudflare R2:有免费额度(10GB),出站流量不收费,适合不频繁访问的冷备份
- Backblaze B2:价格便宜,有成熟的备份工具支持
- 存储型 VPS:一些云服务商有大磁盘低配机器,适合既要存储容量又要一定灵活性的场景
- 配合 rclone 可以把本地数据定期推到以上任何一种后端
国内网盘基本不在考虑范围内,理由不展开了。
额外值得一提的
上面列的这些,按需部署就好,不需要一次全装。自托管的理念本来就是你控制复杂度,装你用得上的,不装你用不到的。以下几个我觉得投入产出比不错,顺带提一下:
Pi-hole / AdGuard Home:部署在家里的机器上,当作局域网的 DNS 服务器,DNS 级别拦截广告和追踪域名。整个家庭网络都受益,包括电视和手机 App 里的广告,不需要在每台设备上单独配置。资源占用极低,适合挂在全天开机的机器上常驻。
Vaultwarden:Bitwarden 兼容的自托管后端,和官方客户端完全兼容,内存占用极低。如果你想自己管密码又不愿意靠脑子记,比 KeePassXC 多了跨设备同步的便利,也适合和家人共用一套密码管理。
Uptime Kuma:轻量监控看板,监控各个服务的可用性,挂了就推送通知。界面好看,配置简单。
Nextcloud:如果你觉得 Syncthing 只做同步太轻量,Nextcloud 是更重量级的选择——文件同步、日历、联系人、文档协作全包,更接近一个私人版 Google Workspace。代价是部署和维护复杂度也更高,服务器资源消耗也更大,量力而行。
Home Assistant:智能家居自动化平台,支持接入几乎所有主流智能设备品牌,可以做跨品牌联动、自动化脚本、本地化控制(不依赖厂商云)。如果你家里有智能设备但不想数据全部走厂商服务器,这个方向值得了解。
关于部署方式:很多自托管服务都提供了 Docker 镜像,用 Docker Compose 写个配置文件跑起来很方便,也是社区里最常见的部署方式。当然也可以用包管理器直接装或者跑二进制,不是非 Docker 不可,看自己习惯。
最后顺带提一句维护:定期更新服务版本是最基本的安全习惯,部署完之后不要放着不管,尤其是对外暴露了端口的服务。
开销参考
如果手头已经有闲置设备,最低情况下额外开销几乎只有电费——一台低功耗主机(10-15W)全年大概 50-100 元。宽带费用严格来说不算 self-hosting 的成本,毕竟本来就要交。
| 项目 | 大致费用 |
|---|---|
| 旧设备复用 | 0 |
| 迷你主机(新购) | 500-1500 元 |
| 电费(低功耗主机全年) | 50-100 元 |
| 域名(可选) | 几十到百元出头/年 |
| 小 VPS(可选) | 30-100 元/月 |
| 异地备份存储(可选) | 免费额度内,或几美元/月 |
主要软件全部开源免费,Tailscale 个人用免费,Cloudflare Tunnel 免费,Jellyfin / Immich / Syncthing 全部免费。
从哪里开始
如果从来没玩过,建议的顺序:
- 先装 Tailscale,把设备组进来
- 用旧设备或闲置机器试水,不用一开始就买新硬件
- 开个 SMB 共享,体验一下「自己的 NAS」是什么感觉
- 有兴趣再扩展 Jellyfin、Immich、本地大模型……
- 有了域名再考虑 Cloudflare Tunnel 和反代
不用一步到位,按需折腾。有问题欢迎交流。