CryptPad 2026.5.1 配置参数详解

CryptPad 2026.5.1 服务端 config.js 与客户端 application_config 两域参数逐项详解:官方默认值、load-config 强制逻辑、/api/config 实测回显、SSO 插件配置与生产配置模板。

CryptPadCryptPad协作编辑在线办公2026/10/22

CryptPad 2026.5.1 配置参数详解

目标:逐项讲清 CryptPad 2026.5.1 的服务端配置文件(config/config.js)与客户端应用配置(customize/application_config.js)两域参数的含义、官方默认值与实测行为,并给出可直接套用的生产配置模板。全部默认值取自 2026.5.1 官方源码(config/config.example.js、lib/load-config.js、www/common/application_config_internal.js),实测行为均在本机部署的 2026.5.1 实例上验证(实测环境见 《CryptPad 2026.5.1 Docker Compose 部署指南》)。

一、环境信息

  • 实例版本:CryptPad 2026.5.1(版本标签 version-2026.5.1,运行时 Node.js v24.16.0);
  • 参数取证文件:config/config.example.js(340 行)、lib/load-config.js(默认值强制逻辑)、config/sso.example.js(SSO 样例)、www/common/application_config_internal.js(客户端 AppConfig 内部默认);
  • 实测验证手段:/api/config 接口实测回显、首启自动生成的 config.js 逐行核对、修改后重启观察行为;
  • 部署形态:官方 Compose 方案,配置文件路径 /opt/cryptpad/config/config.js(源码安装对应 <安装目录>/config/config.js,下文统一按此路径书写)。

二、前置条件

  1. 已有一套可运行的 CryptPad 2026.5.1 实例(部署见部署指南篇);
  2. 明确两个配置域的分工:服务端行为(域名、端口、存储、配额、日志)改 config/config.js;界面与应用行为(可用应用清单、页脚链接、白板配色)改 customize/application_config.js;两域互不覆盖;
  3. 改服务端配置需要重启服务生效;改客户端配置随静态资源下发,重建构建产物后生效(重启服务即可,启动流程每次会重跑前端构建)。

三、参数查看与修改方式

3.1 服务端配置的加载链路(源码实测)

服务端启动时由 lib/load-config.js 加载配置,加载规则实测核对如下:

  1. 默认读取 ../config/config.js;环境变量 CRYPTPAD_CONFIG 可指定其他绝对路径;
  2. config.js 不存在时回退加载 config/config.example.js 并打印提示:Config not found, loading the example config. You can customize the configuration by copying config/config.example.js to <configPath>;
  3. config.js 存在但语法错误时服务直接终止(实测错误文案:config/config.js is faulty. See stacktrace below for more information. Terminating.);
  4. 加载后对关键参数做默认值强制(load-config.js 源码逻辑):inactiveTime 非正数→90;archiveRetentionTime 非正数→90;maxUploadSize 非正数→20 MB;defaultStorageLimit 非正数→50 MB;premiumUploadSize 非正数或小于 maxUploadSize 时直接删除该键。

⚠️ 注意一个官方注释与代码不一致的点:config.example.js 中 archiveRetentionTime 的注释写「defaults to 15 days」,但 load-config.js 实际强制默认为 90 天。以代码为准:未配置时归档保留 90 天。

3.2 查看当前生效值的三种方法

方法一,/api/config 接口(客户端实际下发的运行时配置,实测回显):

curl -s http://localhost:8145/api/config
define(function(){;
return {
        "requireConf": {
                "waitSeconds": 600,
                "urlArgs": "ver=2026.5.1-1792616523994"
        },
        "removeDonateButton": false,
        "httpUnsafeOrigin": "http://localhost:8145",
        "adminKeys": [],
        "moderatorKeys": [],
        "inactiveTime": 90,
        "defaultStorageLimit": 52428800,
        "maxUploadSize": 20971520,
        "premiumUploadSize": false,
        "restrictRegistration": false,
        "httpSafeOrigin": "http://127.0.0.1:8145",
        "enableEmbedding": false,
        "listMyInstance": false,
        "sso": false
};
});

方法二,直接读配置文件:grep -vE '^\s*(//|/\*|\*)' /opt/cryptpad/config/config.js | grep -v '^\s*$'; 方法三,管理面板:注册管理员账户后访问 /admin/,配额、注册开关、实例信息等可在界面查看与修改。

3.3 修改方式

服务端:编辑 /opt/cryptpad/config/config.js 后重启服务进程。注意首启自动生成的 config.js 若未持久化,重建部署后会随实例状态一起丢失,生产应把配置目录固定挂载(方法见部署指南篇第八章)。 客户端:cp /opt/cryptpad/customize.dist/application_config.js /opt/cryptpad/customize/application_config.js 后按需修改——这是官方注释推荐的标准做法(源文件注释原文:把 customize.dist/application_config.js 复制到 customize/ 再改)。

四、参数总览

4.1 服务端 config.js 参数一览(默认值来源:config.example.js 与 load-config.js 实查)

参数官方默认分类
httpUnsafeOrigin'http://localhost:3000'双域与监听
httpSafeOrigin未注释(派生为主域主机+httpSafePort)双域与监听
httpAddress示例值 '0.0.0.0'双域与监听
httpPort3000(注释)双域与监听
httpSafePort3001 = httpPort + 1(注释)双域与监听
websocketPort3003(注释)双域与监听
maxWorkersCPU 核数(注释)双域与监听
otpSessionExpiration7×24(小时,注释)会话与账户
enforceMFAfalse(注释)会话与账户
logIPfalse(注释)隐私合规
adminKeys[](示例显式给出)管理
restrictRegistrationfalse(/api/config 实测)管理
adminEmail'i.did.not.read.my.config@cryptpad.fr'(load-config 提示逻辑)管理
inactiveTime90 天(load-config 强制)存储生命周期
archiveRetentionTime90 天(load-config 强制;example 注释写 15 天)存储生命周期
accountRetentionTime365(注释态)存储生命周期
disableIntegratedEvictionfalse(注释态)存储生命周期
maxUploadSize20 MB(load-config 强制)上传与配额
premiumUploadSize未设置(load-config 删除无效值)上传与配额
defaultStorageLimit50 MB(load-config 强制)上传与配额
filePath'./datastore/'数据目录
archivePath'./data/archive'数据目录
pinPath'./data/pins'数据目录
taskPath'./data/tasks'数据目录
blockPath'./block'数据目录
blobPath'./blob'数据目录
blobStagingPath'./data/blobstage'数据目录
decreePath'./data/decrees'数据目录
logPath'./data/logs'数据目录
logToStdoutfalse(示例显式给出)日志
logLevel'info'(示例显式给出)日志
logFeedbackfalse(示例显式给出)日志
verbosefalse(示例显式给出)日志
installMethod'docker'(示例显式给出)其他

4.2 客户端 application_config 参数一览(默认值来源:application_config_internal.js 实查)

参数官方默认作用
availablePadTypes['drive','teams','sheet','doc','presentation','pad','kanban','code','form','poll','whiteboard','file','contacts','slide','convert','diagram']首页可创建的应用清单
registeredOnlyTypes['file','contacts','notifications','support']仅注册用户可用的应用
hiddenTypes['drive','teams','contacts','todo','file','accounts','calendar','poll','convert']不在创建弹窗展示的类型
premiumTypes注释态 ['doc','presentation']视为「高级」的应用(需自定义配额才可见)
enableEarlyAccessfalse早期访问功能开关
availableLanguages注释态(示例 ['en','fr','de'])实例可用语言
imprint / privacy / terms / roadmap / statusfalse页脚法务/状态页链接
sourcetrue「关于」菜单源码链接(AGPL 合规项)
hostDescription{}首页社区实例说明文案
notificationTimeout5000(毫秒)通知显示时长
disableUserlistNotificationsfalse用户进出通知开关
whiteboardPalette17 色数组白板默认色板
appBackgroundColor'#666'居中内容应用背景色
enableTemplatestrue模板功能开关
enableHistorytrue历史版本按钮开关
loginSalt''密码哈希盐(见 5.2 警示)
minimumPasswordLength8密码最小长度
badStateTimeout30000(毫秒)同步失败中断会话时限
supportLanguages未设置(示例 ['en','fr'])工单面板支持语言
surveyURL未设置首页问卷链接(设 '' 隐藏)

五、核心参数分类详解(服务端)

5.1 双域与监听

CryptPad 的安全模型建立在「主域 + 沙箱域」双源之上(架构说明见 《CryptPad 介绍与选型指南》第三章):

参数说明与实测行为
httpUnsafeOrigin客户端访问实例的主域 URL。生产必须 HTTPS 默认端口(官方注释:https://cryptpad.fr 形态)。实测注入 http://localhost:8145 后 /api/config 原样下发
httpSafeOrigin沙箱域 URL,必须与主域不同源(官方注释强调,否则沙箱体系失效)。显式设置后服务不再在 httpSafePort 起监听,沙箱内容由反代把沙箱域名转发主服务端口实现(实测:设置后 3001 无监听,见部署指南篇 4.6 排障);未设置时进入开发模式,派生沙箱源为主域主机 + httpSafePort
httpAddressnode 监听地址。示例值 '0.0.0.0'(官方注释默认监听 localhost);本机反代用 127.0.0.1 更收敛,跨机反代需 0.0.0.0,实测默认即 0.0.0.0
httpPort主 HTTP 端口,默认 3000
httpSafePort开发模式沙箱监听端口,默认 httpPort + 1(3001)
websocketPortWebSocket(Netflux 协作通道)端口,默认 3003;生产由反代把 /cryptpad_websocket 路径转发到此端口(实测 101 握手成功,见部署指南篇 4.5)
maxWorkersCPU 密集任务(加密、转码)的 worker 进程数;官方注释说明大核数宿主可限流,默认每核一个

5.2 会话与账户安全

参数默认说明
otpSessionExpiration7*24(小时)OTP 二次验证会话有效期,默认 7 天(官方注释)
enforceMFAfalse设 true 后强制所有注册用户启用 TOTP 多因素(官方注释)
loginSalt(客户端域)''⚠️ 官方注释原文警示:密码以 scrypt 加用户名加盐,该值追加到用户名上使彩虹表攻击无法跨实例复用;只能在实例首次创建时设定,事后修改会导致全部现有用户无法登录
minimumPasswordLength(客户端域)8注册密码最小长度

5.3 隐私与合规

logIP(默认 false):开启后每条 WebSocket 连接记录「连接 ID + 用户公钥 + IP」,官方注释明确该选项用于满足特定司法辖区留日志要求,且要求日志级别为 info 或更低。默认关闭符合 CryptPad「最小化可收集信息」的定位;开启与否应取决于合规义务而非运维习惯。

5.4 管理参数

参数说明与实测行为
adminKeys管理面板访问白名单,元素为用户「设置页」里查到的公钥签名串,格式 ["[user@example.com/<公钥串>]"]。实测新实例 /api/config 下发 adminKeys: [];部署日志中的 /install/#<令牌> 链接注册的第一个账户可直接在面板中自助添加
restrictRegistration限制开放注册。/api/config 实测默认 false;关闭注册后仅管理员可建账户
adminEmail官方预留提醒机制:未修改时启动日志会提示 You can configure the administrator email (adminEmail) in your config/config.js file(load-config 源码实测)

5.5 存储生命周期

参数默认说明与实测
inactiveTime90 天未被任何注册用户「钉住」的文档,闲置超过该天数后可被清理(官方注释;/api/config 实测下发 90)
archiveRetentionTime90 天删除数据进归档区后的保留天数;⚠️ example 注释写 15 天、load-config.js 代码强制 90 天,以代码为准
accountRetentionTime365(注释态)闲置账户数据保留天数;注释掉即永久保留(官方注释)
disableIntegratedEvictionfalse(注释态)自 3.23.0 起服务端自动周期执行不活跃数据清理;设 true 可改为纯手动跑 scripts/evict-inactive.js(脚本用法见 《CryptPad 2026.5.1 常用 CLI 命令与工具详解》)

5.6 上传与配额

参数默认说明与实测
maxUploadSize20 MB单文件上传上限(/api/config 实测 20971520);生产放大后需同步调反代 client_max_body_size
premiumUploadSize未设置付费套餐用户的上传上限;load-config.js 实测:非正数或 ≤ maxUploadSize 时该键被删除,/api/config 显示 false
defaultStorageLimit50 MB未付费用户默认存储配额(/api/config 实测 52428800 字节)

5.7 数据目录

九个路径参数官方默认值如下(全部相对 CryptPad 安装目录;按部署指南篇部署时这些目录已映射为持久化存储,对照关系见其 5.1 节):

参数默认值内容
filePath'./datastore/'协作文档主存储(每文档一文件,官方注释:目录不存在会自动创建)
archivePath'./data/archive'删除数据归档区(恢复用 scripts/restore-archived.js)
pinPath'./data/pins'用户钉住文档的引用记录
taskPath'./data/tasks'定时任务队列
blockPath'./block'用户认证块
blobPath'./blob'加密文件块存储
blobStagingPath'./data/blobstage'上传未完成块的暂存区
decreePath'./data/decrees'服务端操作 decree 日志
logPath'./data/logs'NDJSON 磁盘日志(按 UTC 日期分目录,实测目录形如 data/logs/26/)

5.8 日志参数

参数默认说明
logToStdoutfalse日志是否同时打 stdout(排障时建议临时开启,配合服务日志实时查看)
logLevel'info'级别从细到粗:silly, verbose, debug, feedback, info, warn, error;官方注释:info 只输出 info/warn/error
logFeedbackfalse用户使用反馈事件是否落日志(需 logLevel 包含 feedback)
verbosefalse详细日志开关
installMethod'docker'遥测自报安装方式(官方注释:用于统计非官方安装方式占比;源码安装可改 'git')

六、客户端应用配置详解(application_config)

修改入口是 customize/application_config.js(从 customize.dist/ 复制,见 3.3),其内部默认值定义在 www/common/application_config_internal.js。核心项:

6.1 应用可见性三件套

  • availablePadTypes(默认含 16 类):首页「新建」弹窗可展示的应用清单;官方注释要求永远不要从清单移除 drive(否则云盘不可达);
  • registeredOnlyTypes(默认 file/contacts/notifications/support):仅注册用户可用类型,官方注释同样警告默认项不可随意删(这些功能无账户无法工作);
  • hiddenTypes(默认 10 类):不进创建弹窗但功能仍存在的类型,默认隐藏了 drive/teams/contacts/todo/file/accounts/calendar/poll/convert。

三者关系实测理解:availablePadTypes 决定「有哪些可创建」,hiddenTypes 决定「哪些不进弹窗」,registeredOnlyTypes 决定「哪些要登录」。例如默认配置下 calendar 可用但藏于独立入口。

6.2 高级与早期访问

  • enableEarlyAccess(false):官方注释说明新应用可能先以「早期访问」状态引入,可能含缺陷甚至导致内容丢失,默认关闭;
  • premiumTypes(注释态 ['doc','presentation']):Word/演示两应用在 2026.5.1 被视为实验性,官方注释原话——默认对用户隐藏,除非经管理面板授予自定义配额,且「此行为不受官方支持,改动后官方不提供帮助」。

6.3 页脚与法务链接

imprint(版权页)、privacy(隐私政策)、terms(服务条款)、roadmap(路线图)、status(状态页)五项默认 false(不显示);source 默认 true——这是 AGPL 许可的合规项:官方注释要求向所有使用者公开源码,若对平台做过修改,须把该项指向包含修改版源码的仓库地址。三项法务链接均支持三种取值:false(隐藏)、true(用默认页)、对象形式(按语言给 URL,官方注释给出 {"default": ..., "en": ..., "fr": ...} 结构)。

6.4 界面细节

notificationTimeout(5000 ms,通知停留时长)、whiteboardPalette(17 色白板色板,可整组替换)、appBackgroundColor('#666',居中内容应用背景)、enableTemplates/enableHistory(模板与历史按钮开关,设 false 即从全部应用移除)、hostDescription(首页社区实例文案,支持按语言配置)、supportLanguages(工单面板管理员语言,示例 ['en','fr'])、surveyURL(官方问卷链接,设 '' 可隐藏)。

七、SSO 配置(可选插件)

2026.5.1 的 SSO 登录通过插件机制提供:lib/env.js 以 plugins?.SSO?.config 读取配置,基础部署形态中 lib/plugins/ 目录实测为空(仅 README),因此 /api/config 实测下发 "sso": false。安装 SSO 插件后按 config/sso.example.js 样例配置,其字段(2026.5.1 实查):

字段样例默认说明
enabledfalse实例是否启用 SSO 登录
enforcedtrue是否禁止非 SSO 用户注册
cpPassword / forceCpPasswordtrue / true是否(强制)为 SSO 账户再加一层 CryptPad 密码
list[]提供商清单,支持 type: 'oidc'(url/client_id/client_secret,可带 jwt_alg)与 type: 'saml'(url/issuer/cert/privateKey/signingCert)两种

八、生产配置模板

适用场景:4 GB 内存、NVMe SSD、50 人以内团队的 HTTPS 生产实例(域名以 pad.example.com / 沙箱 pad-sandbox.example.com 为例,替换为实际域名即可)。基于官方 example 全量裁剪,每个取值都可在前文找到依据:

module.exports = {
    // 主域:客户端访问地址,生产必须 HTTPS
    httpUnsafeOrigin: 'https://pad.example.com',
    // 沙箱域:必须与主域不同源(子域即可)
    httpSafeOrigin: 'https://pad-sandbox.example.com',
    // 监听地址与端口(反代转发目标)
    httpAddress: '127.0.0.1',
    httpPort: 3000,
    websocketPort: 3003,

    // 管理面板白名单:值为账户设置页展示的公钥签名串
    adminKeys: [
        "[admin@example.com/YZgXQxKR0Rcb6r6CmxHPdAGLVludrAF2lEnkbx1vVOo=]",
    ],
    // adminEmail: 'admin@example.com',
    restrictRegistration: false,

    // 存储生命周期:90 天未钉住清理;归档保留 15 天;账户闲置 365 天清理
    inactiveTime: 90,
    archiveRetentionTime: 15,
    accountRetentionTime: 365,
    // 如需手动控制清理节奏(配合 scripts/evict-inactive.js):
    // disableIntegratedEviction: true,

    // 上传与配额
    maxUploadSize: 100 * 1024 * 1024,
    defaultStorageLimit: 500 * 1024 * 1024,

    // 数据目录(默认值,集中列出便于必要时迁移)
    filePath: './datastore/',
    archivePath: './data/archive',
    pinPath: './data/pins',
    taskPath: './data/tasks',
    blockPath: './block',
    blobPath: './blob',
    blobStagingPath: './data/blobstage',
    decreePath: './data/decrees',
    logPath: './data/logs',

    // 日志
    logToStdout: true,
    logLevel: 'info',
    logFeedback: false,
    verbose: false,
};

模板要点解读:httpAddress 收敛到 127.0.0.1 让 node 只听本机回环、由 NGINX 反代对外(官方推荐拓扑);maxUploadSize/defaultStorageLimit 按团队规模放大,放大上传上限后反代 client_max_body_size 必须同步 ≥ 100M;logToStdout: true 便于接入系统日志采集,磁盘日志仍按 logPath 落盘;archiveRetentionTime: 15 与账户清理按需取舍——保守口径可全部注释掉用代码默认(90/90/365)。

九、常见问题

Q1:改了 config.js 重启后报 config/config.js is faulty? JS 语法错误,服务拒绝启动(load-config 实测行为:SyntaxError 直接 process.exit(1))。按日志栈定位行号修正;改前可 node -e "require('/opt/cryptpad/config/config.js')" 预检语法。

Q2:archiveRetentionTime 注释说 15 天,为什么实际是 90 天? 官方注释与代码不一致:lib/load-config.js 对非正数值强制回退 90。需要 15 天就显式写 archiveRetentionTime: 15(本篇第八、章模板已显式给出)。

Q3:设置了 httpSafeOrigin,3001 端口为什么不监听? 显式配置沙箱源即为生产模式,沙箱内容由反代把沙箱域转发到主服务端口实现;只有不配置(开发模式)才派生 httpSafePort 监听。详见部署指南篇 4.6 排障实录。

Q4:改 maxUploadSize 后大文件仍上传失败? 服务端上限放开后还要同步:反代 client_max_body_size ≥ 新上限;且 premiumUploadSize 若小于 maxUploadSize 会被 load-config 静默删除(源码实测)。

Q5:loginSalt 能不能中途加? 不能。官方注释原文警示:仅可在实例首次创建时设置,事后修改将使全部现有用户无法登录(scrypt 盐与历史凭据不匹配)。

Q6:客户端配置改了不生效? 确认改的是 customize/application_config.js(而非 customize.dist/ 原件),且文件导出结构未被破坏;重启服务触发重建构建产物后刷新浏览器缓存。

十、参考链接

资料链接
官方配置样例(2026.5.1)https://github.com/cryptpad/cryptpad/blob/2026.5.1/config/config.example.js
官方 SSO 样例https://github.com/cryptpad/cryptpad/blob/2026.5.1/config/sso.example.js
官方管理员指南https://docs.cryptpad.org/en/admin_guide/installation.html
本系列部署篇(实测环境)《CryptPad 2026.5.1 Docker Compose 部署指南》
本系列认知篇《CryptPad 介绍与选型指南》
本系列命令篇《CryptPad 2026.5.1 常用 CLI 命令与工具详解》