文档

在 Render 上部署 Desk

仓库中的 render.yaml 是 Desk 的 Render Blueprint。开始前请先阅读所有部署方式的共同要求。

render.yaml 的设置值
服务使用镜像 ghcr.io/modelriver/desk:1 的 Web 服务
实例类型Starter。磁盘需要付费实例类型
磁盘desk-data,1 GB,挂载到 /data
健康检查/robots.txt
密钥DESK_SECRET_KEY 和 DESK_IDENTITY_SECRET,首次部署时生成
访客地址从 True-Client-IP 请求头读取(CLIENT_IP_HEADER),用于限流

带磁盘的服务只运行一个实例,这正是 Desk 需要的。

1. 创建服务

打开 部署到 Render 并登录 Render。它会读取仓库中的 render.yaml。为服务命名,在要求填写 MODELRIVER_API_KEY 时粘贴你的 ModelRiver API 密钥,然后应用。

2. 创建第一位管理员

部署上线后,打开服务的 Shell 标签页并运行:

Bash
desk-entrypoint node /app/scripts/create-admin.ts

它会询问管理员的邮箱、姓名和密码。

3. 设置地址

Desk 的地址就是服务页面顶部显示的 onrender.com 地址。在 Environment 中添加 APP_URL,填入这个地址(或下面配置的自己的域名)。打开 /dashboard 登录,首次登录会设置双重认证。

使用自己的域名

在 Settings → Custom Domains 中添加你的域名,并创建 Render 显示的 DNS 记录,Render 会签发证书。然后把 APP_URL 设为 https:// 加你的域名。

设置邮件

推荐设置。提交和回复工单、账户查询的邮箱验证以及团队通知都需要邮件(没有邮件会怎样)。可使用 Resend、Postmark 或 Amazon SES,EMAIL_FROM 需使用邮件服务已验证的域名,SUPPORT_REPLY_TO 设为团队会查看的邮箱。

在 Environment 下添加:

Bash
EMAIL_PROVIDER=resend
RESEND_API_KEY=re_…
EMAIL_FROM="Acme Support <[email protected]>"
SUPPORT_REPLY_TO=support@acme.com

Render 会用新设置重新部署。

然后在 后台 → 设置 → Send a test email(发送测试邮件) 中检查。

日常运维

  • 日志: Logs 标签页。
  • 修改设置: Environment,保存后服务会重新部署。不要修改 DESK_SECRET_KEY。
  • 新增管理员,或忘记密码、丢失手机: 在 Shell 标签页再次运行第 2 步的命令。
  • 更多空间: 在 Disks 中增大磁盘。
  • 修改蓝图: fork 仓库,编辑 render.yaml(实例类型、磁盘大小、固定的镜像标签如 1.0.1),再从你的 fork 创建 Blueprint。
  • 更新: Manual Deploy → Deploy latest reference 会拉取标签对应的最新镜像。发布新版本后 Render 不会自动重新部署;如需定期更新,可以用定时任务调用服务的部署钩子 URL(在 Settings 中)。参见更新。