Railway 可以直接运行 Desk 已发布的镜像,并按计划自动更新。开始前请先阅读所有部署方式的共同要求。
1. 添加镜像
在 Railway 项目中选择 New → Docker Image,输入:
ghcr.io/modelriver/desk:1
2. 添加数据卷
为服务添加一个数据卷,挂载到 /data。Desk 的所有内容都保存在这里:文章、笔记、数据库和品牌设置。
3. 设置变量
在 Variables 中添加:
| 变量 | 值 |
|---|---|
MODELRIVER_API_KEY | 你的项目 API 密钥 |
DESK_SECRET_KEY | openssl rand -base64 32 的输出 |
DESK_IDENTITY_SECRET | openssl rand -base64 48 的输出 |
CLIENT_IP_HEADER | x-real-ip,Railway 存放访客地址的请求头,限流需要它 |
RAILWAY_RUN_UID | 0 |
Railway 挂载的数据卷属于 root。设置 RAILWAY_RUN_UID=0 后,Desk 只在启动时以 root 接管 /data,之后以无特权用户运行。
4. 分配地址
在 Settings → Networking 中为 3000 端口生成域名,或添加自己的域名并创建 Railway 显示的 DNS 记录。然后在 Variables 中添加 APP_URL,填入该地址。
5. 创建第一位管理员
打开服务的 SSH 控制台(使用 Railway CLI 时为 railway ssh)并运行:
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 下添加:
EMAIL_PROVIDER=resendRESEND_API_KEY=re_…EMAIL_FROM="Acme Support <[email protected]>"SUPPORT_REPLY_TO=support@acme.comRailway 会用新设置重新部署。
然后在 后台 → 设置 → Send a test email(发送测试邮件) 中检查。
日常运维
- 日志: 打开部署并查看 Logs。
- 修改设置: 编辑 Variables,Railway 会带着新值重新部署。不要修改
DESK_SECRET_KEY。 - 新增管理员,或忘记密码、丢失手机: 再次运行第 5 步的命令。
- 固定版本: 把镜像改为完整标签,如
ghcr.io/modelriver/desk:1.0.1。 - 手动更新: Redeploy。参见更新。
- 只用一个副本。 服务保持一个副本:Desk 的限流和数据库不能在多个副本间共享。