使用指南
远程部署
后端放到服务器上,几个人共用一份数据。以及为什么发布仍然要一台真实的桌面。
Mosael 默认整套跑在你自己的机器上。但后端可以搬到服务器上,桌面端指过去 —— 几个人共用一份素材库、一份工作流、一份发布队列。
搬之前先想清楚:数据从此在那台服务器上。谁能连到它,谁就在你的工作区里。
桌面端指向远程后端#
设置里的服务端地址改成后端的地址即可。它决定这台桌面端把请求发到哪儿 ——
本机默认是 http://127.0.0.1:8800。
后端要放行来源#
浏览器会拦掉跨来源的请求,而拦下来的报错看起来像"后端坏了"。所以服务器上要把允许的来源
一个一个写进 MOSAEL_CORS_ORIGINS(逗号分隔):
MOSAEL_CORS_ORIGINS="https://studio.example.com,https://studio2.example.com"
桌面端自己那几个来源(Electron 的 file:// 等)一直是放行的,配这一项不会把它们挤掉。
不支持通配符,这是有意的。/api/auth 按性质是开放的:首次运行的空库上,注册对任何能连到
端口的人都成功 —— 通配符下,用户碰巧打开的任何网页都能在这个后端上给自己开个号并读回
token。所以域名要一个一个写。
顺带:部署到公网之后,第一件事是把开放注册关掉(设置 → 账号)。
执行器要跨得过网络#
发布、浏览器自动化这些走的是 worker 通道,它不带用户会话,认的是一把共享密钥。本机部署时 后端把密钥写进自己的数据目录,执行器读文件 —— 而后端在另一台机器上时,那份文件要么过期 要么根本不存在,表现是发布、浏览器自动化、外部执行的任务一起 401,看起来像三样东西各自坏了。
两边配同一个 MOSAEL_WORKER_KEY 即可:
# 服务器和跑执行器的那台机器上都配同一个值
MOSAEL_WORKER_KEY="一段足够长的随机串"
为什么不是"用用户会话换一张令牌":这条通道是全部署范围的 —— 认领待发布任务时认领的是 任何人的任务。挂到用户会话上,等于共享服务器上任何登录用户的执行器都能认领所有人的任务, 那是提权。持有这把密钥的就是"这个部署的执行器"。
发布仍然需要一台桌面#
发布不是 HTTP 调用,是在真实浏览器里替你操作:登录态、验证码、平台改版都要一个真的 浏览器窗口。所以后端只负责入队,干活的是 Electron 里的发布执行器 —— 网页版无法发布。
服务器上的后端 + 你自己机器上的桌面端,是可以的:桌面端连过去,发布任务在你这台机器上跑。
多个发布执行器#
支持。每个执行器有自己的稳定身份(装机时生成,可用 MOSAEL_WORKER_ID 覆盖 ——
容器里数据目录常常是临时的)。
身份是必需的:回收"卡住的任务"有一条判据是「这个账号不在我当前在跑的集合里」,而这句话 只有认领它的那个执行器说了才算数。没有身份时,两个执行器会互相把对方正在跑的任务标成失败。
同一个平台账号任何时刻只会被一个执行器驱动 —— 登录态和上传队列都只有一份。
