不依赖现成软件,一个人动手搭起属于自己的整套系统
不依赖现成软件,一个人动手搭起属于自己的整套系统
去年年底,我把用了三年的某网盘会员退了。不是它不能用,而是我算了一笔账:一年两百多,五年下来一千多,存的东西却始终躺在别人的机房里,哪天政策一变、服务一停,我要么搬家要么认栽。同一时间,手机相册的“存储空间不足”提示弹了第三次。
于是就动了念头:能不能自己搭一套。密码、照片、笔记、文件、影音、阅读、下载、备份,全都放在自己家里那台小机器上,想加什么功能就加什么功能,不用等厂商更新,也不用担心哪天被下架。
这件事听起来吓人,实际上一个人就能做完。我前后花了大约三个周末,中间踩了几个坑,现在这套系统跑了半年多,日常在用。下面就把过程原样写出来。
一、先想清楚:自己搭到底图什么
我见过的动机大致有这么几类,先对号入座比较好:
- 数据主权:照片、证件扫描件、工作文档不想长期放在别人的服务器上;
- 摆脱订阅:云盘、密码管理器、笔记软件一年年续费,功能却不怎么变;
- 功能自由度:想要一个能自动给票据分类、能全文搜索的文档库,现成产品里要么没有,要么在很贵的套餐里;
- 纯粹折腾:这一类占比不小,也完全正当。
但也有一个必须提前接受的事实:自建不等于省钱,第一年基本是亏的。硬件一次性投入、时间成本、后续维护,都要算进去。如果只是想找个地方存几百 G 照片,老实说买个成品 NAS 或者续费网盘更划算。
二、用哪台机器开始
我的起点是一台闲置的旧笔记本,i5 八代、8G 内存、一块 512G 固态,跑了一个月,确认这东西确实会用,才换成迷你主机。
| 方案 | 大致价格 | 适合谁 | 注意点 |
|---|---|---|---|
| 闲置旧电脑/笔记本 | 0 元 | 完全没接触过,想先试试 | 功耗偏高,笔记本电池老化要留意 |
| N100 迷你主机 | 1000~1600 元 | 大部分个人用户 | 单通道/双通道内存版本价格差不大,优先双通道 |
| 树莓派等 ARM 小板 | 400~800 元 | 跑轻量服务 | 内存有限,照片索引、转码这类任务吃力 |
| 成品 NAS | 2000 元起 | 希望开箱即用、家人也能操作 | 硬件溢价明显,但省心,售后有保障 |
我最后选的是一台 N100 迷你主机,16G 内存、双 M.2 插槽,加一块 4T 机械硬盘做数据盘。整机待机功耗在 10W 上下,按家用电价算,一年电费三十几块,可以忽略。
硬盘这块我建议一开始就想清楚:数据盘之外,必须还有第二份备份。我第一周只挂了一块盘,后来想到“这块盘挂了,我五年的照片全没”,当晚就补了一块移动硬盘做定期同步。备份比任何花哨功能都重要。
三、底座:系统、容器、入口
系统我装的是 Debian,无桌面环境,装完只有命令行。这一步劝退不少人,但其实真正需要敲的命令不超过二十条,剩下的都是配置文件。
关键的三块是:
1. Docker 和 Compose
所有服务都用容器跑,一个服务一个 docker-compose.yml。好处是升级、回滚、迁移都简单——换机器的时候,把目录打包拷过去,重新 up -d 就完事了。管理界面我用了 Dockge,图形化编辑 compose 文件,比纯命令行顺手。
2. 反向代理和证书
所有服务统一走 443 端口,用 Caddy 做反向代理,证书自动申请自动续期。这一步做完,内部服务的地址就变成 photos.你的域名.com 这种形式,手机、电脑访问都统一,不再记一堆端口号。
3. 怎么在外面访问
这一步是最容易出事的。我分了两种情况:
- 家里有公网 IP:做 DDNS,路由器上只映射 443 一个端口,其余全部关闭;
- 没有公网 IP(大多数宽带都是这种):用 Tailscale 组虚拟内网,手机装个客户端就能连,配置量极小。
我属于后者。Tailscale 免费额度对个人够用,代价是每台设备都要装客户端。也考虑过用 VPS 加 FRP 做穿透,灵活一些,但多一台机器要维护,暂时没上。
顺便说一句安全的事。公网暴露的机器,日志里每天能看到几百上千次来自各地的登录尝试,这不是针对你,是自动化扫描。所以:管理后台不要暴露在公网、密码管理器必须走 HTTPS、开个 fail2ban、能开两步验证的服务全开。这些做完,风险就降到很低的水平了。
四、装什么:我实际的软件清单
这部分是重点。下面这张表是我目前真正在跑的,不是“听说过”的清单:
| 需求 | 我用的方案 | 实际体验 |
|---|---|---|
| 密码管理 | Vaultwarden | 官方客户端直接连,手机浏览器自动填充正常 |
| 照片备份 | Immich | 手机后台自动上传,人脸和地点识别都能跑,索引时 CPU 会飙一阵 |
| 文件同步 | Syncthing | 点对点,不经过中转,适合两三台设备之间同步 |
| 笔记 | Memos + Obsidian | 随手记用网页版,长文写在本地 Markdown,靠 Git 同步 |
| 影音 | Jellyfin | 局域网直接播放,N100 硬解 4K 没压力 |
| 音乐 | Navidrome | 手机端有第三方客户端,通勤听够用 |
| 稍后读 | FreshRSS + Wallabag | RSS 订阅和网页剪藏分开,剪藏的内容能全文搜 |
| 文档归档 | Paperless-ngx | 扫描件自动 OCR,找发票比翻抽屉快 |
| 服务监控 | Uptime Kuma | 哪个容器挂了手机能收到通知,很实用 |
| 代码托管 | Gitea | 自己的配置文件和脚本都往里扔 |
| 容器管理 | Dockge | 图形化改 compose,比命令行快 |
| 备份 | Restic + 定时任务 | 加密增量备份到移动硬盘,每周一次 |
这套东西加起来,占用的内存不到 6G,N100 完全扛得住。
需要说明的是,这些开源项目大多由小团队或个人维护,更新节奏和稳定性不如商业产品。Immich 我升级过一次,遇到数据库结构变更,按官方文档迁移花了半小时。所以我的习惯是:升级前先看发布说明,重要服务升级前手动备份一次数据目录。
五、和现成方案比,到底差在哪
我不想把自建说得多完美。客观对比一下:
| 维度 | 自己搭 | 成品 NAS | 公有云/订阅服务 |
|---|---|---|---|
| 首年成本 | 2000~3000 元(含硬盘) | 3000 元以上 | 200~1000 元/年 |
| 长期成本 | 主要是电费和硬盘损耗 | 同左 | 年年续费,涨价风险 |
| 上手时间 | 几个周末 | 半天 | 几分钟 |
| 功能扩展 | 很自由 | 受套件商店限制 | 基本没有 |
| 出问题时 | 自己查日志 | 有客服和社区 | 平台负责 |
| 家人可用性 | 需要你维护 | 一般较好 | 最好 |
几个真实感受:
- 成品 NAS 的溢价主要买的是省心。群晖、威联通、绿联、极空间这些,开箱就能用,手机 App 也做得成熟,家里老人小孩能自己操作。如果你不打算长期折腾,买成品完全是理性选择,我身边不少朋友就是这么选的。
- 公有云盘不是不能用。日常同步、分享文件、跨设备传大文件,网盘的体验仍然是最好的那一档。我现在是两条腿走路:重要的、私密的东西放自己机器上,需要分享和协作的照样用网盘。
- 自建最大的隐形成本是时间。装的时候是乐趣,跑起来之后是责任——系统要更新,硬盘要检查,备份要验证。半年里我大概花了两三个晚上处理各种小问题,这个频次我觉得可以接受,但不是所有人都愿意。
六、几个踩过的坑,写出来省得你再踩
硬盘没有冗余。 一开始单盘跑,后来想想不对,补了外置备份。RAID 不是备份,备份要在另一块物理设备上,而且定期做恢复演练——没恢复过的备份等于没有备份。
一次性装太多。 我第一周就想把清单上的全装上,结果配置混乱、端口冲突、自己都记不清哪个服务对应哪个域名。后来的做法是:一次只加一个服务,稳定运行一周再加下一个。
低估了照片索引的耗时。 三万多张照片第一次导入,Immich 跑了整整一夜,期间 CPU 一直满负荷,机器风扇响。建议放在晚上做,别在白天急着用的时候搞。
忘了给容器设自动重启。 有次断电恢复后,一半服务没起来,我还以为是系统坏了。加上 restart: unless-stopped 之后就没再出现过。
配置没进版本库。 所有 compose 文件和关键配置,我后来都放进了 Gitea。这个习惯救过我一次——某次误删目录,从仓库拉回来十分钟恢复。
七、什么人适合,什么人不适合
直接给结论:
适合自己搭的情况: - 有一台闲置设备,愿意先花几个周末试水; - 对数据放在哪里比较在意,愿意承担维护责任; - 有明确的“现成产品满足不了”的需求; - 能接受偶尔出问题需要自己查。
建议直接买成品或继续用订阅的情况: - 只是想要个存照片的地方,没有扩展需求; - 家里多人都要用,且你不会长期维护; - 工作忙,没把握持续投入时间; - 需要正规发票、售后和稳定 SLA 的场景。
我自己的结论是:这套系统值。它没让我省下多少钱,但让我对自己数据的去向有了掌控感,顺带把闲置的机器利用了起来,还弄明白了一堆原本模糊的概念。如果你也在犹豫,最省事的验证方式是——找台旧电脑,先装个 Docker,跑一个服务,用一周。能坚持下来,再谈“整套系统”。