抽屉里那台旧笔记本,屏幕轴有点松,电池撑不过一小时,挂到二手平台大概只能换回两三百块。但拆开看,里面是一颗还能跑的 CPU、一块几百 GB 的硬盘、一张常年通电也不费多少电的网卡。这些零件凑在一起,恰好是一台家用存储服务器需要的全部。长期插电当服务器用的话,这块电池最好拆下来单独存放,老旧锂电一直满电反而容易鼓包,机器没了电池反而更稳当。
这两年"捡垃圾"玩家圈子里流行一个玩法:旧电脑不卖,重装一个轻量系统,塞进柜子,变成全家的照片库和文件柜。以前做这件事要折腾 TrueNAS 或者买成品 NAS,门槛对普通人不低。现在多了一个更轻的选择:直接装 RustFS。
三百块卖掉的是什么
先算账。三百块出手一台旧笔记本,换来的是一顿火锅;留下的麻烦是硬盘里的旧照片、旧文件得先导出来,还要担心隐私被人恢复。
留下来也不是零成本。有一个躲不掉的经常性支出要算进去:电费。旧电脑常年开机,按 0.6 元/度估算,一台 20W 的低功耗小主机一年大概一百元出头,普通旧笔记本 50W 上下一年接近 260 元,功耗更高的机器能到四五百元。这笔钱和"三百块卖掉"是同一量级,但它是分摊到每年的持有成本,换来的是数据留在自己手里。
不过留下来换来的东西很具体:全家的手机照片定时备份、几台电脑之间的文件同步、老电影和安装包的统一存放。网盘限速、会员、隐私条款,这些烦心事都不再和它有关。机器就在自己家,数据就在那块硬盘上。
注意,是"数据在自己家",不是"空间无限"。硬盘多大,仓库就多大,放不下就得加盘或者清理,这是物理规律,任何私有云方案都绕不开。
思路:给旧电脑装一个对象存储
RustFS 是一个用 Rust 编写的开源分布式对象存储系统,采用 Apache 2.0 许可证,可以在 Linux、Windows、macOS、FreeBSD 和容器中运行,支持 x86、ARM、RISC-V 等 CPU 架构。最后这半句对旧电脑玩家很关键:老平台的处理器基本都落在 x86 阵营里,只要还是 64 位的 x86-64 机器,十年前的也装得动(32 位系统不在支持范围内)。
选对象存储而不是普通的文件共享,看中的是访问协议。共享文件夹解决的是两台电脑互相拷贝,S3 解决的是多台设备对着同一个仓库自动读写。RustFS 提供 S3 兼容 API,这意味着手机、电脑上现成的 S3 客户端工具可以直接连上来用,不需要为它单独装什么定制软件。照片备份、文件同步、跨设备取文件,全是别人已经写好的工具在干活。
家用场景还有一个隐含前提:简单、稳定、坏了能重装。这正好落在 RustFS 最简单的部署模式上。下面按一台装了 Windows 的旧笔记本,把流程走一遍。
旧笔记本装 Windows 的路径
开工前检查三样:64 位 Windows 加 x86-64 处理器;TCP 端口 9000 和 9001 没被占用;建一个专用数据目录,比如 D:\rustfs\data。官方文档提醒数据目录要用有足够空间的空目录,服务器运行时不要动里面的文件。如果拿旧电脑里那块装过系统的盘来存数据,先把里面的旧照片、旧文件导出来,再把它清空当作数据盘,别在还有东西的时候直接拿去初始化,数据被覆盖后很难找回。
安装有两条路,按动手意愿挑。
第一条是图形化的 RustFS Launcher。到 GitHub 的 rustfs/launcher Releases 页面下载 Windows x86-64 安装程序,双击装完,在界面里填四个东西:数据路径 D:\rustfs\data、API 端口 9000、自己设定的 Access Key 和 Secret Key,再勾选启用 Console Endpoint 并把控制台端口设为 9001。点 Launch RustFS,浏览器打开 http://localhost:9001 登录,就算成了。全程不碰命令行。
第二条是独立二进制文件,适合喜欢脚本控制的人。从 GitHub 的 rustfs/rustfs Releases 页面下载文件名以 rustfs-windows-x86_64 开头的 ZIP 包,然后在 PowerShell 里建目录:
New-Item -ItemType Directory -Force -Path C:\rustfs\bin New-Item -ItemType Directory -Force -Path D:\rustfs\data解压:
Expand-Archive -Path "$HOME\Downloads\rustfs-windows-x86_64-<version>.zip" -DestinationPath C:\rustfs\bin -Force确认能跑:
Set-Location C:\rustfs\bin .\rustfs.exe --help为当前会话设置凭证并启动:
$env:RUSTFS_ACCESS_KEY = "<your-access-key>" $env:RUSTFS_SECRET_KEY = "<your-secret-key>" Set-Location C:\rustfs\bin .\rustfs.exe server ` --address "127.0.0.1:9000" ` --console-enable true ` --console-address "127.0.0.1:9001" ` "D:\rustfs\data"装了 Linux 的旧台式机更省事,官方一键脚本一条命令搞定:
curl -O https://rustfs.com/install_rustfs.sh && bash install_rustfs.sh脚本会把二进制装到 /usr/local/bin/rustfs,注册 systemd 服务并启动,开机自启,数据默认落在 /data/rustfs0。装完终端会输出一份摘要,把服务端口、控制台端口和数据目录列出来,同时警告你立刻改掉默认凭证。
两个使用习惯要养起来。一是 Launcher 管理的 RustFS 是桌面进程,不是 Windows 后台服务,关闭 Launcher 窗口只会把它收进系统托盘,真正停止要在托盘图标上右键选 Quit;改配置、断开数据盘、关闭 Windows 之前,先点 Stop RustFS。二是它会在数据目录旁边建一个 logs 目录,比如数据路径是 D:\rustfs\data,日志就放在 D:\rustfs\logs,排查问题先看那里。独立二进制那一路也一样,PowerShell 窗口就是它的生命线,运行期间别关,在里面按 Ctrl+C 才是正经的停止方式。
装完先换凭证、建桶
登录控制台 http://localhost:9001,在 Buckets 页面建一个桶,比如 family-photos。此时这台旧电脑在局域网里已经是一个 S3 存储,地址是它的内网 IP 加端口 9000。如果改过端口,控制台地址跟着改;仅当启用了 Console Endpoint,控制台页面才打得开。
一家人合用一个实例,最好每人一个桶:爸妈的相册进一个桶,孩子的视频进另一个桶,装机用的镜像和安装包再单独开一个。桶在控制台里点 Create Bucket 就能建,各自的名字起得清楚一点,以后接工具、写备份脚本都省事。
默认凭证不能留着。RUSTFS_ACCESS_KEY 和 RUSTFS_SECRET_KEY 不设置的话,服务器会回退到内置默认值 rustfsadmin,官方文档明确说这个值只能用于一次性本地测试。全家人要用的机器,凭证必须换成自己的强密码。
顺手说下速度这件事。家庭局域网里传文件,瓶颈通常在路由器和网线,不在 RustFS 这层软件;照片备份放在后台跑,晚上连着家里 Wi-Fi 慢慢传,白天谁也感觉不到这台旧电脑的存在。
手机照片和电脑文件怎么进出
S3 兼容的好处在这一步兑现:不装定制客户端,市面上的 S3 工具认准地址和密钥就能连。
电脑端,rclone 是最顺手的一个。它支持五十多种 S3 兼容提供商,自定义的选 “Other” 即可。跑 rclone config,按提示新建 remote,Storage 选 s3,provider 选 Other,然后填 access_key_id、secret_access_key 和 endpoint。第一次配置是问答式的,官方文档里关键几步长这样:
n) New remote name> remote Storage> s3 Choose your S3 provider. 8 / Any other S3 compatible provider \ "Other" provider> 8 env_auth> 1 # 即 "false",手动输入凭据 access_key_id> XXX secret_access_key> YYY region> ... endpoint> # S3 兼容提供商在此填写自定义 API endpoint location_constraint> ... acl> 1 server_side_encryption> 1 storage_class> 1XXX 和 YYY 的位置分别填 Access Key 和 Secret Key,endpoint 填 http://旧电脑内网IP:9000。配完之后,同步只要一条命令:
rclone sync --interactive /home/local/directory remote:bucket把本地目录换成自己的照片库路径,旧电脑就成了几台电脑之间同步文件的中枢。
喜欢图形界面的可以选 Cyberduck。它在 Preferences 里支持添加第三方 S3 连接配置,填上地址和密钥就能像资源管理器一样拖拽文件。有个细节要留意:RustFS 默认使用路径式寻址,新建连接时选 path style(路径风格)那一项,别用虚拟主机风格,否则地址解析会出错。
手机端,iOS 和 Android 上都有支持 S3 协议的照片备份工具,同样填三样东西:服务器地址、Access Key、Secret Key。相册定时往桶里传,全家的照片就汇到一块硬盘上了。长辈的手机尤其值得这么处理,子女在自己手机上也配好同一套凭证,长辈随手拍的东西就会同步到同一块硬盘上。
到这里,"全家私有云"的最小可用形态就搭完了。
单盘无冗余,丑话说在前面
家用部署几乎都是单节点单磁盘模式,官方文档把它叫 SNSD。定义写得很直白:一台服务器把所有数据存在一块数据盘里,这是最简单的部署模式。
代价同样直白:单块磁盘不提供冗余,磁盘故障会导致数据丢失,容错能力完全依赖备份。翻译成大白话,这块硬盘哪天罢工,桶里的东西就一起没了。
所以认真往里存照片之前,先定一个备份策略。最朴素的办法是再接一块移动硬盘,用 rclone 定期把桶同步过去;讲究一点的,换 SNMD 模式,也就是单机插多块盘,节点内最多可以容忍 M 块校验盘故障;官方建议数据盘挂成专用卷,示例里用的是 XFS 格式。无论哪种,"有第二份拷贝"这条红线不能破。把旧电脑当成家里珍贵照片的唯一存放地,是不合格的。
外网访问,是另一道题
在家里的 Wi-Fi 下,手机、电脑连旧电脑的局域网地址,一切都顺。人出了门,问题就来了:家庭宽带默认没有公网可达的地址。
这篇给的方案是家庭内网优先:在家时全家通畅,出门在外当作暂时够不着仓库。要在外面也能访问,常见做法是内网穿透或者自建组网,比如 WireGuard 这类工具,会在手机和家里网络之间建一条加密隧道,出门在外访问旧电脑,体验和在家里连 Wi-Fi 差别不大,互联网上的陌生人也摸不到这台机器。这一步做好才有外网访问,做不好就维持内网使用,不要图省事把端口直接映射到公网上裸奔。控制台和 API 暴露在公网,等于把家门钥匙挂在门把手上。
官方文档的建议也印证了谨慎的必要:除非其他计算机必须连接 RustFS,否则把 Host 保持为 127.0.0.1;要放开远程访问,先配好防火墙和强凭证。
这台旧电脑的余生
三百块出手,它是一件电子垃圾;留下折腾,它是一个全家共用的存储节点。RustFS 在这件事里的角色是让门槛塌下来:不用懂分布式系统,不用买成品 NAS,一个图形化 Launcher 或者几条 PowerShell 命令,旧硬件就能接上整个 S3 工具生态。
硬盘会老,机器会停,把备份这件事安排好,它就能安安稳稳地当很多年全家的照片后盾。下次清理房间的时候,先别急着挂闲鱼。