文档

在 Railway 上部署 Desk

Railway 可以直接运行 Desk 已发布的镜像,并按计划自动更新。开始前请先阅读所有部署方式的共同要求。

1. 添加镜像

在 Railway 项目中选择 New → Docker Image,输入:

ghcr.io/modelriver/desk:1

2. 添加数据卷

为服务添加一个数据卷,挂载到 /data。Desk 的所有内容都保存在这里:文章、笔记、数据库和品牌设置。

3. 设置变量

在 Variables 中添加:

变量值
MODELRIVER_API_KEY你的项目 API 密钥
DESK_SECRET_KEYopenssl rand -base64 32 的输出
DESK_IDENTITY_SECRETopenssl rand -base64 48 的输出
CLIENT_IP_HEADERx-real-ip,Railway 存放访客地址的请求头,限流需要它
RAILWAY_RUN_UID0

Railway 挂载的数据卷属于 root。设置 RAILWAY_RUN_UID=0 后,Desk 只在启动时以 root 接管 /data,之后以无特权用户运行。

4. 分配地址

在 Settings → Networking 中为 3000 端口生成域名,或添加自己的域名并创建 Railway 显示的 DNS 记录。然后在 Variables 中添加 APP_URL,填入该地址。

5. 创建第一位管理员

打开服务的 SSH 控制台(使用 Railway CLI 时为 railway ssh)并运行:

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

它会询问管理员的邮箱、姓名和密码。打开 Desk 地址下的 /dashboard 登录,首次登录会设置双重认证。

自动更新

在 Settings → Image Auto Updates 中,Railway 会检查镜像的新版本,并在你选择的时间窗口内重新部署:夜间、周末、任意时间或自定义时段。可以只更新补丁版本,也可以包括次版本。新的大版本(2.x)不会自动到来。

设置邮件

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

在 Variables 下添加:

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

Railway 会用新设置重新部署。

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

日常运维

  • 日志: 打开部署并查看 Logs。
  • 修改设置: 编辑 Variables,Railway 会带着新值重新部署。不要修改 DESK_SECRET_KEY。
  • 新增管理员,或忘记密码、丢失手机: 再次运行第 5 步的命令。
  • 固定版本: 把镜像改为完整标签,如 ghcr.io/modelriver/desk:1.0.1。
  • 手动更新: Redeploy。参见更新。
  • 只用一个副本。 服务保持一个副本:Desk 的限流和数据库不能在多个副本间共享。