· 产品 / 设计

为什么给家人做一个照片备份

照片存在别人的云上,存储空间要按月买,要记住密码,还要相信那家公司会一直在。照片存在自己家里,空间就是自己的硬盘,也不用再多记一个账号。自托管社区早就证明了大家想要这个,只是现有的工具都默认你会配 Docker、懂反向代理、家里跑着一台服务器。

我们的家人不会这些,也不该需要会这些。他们只是会为照片担心的人。

而大多数家庭,其实早就有一台”服务器”了:那台常开的电脑。

于是问题变得很具体:能不能做一个零门槛的版本,手机上的照片自动存进家里那台本来就开着的电脑?扫一次码,之后什么都不用做。

先定下不做什么

定位想清楚之后,第一批决定全是”不做什么”:

  • 不做云端存储:照片存在别人的服务器上,等于把全家人的回忆托付给一家公司的续费页面;
  • 不做账号体系:家人记不住密码,也不该被要求记住;
  • 不按存储空间收费:照片存在你自己的硬盘上,能存多少由你的硬盘决定。

我们想做的是:照片从手机出发,存进家里那台电脑。设备之间能直连就直连,连不上时由中继转发加密数据,照片不存到任何云上。

数据不上云

这个决定被写进了项目文档最前面,作为数据铁律:

数据不上云,不进我们任何库。relay 只是中转传递的兜底。数据隐私是底线。

意思是:照片字节、缩略图、文件名、时间线,只存在于用户自己的设备之间;中继服务器只转发加密后的数据,不落盘,也解不开。即使中继服务器被攻破,拿到的也只是一堆无法解读的密文。

后面的设计决定都从这条立场出发。官网也算一个证据:这个网站本身没有任何统计脚本和 tracker。我们做隐私产品,自己的官网不该是例外。

家里每个人都能用

产品里有一句被反复引用的话:设备叫”妈妈的手机”,不叫 NodeId。

技术团队看的是节点、身份、加密通道;家人看的是”我这台手机,跟家里那台电脑连上了没有”。

所以我们把交互压到最简:拿到手机,扫一次码,之后什么都不用做。打开 App 就能看到真话:“手机 128 张 · 已备份 126 · 待备份 2”,或者诚实地告诉你”还没存好,正在传”。

简单归简单,不能是黑箱。我们给了三层掌控:

  1. 看得见:备份状态说真话,传输两端都看得见,连接走的是直连还是中继也标出来;
  2. 可干预:随时暂停、取消、选相册、断开,任何一端都能单方停止;
  3. 可查账:每一次配对、每一次备份都有记录,用人能读懂的话写,不显示日志编号。

现在的样子

P-Pass 目前是 macOS + Android,端到端加密,照片端到端直传,中继只在双方够不着的时候帮忙转一下。开源,代码在 GitHub。

这篇文章写于第一个里程碑收官之后。产品设计的过程、踩过的坑、做的取舍,都会陆续写在这个博客里。比如图标是怎么迭代了九轮的,比如手机端的备份任务为什么最后交给了系统自带的队列。

给家人做东西,最怕的是”看起来能用,其实心里没底”。所以备份数量、直连还是中继、每次配对的记录都摆在界面上,代码也开源,“照片安全吗”可以自己去查,不用只听我们说。

常见问题

和网盘、云相册有什么区别?

照片存在你家电脑的硬盘上,不会上传到任何云端,也不用注册账号。手机和电脑扫码配对一次,之后照片只在这两台设备之间传。

电脑关机了会怎样?

备份需要电脑开着才能进行。电脑关机期间,手机上的照片原样留在手机里,不受影响。等电脑重新开机、两边连上之后,手机会接着把还没传完的照片补上。

出门在外也能备份吗?

能。两台设备能直连就直连,连不上时由第三方运营的中继转发加密后的数据,中继看不到照片内容。默认只在手机连着 Wi-Fi、电量不太低时自动备份;想用手机流量也备份,可以在设置里关掉”仅 Wi-Fi 时备份”。

支持哪些设备?

电脑端目前是 Apple 芯片的 Mac,手机端是 Android 8.0 及以上的手机。两边装好后,用手机扫一下电脑屏幕上的二维码就能配对。