多用户部署方案
团队共用一个 OpenClaw —— 权限隔离很重要
团队共用一个 OpenClaw
自己用的话一个容器就够了,但如果是团队用,问题就来了:谁用了多少 Token?怎么防止张三看到李四的对话?一个人跑大模型把 CPU 吃满了怎么办?
多用户部署的核心就三个字:隔离。账号隔离、数据隔离、资源隔离,缺一不可。
四步搞定多用户
1
用户管理
给每个人创建独立账号,设置强密码或对接 SSO(企业内部的统一登录系统)。别让大家共用一个账号,出了问题都分不清是谁干的。
2
权限配置
不同角色给不同权限。管理员可以改配置、看所有人的用量;普通用户只能用自己的会话。按需分配,最小权限原则。
3
资源隔离
给每个用户或用户组设置资源上限 —— CPU、内存、Token 用量。防止一个人跑疯了影响所有人。
4
审计日志
记录谁在什么时候做了什么操作。出了安全问题能追溯,用量统计也能出报表。合规要求高的企业这个是必须的。
方案对比
单实例多用户
一个 OpenClaw 容器,多个用户账号
- 部署简单,资源利用率高
- 通过应用层做用户隔离
- 适合小团队(10 人以内)
- 一个容器挂了所有人都用不了
VS
每人独立容器
每个用户跑自己的容器
- 完全隔离,互不影响
- 资源消耗大(每个容器都要占内存)
- 用 Traefik 或 Nginx 做路由
- 适合对隔离性要求高的场景
多用户容器编排(Traefik 方案)
用 Traefik 做反向代理和路由,每个用户一个独立容器,通过子域名或路径区分:
docker-compose.yml — Traefik + 多用户
services:
traefik:
image: traefik:v2.10
container_name: traefik
restart: always
ports:
- "80:80"
- "443:443"
- "8080:8080" # Traefik Dashboard
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./traefik.yml:/etc/traefik/traefik.yml
- ./certs:/certs
networks:
- openclaw-net
# 用户 A
openclaw-alice:
image: openclaw/openclaw:latest
container_name: openclaw-alice
restart: always
labels:
- "traefik.enable=true"
- "traefik.http.routers.alice.rule=Host(`alice.openclaw.example.com`)"
- "traefik.http.services.alice.loadbalancer.server.port=3000"
volumes:
- ./users/alice/data:/app/data
- ./users/alice/config:/app/config
deploy:
resources:
limits:
cpus: "2.0"
memory: 2G
networks:
- openclaw-net
# 用户 B
openclaw-bob:
image: openclaw/openclaw:latest
container_name: openclaw-bob
restart: always
labels:
- "traefik.enable=true"
- "traefik.http.routers.bob.rule=Host(`bob.openclaw.example.com`)"
- "traefik.http.services.bob.loadbalancer.server.port=3000"
volumes:
- ./users/bob/data:/app/data
- ./users/bob/config:/app/config
deploy:
resources:
limits:
cpus: "2.0"
memory: 2G
networks:
- openclaw-net
networks:
openclaw-net:
driver: bridge
企业级多用户推荐用 K8s Namespace 隔离。每个用户或团队一个 Namespace,用 ResourceQuota 控制资源上限,NetworkPolicy 控制网络隔离。比 Docker Compose 管理起来方便得多,尤其是用户数超过 10 个的时候。详见 K8s 部署教程。
用户管理脚本
快速添加新用户的脚本,自动创建目录和容器:
添加新用户
#!/bin/bash
# 添加新用户脚本
USERNAME=$1
if [ -z "$USERNAME" ]; then
echo "Usage: ./add_user.sh "
exit 1
fi
# 创建用户数据目录
mkdir -p "./users/$USERNAME/data"
mkdir -p "./users/$USERNAME/config"
# 生成用户配置
echo "User $USERNAME created"
echo "Access URL: https://$USERNAME.openclaw.example.com"
# 重新部署(Traefik 会自动发现新容器)
docker compose up -d
嫌自己搭多用户太麻烦?MOLILI 企业版自带多用户管理、权限控制、用量统计、审计日志,开箱即用,省得自己折腾。
了解 MOLILI →