开源文档协作套件CryptPad

本文完成于 20229 月,11月的时候补充了些内容,修改了部分图片,原本是准备发的,不知什么原因又给拖延了;
当时的版是 v5.1.0,而现在最新的版本是 v5.2.1

什么是 CryptPad ?

CryptPad 是一个端到端加密和开源的协作套件。它旨在支持协作,实时同步对文档的更改。由于所有数据都是加密的,因此服务及其管理员无法查看正在编辑和存储的内容。

老苏觉得可以作为 Google 在线办公产品套件的优秀的替代品

CryptPad 的一些文件格式转换工具是基于 OnlyOffice 的代码,但是,这仅涉及客户端代码,CryptPad 并不使用 OnlyOffice 文档服务器。CryptPad 的加密协作,与上游 OnlyOffice 部分使用的加密系统完全不同。

CryptPad 是完全私有的,所有的内容都是由你的浏览器进行加密和解密的。这意味着文件、聊天记录在你登录的会话之外是无法阅读的。即使是服务管理员也无法得到你的信息。

准备

域名

服务器配置使用了字段 httpUnsafeOriginhttpSafeOrigin2 个不同的 URL

默认情况下,在开发实例上,它们对应于 http://localhost:3000/( unsafe ) http://localhost:3001/( safe )。第二个(安全)通常不向用户显示,它只在 iframe 内部使用。

使用安全 URL 手动打开 CryptPad 不会提供对应用程序的访问。但还是要两个域才能充分利用 CryptPad 的安全功能。

因为协作所以肯定不只是在局域网使用,所以老苏准备了 2个域名

但其实从头至尾也没用上第二个域名,😂

容器端口 域名
主域 3100 cryptpad.laosu.ml
沙箱 3101 sandbox.laosu.ml

因为没有备案,实际访问时需带上端口,例如:https://cryptpad.laosu.ml:444

设置文件

官方提供了 config.example.js,我们可以直接从https://raw.githubusercontent.com/xwiki-labs/cryptpad/main/config/config.example.js 直接另存为 config.js,但接下来要做两处修改

  • 第一处,找到 httpUnsafeOrigin: 'http://localhost:3000',,将其改为我们设置的主域 httpUnsafeOrigin: 'https://cryptpad.laosu.ml:444',

  • 第二处,找到installMethod: 'unspecified', ,将其改为 installMethod: 'docker',

安装

在群晖上以 Docker 方式安装。

cryptpad 分为独立版(标签为latestalpine)和 nginx 代理版(标签为nginxnginx-alpine),但老苏用到 npm 做反代,所以没去研究nginx 代理版的两个版本,也就只知道环境变量很多,有兴趣可以自己研究

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 新建文件夹 cryptpad 和 子目录
mkdir -p /volume2/docker/cryptpad/{customize,data/{blob,block,data,files}}

# 进入 cryptpad 目录
cd /volume2/docker/cryptpad

# 将 config.js 放入当前目录

# 修改所有权
chown -R 4001:4001 config.js data customize

# 运行容器
docker run -d \
--restart unless-stopped \
--name cryptpad \
-p 3100:3000 \
-p 3101:3001 \
-v ${PWD}/config.js:/cryptpad/config/config.js \
-v ${PWD}/customize:/cryptpad/customize \
-v ${PWD}/data/blob:/cryptpad/blob \
-v ${PWD}/data/block:/cryptpad/block \
-v ${PWD}/data/data:/cryptpad/data \
-v ${PWD}/data/files:/cryptpad/datastore \
promasu/cryptpad

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
version: '3'

services:
cryptpad:
image: promasu/cryptpad
container_name: cryptpad
restart: unless-stopped
ports:
- 3100:80
- 3101:443
volumes:
- ./config.js:/cryptpad/config/config.js
- ./customize:/cryptpad/customize
- ./data/blob:/cryptpad/blob
- ./data/block:/cryptpad/block
- ./data/data:/cryptpad/data
- ./data/files:/cryptpad/datastore

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
11
12
13
# 新建文件夹 cryptpad 和 子目录
mkdir -p /volume2/docker/cryptpad/{customize,data/{blob,block,data,files}}

# 进入 cryptpad 目录
cd /volume2/docker/cryptpad

# 将 docker-compose.yml 和 config.js 放入当前目录

# 修改所有权
chown -R 4001:4001 config.js data customize

# 一键启动
docker-compose up -d

运行

在浏览器中输入 https://cryptpad.laosu.ml:444 ,就能看到主界面

默认支持繁体中文

先要注册用户

需要注意:

  • 密码不能少于 8 位;
  • 密码如果忘记了,是不能找回的;

当然你也可以用访客

登录过程

登录成功 后的主界面

新建一个文档,可选的类型挺丰富的

新建一个白板试试

所有创建的文件都可以在 磁碟 中找到

配置管理员

直接按照官方的说明操作,原文在:https://docs.cryptpad.org/en/admin_guide/installation.html?highlight=adminkeys#configure-administrators

找到注册用户的公钥

复制后写入到 config.js 中,记得保存后,需要重启 CryptPad 容器

在用户菜单中,会多出 管理员

管理员能做一些系统设置、管理工作,比如 关闭注册

遗留问题

工作表中,存在部分菜单不能正常显示

中文输入也会显示为方块

其他模块中暂时未发现,显然不像是字体问题,有点奇怪

参考文档

xwiki-labs/cryptpad: Collaboration suite, end-to-end encrypted and open-source.
地址:https://github.com/xwiki-labs/cryptpad

xwiki-labs/cryptpad-docker
地址:https://github.com/xwiki-labs/cryptpad-docker

CryptPad.org
地址:https://cryptpad.org/

CryptPad Documentation — CryptPad 5.0 documentation
地址:https://docs.cryptpad.org/en/

CONFIG · Issue #795 · xwiki-labs/cryptpad
地址:https://github.com/xwiki-labs/cryptpad/issues/795