家庭数据管理方案

先上结果


目录


基本需求


评分

对以上需求生成一个评分标准和权重 (w),用于评估方案。分数越高越好。

数据持久性 (w=4)

  1. 每个文件 1 份副本
  2. 每个文件多份副本,在同一个物理地点
  3. 每个文件多份副本,不全在同一个物理地点,并能限制基本的人为误操作造成的数据损失

安全性 (w=4)

  1. 公网传输过程中缺少加密或双向认证,移动存储介质无加密
  2. 公网传输有双向认证和加密,用户名+密码认证
  3. 公网传输需要基于硬件的用户认证,本地存储介质加密

照片视频管理 (w=3)

  1. 没有针对照片视频管理的功能,纯文件存储
  2. 支持显示和基本的管理(例如编辑/相册)
  3. 有一定的智能管理功能(例如人脸/物体识别,地点搜索)

易用程度 (w=2)

  1. 需要专业知识,会使用 Linux 命令行等
  2. 经过简单学习可以掌握
  3. 符合一般用户使用习惯,不需要学习即可使用

访问灵活程度 (w=2)

  1. 只能使用电脑 + 配置过的环境/软件,手机访问不方便
  2. 电脑和手机经过简单配置后可以访问
  3. 电脑和手机登录即可使用,并且可以给家庭内和公网上的任何人分享文件并设置读写权限

运维工作 (w=2)

  1. 需要一定的专业知识搭建和维护
  2. 需要根据家庭网络和软件环境进行简单的配置
  3. 基本不需要配置和维护

噪音 (w=2)

  1. 不同房间/楼层可听到噪音
  2. 不同房间内听不到噪音
  3. 放置在同一房间内也可以睡觉

待机功耗 (w=1)

  1. >= 200w
  2. >= 50w
  3. <= 20w

体积 (w=1)

  1. ATX 机箱,机架式设备
  2. ITX 小型机箱
  3. NUC

可定制/DIY/扩展 (w=1)

  1. 没有定制/扩展能力
  2. 可通过安装各种插件扩展功能
  3. 可自由安装各种软件,甚至定制功能

评分结果

根据我们的需求和主观印象进行的评分结果:

  移动硬盘 商业 NAS 产品 云存储 云存储 + 本地服务器
数据持久性 (w=4) 1 2 2 3
安全性 (w=4) 1-3 2-3 1-3 1-3
照片视频管理 (w=3) 1 2-3 1-3 1-3
易用程度 (w=2) 3 2 3 3
访问灵活程度 (w=2) 1 2 3 3
运维工作 (w=2) 3 2 3 1-2
噪音 (w=2) 3 2-3 3 1-3
待机功耗 (w=1) 3 2-3 3 1-3
体积 (w=1) 3 1-3 3 1-3
可定制/DIY/扩展 (w=1) 1 2-3 2 1-3
总分 38-46 43-56 47-61 38-64

购买商业 NAS 还是自建服务器

现有的 NAS 产品功能强大,外观酷炫,配置简单。但我选择自建服务器的原因主要有:

从上表看,云存储 + 自建本地服务器有不错的潜力。下面分别介绍云存储和本地部分的设置。


云存储

这里考虑的云端存储需求主要是文件+照片视频。

云存储的安全性

基本要求是使用的云存储服务必须在传输过程和存储时都加密,并支持基于硬件的二次认证。 但云存储的厂商仍然有能力读取你的数据。对此我们的解决办法是将数据进行分级管理,对可能发生的未授权访问情况进行分析。 对于高度敏感的数据会在本地 PGP 加密之后再上传。


在离线系统上生成 PGP 密钥并存储在 Yubikey 和硬件加密的U盘中

文件

文件存储有很多选择,例如 Google Drive, iCloud Drive, OneDrive, Dropbox, 百度网盘。

需求:

由于 iCloud 的第三方访问比较困难,只能排除。百度网盘因为距离远 + 用户体验一般,也排除。

照片视频

需求:

在大概了解了几个服务之后,选择基本就只有 Google Photos 和 iCloud Photos。 虽然 iCloud 不支持第三方访问,但还是纳入考虑范围。

它们之间的一些区别:

综上,选择了 Google Photos。

Google Workspace

使用 Google Drive 和 Google Photos 的同时,还订阅了 Google 的企业服务。 Google Workspace 允许 Gmail 账号使用自己域名下的邮箱地址、一个账号绑定多个地址、统一账户管理和详细的安全设置等非常多的功能.. 这里不详细介绍。 但企业版也有一些限制,例如某些 Google 的服务无法使用 (Stadia)。


自定义域名邮箱


账户管理


安全事件通知规则


本地服务器

硬件

硬件选择对功耗、噪音、维护工作量都有很大的影响。

无风扇系统

作为湾区贫困人口,我们的一房一厅公寓面积很小,噪音需要控制在即使放在卧室也能睡觉的程度。 另外由于机器 24 小时持续运行,长时间运行的系统中风扇经常是容易坏或需要维护的部件。 无风扇系统几乎不会积累任何灰尘,几年后干净如新,可以极大减少维护工作量。

选取的硬件配置如下:

这些可以放进一个小型机箱。因为家里有机架,使用了一个 2U 机箱。


本地服务器(24x7 运行了 5 年的 N3700-ITX 主板正在更换 J5040-ITX)

软件

服务器软件环境基于 Ubuntu Server。使用 Ansible 管理配置。 在系统上只直接安装少量软件,较复杂的服务(例如 Unifi Controller 等)用 Docker 部署。

数据同步

Rclone 备份云端数据到本地。这个软件类似 rsync, 但支持各种云存储服务。

本地数据加密

本地服务器的安全目标是即使服务器被物理访问(假设整台机器被偷走),数据也不会泄露。设置如下:

这样的设置在一旦断电/重启后,系统中就没有足够的信息来解密存储的数据(解密密钥必须人工由外部提供)。


block devices

本地数据备份

没有使用 RAID 来做冗余,主要原因是不能有效应对用户操作失误(例如误删文件等)。 设置了一个定期的 rsync 任务把第一块硬盘里的数据同步到第二块硬盘(镜像)。这样在误操作发生后,通常还有时间从镜像盘中提取数据。