扩展与部署
远程部署
连接团队后端,配置访问与执行器,了解本地和远端的数据边界。
对应版本 1.9.11 · 2026-10-17
Mosael 默认整套跑在你自己的机器上。但后端可以搬到服务器上,桌面端指过去 —— 几个人共用一份素材库、一份工作流、一份发布队列。
搬之前先想清楚:数据从此在那台服务器上。访问仍需登录与工作区成员权限;成员、注册方式、本机引擎、出站代理和内网访问由部署管理员在管理控制台里管 —— 服务器上的工作流、智能体默认只许访问公网,要调同一内网里的服务(NAS、本地模型)得在「内网访问」里放行。
桌面端指向远程后端#
在「设置 → 后端」里把服务器改成后端的地址即可。它决定这台桌面端把请求发到哪儿 ——
本机默认是 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。所以域名要一个一个写。
顺带:部署到公网之后,第一件事是把开放自助注册关掉(「管理 → 部署设置 → 谁能加入」),改发邀请。关掉之后,Google / Apple 这类第三方登录也建不了新号。
服务端部署时还可以用 MOSAEL_ALLOWED_HOSTS(逗号分隔)写明这台后端允许被哪些域名或 IP 访问:配了才检查 Host 头,用来挡 DNS
rebinding。桌面版不用配,它只认本机的名字。
后端那台电脑上的文件归部署管理员#
后端读得到它所在那台电脑上的文件。工作流的「上传文件」节点可以填本机路径、桌面端可以按路径导入素材、 智能体可以在本机跑代码 —— 单机用时这台电脑就是你自己的;共享给同事之后,「本机路径」指的就是别人的电脑。
所以这些读法按人分:
- 部署管理员整台电脑都能读,也能批准「在本机运行代码」和 Blender 代码卡。单机用时你就是管理员,什么都不用改;
- 其他成员只能用素材库里的素材,或者管理员在「管理 → 部署设置 → 共享文件夹」里列出来的文件夹。
路径先展开软链接和
..再比对,共享文件夹里放一个指向别处的链接借不了道; - 浏览器自动化只打开
http(s)网址,不打开file://。
同事填了不在共享文件夹里的路径,那一步会失败,并说明请管理员共享所在文件夹,或改用素材库里的素材。
执行器要跨得过网络#
发布、浏览器自动化这些走的是 worker 通道,它不带用户会话,认的是一把共享密钥。本机部署时 后端把密钥写进自己的数据目录,执行器读文件 —— 而后端在另一台机器上时,那份文件要么过期 要么根本不存在,表现是发布、浏览器自动化、外部执行的任务一起 401,看起来像三样东西各自坏了。
两边配同一个 MOSAEL_WORKER_KEY 即可:
# 服务器和跑执行器的那台机器上都配同一个值
MOSAEL_WORKER_KEY="一段足够长的随机串"为什么不是"用用户会话换一张令牌":这条通道是全部署范围的 —— 认领待发布任务时认领的是 任何人的任务。挂到用户会话上,等于共享服务器上任何登录用户的执行器都能认领所有人的任务, 那是提权。持有这把密钥的就是"这个部署的执行器"。
发布仍然需要一台桌面#
发布不是 HTTP 调用,是在真实浏览器里替你操作:登录态、验证码、平台改版都要一个真的 浏览器窗口。所以后端只负责入队,干活的是 Electron 里的发布执行器 —— 网页本身不包含桌面发布执行器。
服务器上的后端 + 你自己机器上的桌面端,是可以的:桌面端连过去,发布任务在你这台机器上跑。
多个发布执行器#
支持。每个执行器有自己的稳定身份(装机时生成,可用 MOSAEL_WORKER_ID 覆盖 ——
容器里数据目录常常是临时的)。
身份是必需的:回收"卡住的任务"有一条判据是「这个账号不在我当前在跑的集合里」,而这句话 只有认领它的那个执行器说了才算数。没有身份时,两个执行器会互相把对方正在跑的任务标成失败。
同一个平台账号任何时刻只会被一个执行器驱动 —— 登录态和上传队列都只有一份。
