静看光阴荏苒
不管不顾不问不说也不念

CryptPad:端到端加密的开源协作套件

我之前在找OpenCloud的同类软件时就得知了这个CryptPad,部署试了一下,说句很中肯的评价:不如OpenCloud好用。CryptPad除了端到端加密功能以外,其他方面都不如OpenCloud。

CryptPad虽然有一个网盘的功能,这里面也确实可以上传各种格式的文件,但是不能上传大文件(>300MB),基本上大文件都是上传失败。我看了一下issue,作者应该是把这个程序的定位就定在文档编辑、团队协作,网盘只是一个附带的小功能,只支持上传一些小文件,作为文档编辑、团队协作功能的一种补充。

如果你的需求主要是编辑文档,并且对数据有很高的安全要求,那么CryptPad非常适合,如果你是想搭建网盘存储各种各样的文件,那就不要用了CryptPad,纯折磨。。但话又说回来了OpenCloud一样也能编辑文档,而且还用的是Collabora(CODE)套件。。

准备工作:

1.添加两个A记录域名解析:

cryptpad.example.com
sandbox-cryptpad.example.com

安装Docker和NGINX:

apt -y update
apt -y install curl nginx python3-certbot-nginx
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

创建目录新建compose文件:

mkdir /opt/cryptpad && cd /opt/cryptpad && nano docker-compose.yml

写入如下内容:

services:
  cryptpad:
    image: "cryptpad/cryptpad:version-2025.6.0"
    hostname: cryptpad
    restart: unless-stopped
    environment:
      - CPAD_MAIN_DOMAIN=https://cryptpad.example.com
      - CPAD_SANDBOX_DOMAIN=https://sandbox-cryptpad.example.com
      - CPAD_CONF=/cryptpad/config/config.js
      - CPAD_INSTALL_ONLYOFFICE=yes
    volumes:
      - ./data/blob:/cryptpad/blob
      - ./data/block:/cryptpad/block
      - ./customize:/cryptpad/customize
      - ./data/data:/cryptpad/data
      - ./data/files:/cryptpad/datastore
      - ./onlyoffice-dist:/cryptpad/www/common/onlyoffice/dist
      - ./onlyoffice-conf:/cryptpad/onlyoffice-conf
    ports:
      - "127.0.0.1:3000:3000"
      - "127.0.0.1:3003:3003"
    ulimits:
      nofile:
        soft: 1000000
        hard: 1000000

还需要创建如下目录并修改所有者权限:

mkdir -p data/{blob,block,data,files} customize onlyoffice-dist onlyoffice-conf
chown -R 4001:4001 data customize onlyoffice-dist onlyoffice-conf

启动:

docker compose up -d

配置NGINX反向代理:

nano /etc/nginx/sites-available/cryptpad

写入如下内容:

server {
    listen 80;
    listen [::]:80;
    server_name cryptpad.example.com sandbox-cryptpad.example.com;

    location / {
        proxy_pass            http://127.0.0.1:3000;
        proxy_set_header      X-Real-IP $remote_addr;
        proxy_set_header      Host $host;
        proxy_set_header      X-Forwarded-For $proxy_add_x_forwarded_for;
        client_max_body_size  10G;
        proxy_http_version    1.1;
        proxy_set_header      Upgrade $http_upgrade;
        proxy_set_header      Connection upgrade;
    }

    location ^~ /cryptpad_websocket {
        proxy_pass            http://127.0.0.1:3003;
        proxy_set_header      X-Real-IP $remote_addr;
        proxy_set_header      Host $host;
        proxy_set_header      X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version    1.1;
        proxy_set_header      Upgrade $http_upgrade;
        proxy_set_header      Connection upgrade;
    }
}

启用站点:

ln -s /etc/nginx/sites-available/cryptpad /etc/nginx/sites-enabled/cryptpad

签发SSL证书:

certbot --nginx --email example@lala.im --agree-tos --no-eff-email

访问cryptpad.example.com创建管理员账号:

配置站点标题等信息:

选择支持的应用程序,保持默认全选即可:

可选关闭注册(后续在管理面板可以控制开启):

这里需要注意:即便关闭了用户注册,CryptPad默认情况下还是允许匿名(访客)用户使用,当然功能有一定限制。

如果你要彻底禁用匿名(访客)用户使用你的实例,需要在customize目录内新建一个自定义配置文件

nano /opt/cryptpad/customize/application_config.js

写入如下内容:

// SPDX-FileCopyrightText: 2023 XWiki CryptPad Team  and contributors
//
// SPDX-License-Identifier: AGPL-3.0-or-later
/*
 * You can override the configurable values from this file.
 * The recommended method is to make a copy of this file (/customize.dist/application_config.js)
   in a 'customize' directory (/customize/application_config.js).
 * If you want to check all the configurable values, you can open the internal configuration file
   but you should not change it directly (/common/application_config_internal.js)
*/
(() => {
const factory = (AppConfig) => {
    // Example: If you want to remove the survey link in the menu:
    // AppConfig.surveyURL = "";
    // To inform users of the support ticket panel which languages your admins speak:
    //AppConfig.supportLanguages = [ 'en', 'fr' ];
    AppConfig.registeredOnlyTypes = AppConfig.availablePadTypes;
    return AppConfig;
};
// Do not change code below
if (typeof(module) !== 'undefined' && module.exports) {
    module.exports = factory(
        require('../www/common/application_config_internal.js')
    );
} else if ((typeof(define) !== 'undefined' && define !== null) && (define.amd !== null)) {
    define(['/common/application_config_internal.js'], factory);
}
})();

修改文件所有者权限:

chown 4001:4001 /opt/cryptpad/customize/application_config.js

使自定义配置生效:

docker compose down
docker compose up -d

这个文件application_config_internal.js提供了所有可自定义配置的内容。

如果你还要自定义别的配置,把application_config_internal.js里面的内容加到application_config.js里面即可。

还有一个问题,默认CryptPad只允许上传单个20MB大小的文件,如果觉得这个值太小想修改的话,这里需要挂载另外一个config.example.js配置文件到容器内。

不要直接挂载Github仓库里面默认的config.example.js,你需要进入当前运行的容器内,复制出容器正在使用的config.js:

docker compose exec -it cryptpad /bin/bash
cat config/config.js

在这个配置文件内有两个与上传大小相关的配置项,根据自己的需要修改:

maxUploadSize: 20 * 1024 * 1024, # 20MB
premiumUploadSize: 100 * 1024 * 1024, # 100MB

创建目录和config.js,将改好的配置内容写到config.js内:

mkdir /opt/cryptpad/config && nano /opt/cryptpad/config/config.js

编辑compose文件挂载config.js:

services:
  cryptpad:
    image: "cryptpad/cryptpad:version-2025.6.0"
    ...
    environment:
      ...
      - CPAD_CONF=/cryptpad/config/config.js
    volumes:
      ...
      - ./config/config.js:/cryptpad/config/config.js

修改权限:

chown -R 4001:4001 /opt/cryptpad/config

使配置生效:

docker compose down
docker compose up -d

另一个更简单的办法是直接更改容器正在使用的config.js,然后重启容器:

docker compose restart

但请注意这种修改不是永久生效的,一旦容器被删除配置也会失效。最好还是使用上述挂载的方式。

其实改不改意义不大,哪怕改成10GB,传大文件最终也是上传失败,文章之前就说过了上传>300MB的文件大概率上传失败,可能程序设计的有缺陷吧,或者说作者就是只打算支持小文件上传。。

转到CryptPad管理员界面,在用户存储这里,可以修改所有用户的默认存储大小,也可以指定修改某一个用户的存储大小,注意这个存储大小与用户可以上传的单个文件大小不相关,这里的存储大小指的是用户网盘的总容量:

但是根据CryptPad论坛的这个帖子可以得知,maxUploadSize是用于所有默认用户的单个文件上传大小限制,如果给一个特定用户设置了存储大小,那么这个特定用户的单个文件上传大小就变成了用premiumUploadSize来限制。

赞(0)
未经允许不得转载:荒岛 » CryptPad:端到端加密的开源协作套件
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

分享创造快乐

广告合作资源投稿