本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

Canvas RCE API是一个代理服务,负责转发Canvas富文本编辑器和侧边栏所需的所有API请求。请求通过Canvas生成的JWT进行认证。未来,运行Canvas RCE API服务将是Canvas富文本编辑器完整功能的必要条件。
Canvas RCE API是Node.js应用,可通过Node.js直接运行或在Docker容器中运行。无论哪种方式,均需通过环境变量正确配置应用,并在应用前部署Web服务器或负载均衡器以终止TLS连接,应用本身不直接处理https请求。
应用可通过Node.js直接运行,执行npm start或node app.js即可。设计支持当前Node.js LTS(16.x)版本。运行前需执行npm install --production安装所有生产依赖。
Node.js进程仅运行在单个线程。为充分利用应用服务器的多CPU核心,建议使用Passenger或PM2等工具管理和平衡Node进程负载。
Docker镜像可在Docker Hub(instructure/canvas-rce-api:latest)或Starlord(starlord.inscloudgate.net/jenkins/canvas-rce-api:latest)获取。容器通过Nginx与Passenger运行应用,监听80端口。Nginx和Passenger的配置环境变量可参考instructure/node-passenger基础镜像文档。
docker run \ -e ECOSYSTEM_KEY \ -e ECOSYSTEM_SECRET \ -e FLICKR_API_KEY \ -e ***_API_KEY \ -e STATSD_PORT=8125 \ -e STATSD_HOST=127.0.0.1 \ instructure/canvas-rce-api
为确保传输中凭证和 payload 的加密,应使用https。应用不直接支持https请求,需在前端部署TLS终止代理,可通过负载均衡器(如HAProxy或Amazon ELB/ALB)实现,也可在单服务器环境中使用同一服务器上的Apache或nginx。
配置选项通过以下环境变量设置:
ECOSYSTEM_KEY: 必填 与Canvas共享的加密密钥。ECOSYSTEM_SECRET: 必填 与Canvas共享的签名密钥。FLICKR_API_KEY: 支持Flickr图片搜索的必填项。***_API_KEY: 查询***嵌入内容标题的必填项。NODE_ENV: 生产环境必须设置为production。PORT: 默认3000。Docker运行时无效,因Node Passenger会通过猴子补丁控制Node进程监听端口。STATSD_HOST: 如需使用statsd收集指标,设为statsd服务器主机。STATSD_PORT: 如需使用statsd收集指标,设为statsd服务器端口。Canvas需配置与JWT加密和签名相同的密钥。若使用Consul管理动态设置,密钥和主机应添加至dynamic_settings.yml示例中的对应路径;也可直接使用dynamic_settings.yml文件替代Consul配置。
dynamic_settings.yml示例production: config: canvas: canvas: encryption-secret: "实际32字节长度的字符串" signing-secret: "实际32字节长度的字符串" rich-content-service: app-host: "canvas-rce-api-host"
开发canvas-rce-api仅需Node.js最新LTS版本(16.x),其他依赖通过npm安装。若不想在本地安装Node.js,可使用附带的docker-compose文件通过Docker运行。
复制示例.env文件,该文件中定义的环境变量将在应用运行时生效。Canvas本地测试环境配置参考前文。
cp .env.example .env
同时,复制docker-compose.override.yml.dev文件:
cp docker-compose.override.yml.dev docker-compose.override.yml
npm install npm run start:dev # 代码变更时自动重启应用
或本地构建Docker镜像:
docker-compose build docker-compose up
Docker环境要求Canvas将app-host设为rce.docker,而非本地主机地址。
项目使用prettier自动格式化代码。代码将通过pre-commit钩子自动格式化,建议配置编辑器在保存时自动格式化。
项目使用eslint检测非样式代码问题。检查错误会导致构建失败,建议配置编辑器显示eslint错误。
所有测试位于顶级test目录,文件命名格式为*.test.js。测试基于mocha和标准assert包编写。可使用Sinon stub依赖,但优先通过依赖注入而非stub共享绑定。
运行所有测试:
yarn test
运行单个测试文件示例:
yarn test:one test/service/api/folders.test.js
目前NPM发布为手动流程。
Jenkins的合并后任务会自动将:latest Docker镜像发布至Docker Hub和内部仓库Starlord。
准备发布时,需为发布提交打标签,遵循语义化版本规范(如v1.2.3):
git tag "v1.2.3" git push --tags origin
重要:git标签必须包含v前缀,否则合并后Jenkins任务不会发布版本特定的Docker镜像。
本项目基于MIT许可证发布。
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429