
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
本仓库是将Docker相关内容从https://github.com/xwiki-labs/cryptpad%E5%88%86%E7%A6%BB%E5%87%BA%E6%9D%A5%E7%9A%84%E6%8C%81%E7%BB%AD%E5%8A%AA%E5%8A%9B%E7%9A%84%E4%B8%80%E9%83%A8%E5%88%86%E3%80%82
官方推荐的部署方法是使用核心仓库提供的example.nginx.conf文件,并通过git、npm(由https://github.com/nvm-sh/nvm%E6%8F%90%E4%BE%9B%EF%BC%89%E5%92%8C%60bower%60%E5%9C%A8%E4%B8%BB%E6%9C%BA%E7%B3%BB%E7%BB%9F%E4%B8%8A%E7%9B%B4%E6%8E%A5%E7%AE%A1%E7%90%86%E6%9B%B4%E6%96%B0%E3%80%82
Docker镜像及其支持配置文件由使用它们的社区成员提供,核心开发团队仅提供尽力而为的支持。请注意,核心团队不使用也不测试Docker镜像,因此实际效果可能有所不同。
有关切换到本仓库的更多信息,请参见迁移指南。
重要:本仓库新增了标签为nginx和nginx-alpine的镜像。docker-compose.yml和traefik2.yml示例文件已修改为使用nginx镜像,因为旧版本未提供内容安全策略(CSP)头,而这是将CryptPad正确暴露到互联网的必要条件。建议使用promasu/cryptpad:nginx镜像(参见由Nginx代理的CryptPad)。
CryptPad的挂载文件和文件夹必须由用户ID 4001拥有。可能需要运行sudo chown -R 4001:4001 filename。如果容器引擎使用命名空间来转换容器内的UID和GID,则需要修正UID和GID或在容器内运行该命令。
标签:latest和alpine
文件:Dockerfile和Dockerfile-alpine
此镜像提供由Node服务的CryptPad,不包含证书或CSP配置。需按照CryptPad开发团队的建议(参见https://github.com/xwiki-labs/cryptpad/wiki/Installation-guide#opening-cryptpad-to-the-internet%EF%BC%89%E5%9C%A8%E5%85%B6%E5%90%8E%E6%96%B9%E9%83%A8%E7%BD%B2%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E3%80%82
保留此版本是为避免破坏现有部署。如果已有配置正确CSP的反向代理,可继续使用此镜像;否则应使用nginx或nginx-alpine版本。
基本运行:
docker run -d -p 3000:3000 -p 3001:3001 promasu/cryptpad
带自定义配置运行:
docker run -d -p 3000:3000 -p 3001:3001 -v ${PWD}/customize:/cryptpad/customize promasu/cryptpad
带配置文件运行:
docker run -d -p 3000:3000 -p 3001:3001 -v ${PWD}/config.js:/cryptpad/config/config.js promasu/cryptpad
带持久化数据运行:
docker run -d -p 3000:3000 -p 3001:3001 -v ${PWD}/data/blob:/cryptpad/blob \ -v ${PWD}/data/block:/cryptpad/block -v ${PWD}/customize:/cryptpad/customize \ -v ${PWD}/data/data:/cryptpad/data -v ${PWD}/data/files:/cryptpad/datastore promasu/cryptpad
标签:nginx和nginx-alpine
文件:Dockerfile-nginx和Dockerfile-nginx-alpine
此镜像提供由Nginx代理的CryptPad,比独立版本提供更多配置选项(但未设置最低要求选项时无法运行),并由Nginx处理CSP等HTTP头。
docker-entrypoint.sh脚本从CryptPad仓库提供的示例中复制Nginx配置(参见文件https://github.com/xwiki-labs/cryptpad/blob/main/docs/example.nginx.conf%EF%BC%89%EF%BC%8C%E5%B9%B6%E6%9B%BF%E6%8D%A2%E9%83%A8%E7%BD%B2%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E3%80%82
最低配置下,Nginx将在80端口监听未加密的HTTP2请求。大多数浏览器在没有反向代理升级连接的情况下无法连接(如果使用Traefik,参见此处)。要禁用HTTP2,设置环境变量CPAD_HTTP2_DISABLE为true。
若希望Nginx终止TLS连接,需提供完整链证书和密钥,并设置CPAD_TLS_CERT和CPAD_TLS_KEY。这两个变量必须同时设置,入口脚本才会在配置中设置路径。还可通过CPAD_TLS_DHPARAM提供Diffie-Hellman参数。若未提供dhparam.pem文件,容器启动时将生成该文件(注意:此过程耗时较长)。
| 变量名 | 描述 | 是否必需 | 默认值 |
|---|---|---|---|
CPAD_MAIN_DOMAIN | CryptPad主域名(FQDN) | 是 | 无 |
CPAD_SANDBOX_DOMAIN | CryptPad沙箱子域名(FQDN) | 是 | 无 |
CPAD_API_DOMAIN | CryptPad API子域名(FQDN) | 否 | $CPAD_MAIN_DOMAIN |
CPAD_FILES_DOMAIN | CryptPad文件子域名(FQDN) | 否 | $CPAD_MAIN_DOMAIN |
CPAD_TRUSTED_PROXY | 可信代理地址或CIDR | 否 | 无 |
CPAD_REALIP_HEADER | 获取客户端IP的头(X-Real-IP或X-Forwarded-For) | 否 | X-Real-IP |
CPAD_REALIP_RECURSIVE | 指示Nginx递归查找客户端真实IP(on/off)(参见ngx_http_realip_module) | 否 | off |
CPAD_TLS_CERT | TLS证书文件路径 | 否 | 无 |
CPAD_TLS_KEY | TLS私钥文件路径 | 否 | 无 |
CPAD_TLS_DHPARAM | Diffie-Hellman参数文件路径 | 否 | /etc/nginx/dhparam.pem |
CPAD_HTTP2_DISABLE | 禁用HTTP2 | 否 | false |
最低配置运行:
docker run -d -e "CPAD_MAIN_DOMAIN=example.com" -e "CPAD_SANDBOX_DOMAIN=sandbox.example.com" -p 80:80 promasu/cryptpad:nginx
带配置文件运行:
docker run -d -e "CPAD_MAIN_DOMAIN=example.com" -e "CPAD_SANDBOX_DOMAIN=sandbox.example.com" \ -v ${PWD}/config.js:/cryptpad/config/config.js -p 80:80 promasu/cryptpad:nginx
带TLS运行:
docker run -d -e "CPAD_MAIN_DOMAIN=example.com" -e "CPAD_SANDBOX_DOMAIN=sandbox.example.com" \ -e "CPAD_TLS_CERT=/path/to/cert.pem" -e "CPAD_TLS_KEY=/path/to/key.pem" \ -e "CPAD_TLS_DHPARAM=/path/to/dhparam.pem" -v ${PWD}/cert.pem:/path/to/cert.pem \ -v ${PWD}/key.pem:/path/to/key.pem -v ${PWD}/dhparam.pem:/path/to/dhparam.pem \ -p 443:443 promasu/cryptpad:nginx
反向代理后方运行:
docker run -d -e "CPAD_MAIN_DOMAIN=example.com" -e "CPAD_SANDBOX_DOMAIN=sandbox.example.com" \ -e "CPAD_TRUSTED_PROXY=10.0.0.0/8" -e "CPAD_REALIP_HEADER=X-Forwarded-For" \ -e "CPAD_REALIP_RECURSIVE=on" -p 80:80 promasu/cryptpad:nginx
带自定义配置运行:
docker run -d -e "CPAD_MAIN_DOMAIN=example.com" -e "CPAD_SANDBOX_DOMAIN=sandbox.example.com" \ -v ${PWD}/customize:/cryptpad/customize -p 80:80 promasu/cryptpad:nginx
带持久化数据运行:
docker run -d -e "CPAD_MAIN_DOMAIN=example.com" -e "CPAD_SANDBOX_DOMAIN=sandbox.example.com" \ -v ${PWD}/data/blob:/cryptpad/blob -v ${PWD}/data/block:/cryptpad/block \ -v ${PWD}/customize:/cryptpad/customize -v ${PWD}/data/data:/cryptpad/data \ -v ${PWD}/data/files:/cryptpad/datastore -p 80:80 promasu/cryptpad:nginx
基本运行:
docker-compose up
带traefik2标签运行:
docker-compose -f docker-compose.yml -f traefik2.yml up
若将Traefik用作反向代理(例如处理SSL证书),当Nginx监听HTTP2时,CryptPad WebSocket可能无法访问。解决方法是通过设置CPAD_HTTP2_DISABLE环境变量禁用HTTP2。
参见https://github.com/xwiki-labs/cryptpad/issues/633
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务