跳到主要内容

配置参考

所有配置均通过环境变量设置。

控制平面(muvee-server

变量默认值说明
DATABASE_URLpostgres://muvee:muvee@localhost:5432/muvee?sslmode=disablePostgreSQL 连接字符串
MIGRATIONS_DIR./db/migrationsSQL 迁移文件路径
PORT8080HTTP 监听端口
BASE_DOMAINlocalhost根域名;项目以 {prefix}.BASE_DOMAIN 的形式对外提供服务。同时通过 /api/agent/config 下发给 Agent。
BASE_DOMAINS可选,逗号分隔的额外根域名列表,让同一实例在多个 apex 域名下服务(多域名)。BASE_DOMAIN 仍为 canonical 默认值。详见下方 多域名
GOOGLE_CLIENT_IDGoogle OAuth2 客户端 ID。设置后启用 Google 登录。详见 Google OAuth2
GOOGLE_CLIENT_SECRETGoogle OAuth2 客户端密钥
GOOGLE_REDIRECT_URLhttp://localhost:8080/auth/google/callbackGoogle OAuth2 回调地址
FEISHU_APP_ID飞书 / Lark App ID。设置后启用飞书登录。详见 飞书 / Lark
FEISHU_APP_SECRET飞书 / Lark App Secret
FEISHU_REDIRECT_URLhttp://localhost:8080/auth/feishu/callback飞书 OAuth2 回调地址
FEISHU_BASE_URLhttps://open.feishu.cn飞书 API 基础地址。国际版 Lark 设置为 https://open.larksuite.com
WECOM_CORP_ID企业微信 CorpId(企业ID)。设置后启用企业微信登录。详见 企业微信
WECOM_CORP_SECRET企业微信自建应用的 App Secret
WECOM_AGENT_ID企业微信自建应用的 AgentId
WECOM_REDIRECT_URLhttp://localhost:8080/auth/wecom/callback企业微信 OAuth2 回调地址
DINGTALK_CLIENT_ID钉钉 AppKey。设置后启用钉钉登录。详见 钉钉
DINGTALK_CLIENT_SECRET钉钉 AppSecret
DINGTALK_REDIRECT_URLhttp://localhost:8080/auth/dingtalk/callback钉钉 OAuth2 回调地址
ALLOWED_DOMAINS(允许所有)允许登录的邮箱域名,逗号分隔(如 company.com)。仅对 Google 生效;飞书/企微/钉钉在无法获取真实邮箱时会生成合成地址(*.local),这类地址会自动跳过域名校验。
ADMIN_EMAILS逗号分隔的邮箱地址列表,登录时自动提升为 admin 角色,可访问 traefik.BASE_DOMAIN
JWT_SECRETchange-me-in-production用于签发 JWT 会话令牌的密钥
AGENT_SECRETAgent ↔ 服务器认证的共享密钥(所有 Agent 上设置相同的值)。未设置时,Agent 端点无需认证(仅用于开发环境)。
AUTH_SERVICE_URLhttp://muvee-authservice:4181muvee-authservice 的内部 URL;在为 Traefik 生成项目级 ForwardAuth 配置时使用
REGISTRY_ADDRlocalhost:5000Docker 镜像仓库地址。通过 /api/agent/config 下发给 Agent——Agent 无需在本地设置此项。
REGISTRY_USER镜像仓库基础认证用户名。下发给 Agent——Agent 启动时自动执行 docker login
REGISTRY_PASSWORD镜像仓库基础认证密码。下发给 Agent。
SECRET_ENCRYPTION_KEY64 字符十六进制字符串(32 字节),用于以 AES-256-GCM 加密静态密钥。启用 Secrets 功能时必填。使用 openssl rand -hex 32 生成。
VOLUME_NFS_BASE_PATH控制平面主机上用于项目工作区卷的 NFS 基础目录(如 /mnt/nfs/volumes)。每个项目的子目录会在该路径下自动创建。同时通过 /api/agent/config 下发给部署 Agent,Agent 使用该路径将卷 bind mount 到容器中。未设置时工作区功能不可用。
DATASET_NFS_BASE_PATH数据集 NFS 基础目录(如 /mnt/nfs/datasets)。Dataset 的 nfs_path 会被视为该目录下的相对子路径(例如 warehouse/mnt/nfs/datasets/warehouse)。相关机器需使用相同绝对路径挂载。控制平面 server 需要可写(:rw——它不仅跑文件监控,还直接处理 dataset 文件操作(上传 / 删除 / 建目录 / 移动 / 复制),因此 NFS export 必须允许 server 主机写入。Deploy agent 只需要只读(:ro,用于 rsync 与 bind-mount 到用户容器)。

ForwardAuth 服务(muvee-authservice

变量默认值说明
PORT4181HTTP 监听端口
GOOGLE_CLIENT_ID与控制平面相同
GOOGLE_CLIENT_SECRET与控制平面相同
FORWARD_AUTH_REDIRECT_URLhttp://localhost:4181/_oauthForwardAuth 的 OAuth2 回调 URL。生产环境设置为 https://BASE_DOMAIN/_oauth,并在 Google Cloud Console 中与 GOOGLE_REDIRECT_URL 一起注册。
BASE_DOMAIN根域名。必填,用于将 session cookie 共享给所有 *.BASE_DOMAIN 子域名(如 traefik.BASE_DOMAIN、各 project 子域名)。
JWT_SECRET必须与控制平面的值一致
ADMIN_EMAILS必须与控制平面的值一致;用于控制 /verify-admin(Traefik 控制台)访问权限

Agent(muvee-agent

变量默认值说明
NODE_ROLE(必填)builderdeploy
CONTROL_PLANE_URLhttp://localhost:8080控制平面的内网地址(如 http://10.0.0.1:8080)。不要使用公开域名——详见 Agent 节点
AGENT_SECRET必须与控制平面上设置的值一致
DATA_DIR/muvee/data本地数据集缓存根目录(部署节点使用)
HOST_IP(自动检测)Traefik 用来访问此节点上容器的 IP 地址。自动从到达 CONTROL_PLANE_URL 所使用的网络接口检测。若自动检测结果有误(如多网卡主机),可手动覆盖。
镜像仓库凭据和 BASE_DOMAIN 自动下发

Agent 在启动时通过 GET /api/agent/config 从控制平面获取 REGISTRY_ADDRREGISTRY_USERREGISTRY_PASSWORDBASE_DOMAIN。这些配置只需在控制平面上设置一次——无需在各个 Agent 节点上单独配置。

多域名

默认情况下 muvee 只在单个 BASE_DOMAIN 下服务。要让同一实例在多个 apex 域名下服务——例如一个海外域名和一个国内/ICP 域名——把 BASE_DOMAINS 设为逗号分隔的额外根域名列表:

BASE_DOMAIN=muveeai.com          # canonical 默认值
BASE_DOMAINS=muveeai.com,muvee.ai

BASE_DOMAIN 仍是 canonical 回退值(当请求 host 不匹配任何已配置域名时使用)。每个请求 muvee 会解析出 host 所属的根域名,因此以下都跟随用户实际所在的域名:

  • 认证 cookie 按匹配到的根域名设置 Domain(在 muvee.ai 登录得到 .muvee.ai cookie,在其子域名间共享)。
  • OAuth redirect_uri rebase 到匹配的根域名,并保持每个域名单一 canonical host(如 https://app.muvee.ai/_oauth/google),使项目子域名仍经面板/authservice host 中转。
  • Traefik 路由用单条 OR 的 Host() 规则匹配每个项目/隧道前缀在各根域名下的 host,每个 host 各签一张证书。
  • CORS / 来源校验接受每个已配置根域名的 canonical 来源及其任一子域名。

每个额外根域名的前提

  • DNS:与 canonical 域名一样,把 <base>(A 记录)和 *.<base>(通配 A 记录)指向本服务器 IP。
  • TLS:额外根域名没有通配证书——每个项目子域名各自通过 Let's Encrypt HTTP-01 申请证书,因此该域名必须在 80 端口公网可达以完成 ACME 挑战。
  • OAuth Provider 后台:把每个域名的回调 URL 注册到你使用的每个 provider,如 https://app.<base>/auth/google/callback(控制面板登录)和 https://app.<base>/_oauth/google(per-project ForwardAuth)。

运行时设置(管理员后台)

少数几个开关存放在 system_settings 表里,通过管理员后台编辑, 而不是环境变量。改动无需重启即可生效。

默认值说明
auto_deploy_master_enabledtrue两条自动部署触发路径的全局开关。
auto_deploy_poll_interval_seconds60外部仓库的 git 轮询间隔(最小 10)。
auto_deploy_image_watch_interval_seconds600compose 项目的 image-digest 轮询间隔(最小 60)。

完整行为与项目级开关,详见 自动部署