写这篇的起因是周围有朋友陆陆续续问过类似的问题:想在家里或者私人设备上跑点服务,不知道从哪里入手,也搞不清楚要花多少钱、麻不麻烦。所以整理了一下自己的实践,算是入门引导——不讲操作步骤,更多是帮你想清楚「要搭什么」「为什么」「怎么选」。

核心出发点只有三个:便宜、可控、数据是你的。


为什么要自己搭

动机其实很朴素。

云服务现在确实方便,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 全部免费。


从哪里开始

如果从来没玩过,建议的顺序:

  1. 先装 Tailscale,把设备组进来
  2. 用旧设备或闲置机器试水,不用一开始就买新硬件
  3. 开个 SMB 共享,体验一下「自己的 NAS」是什么感觉
  4. 有兴趣再扩展 Jellyfin、Immich、本地大模型……
  5. 有了域名再考虑 Cloudflare Tunnel 和反代

不用一步到位,按需折腾。有问题欢迎交流。