跳到主要内容

为团队设置 Open Terminal

当您的团队中有多人需要通过 Open WebUI 访问终端时,您有两种选择。

单个容器每用户独立容器
方式一个容器,内部划分独立账户每个用户获得自己专属的容器
隔离性文件是独立的,但它们共享同一个系统完全隔离 —— 所有内容都是独立的
设置仅需一个额外设置额外的编排服务
最适合您所信任的小型团队生产环境、较大型团队、非受信任用户
包含于Open Terminal(免费)Terminals(企业版)
多用户 Open WebUI 部署必备

如果您的 Open WebUI 实例有多个用户账户,并且跨用户共享同一个终端服务器连接,您必须使用以下两种隔离模式之一。如果不启用 OPEN_TERMINAL_MULTI_USER=true(或不通过 Terminals 启用每用户独立容器)使用单个 Open Terminal 容器,所有用户都将处于相同的 shell、相同的文件系统和相同的网络命名空间中 —— 这意味着任何用户都可以读取、修改或替换任何其他用户的文件,以共享用户的身份运行命令,并绑定共享端口。这在多用户 Open WebUI 中是不被支持的安全隐患配置。

对于具有非受信任用户的部署(开放注册、面向公众的门户、混合租户设置),方案 1 本身也是不够的 —— 文件隔离并不能延伸到网络命名空间,因此用户仍然可以通过共享容器上的绑定端口来相互访问。对于这些部署,请使用方案 2(通过 Terminals 启用每用户容器),或者在方案 1 的基础上叠加 TERMINAL_PROXY_HEADERS 以限制在用户浏览器中代理响应的功能。


方案 1:内置多用户模式

最简单的方法。只需添加一个设置,每个人就会自动获得一个独立的工作区。

docker run -d --name open-terminal -p 8000:8000 \
  -v open-terminal:/home \
  -e OPEN_TERMINAL_MULTI_USER=true \
  -e OPEN_TERMINAL_API_KEY=your-secret-key \
  ghcr.io/open-webui/open-terminal

会发生什么

当有人通过 Open WebUI 使用终端时,Open Terminal 会自动:

  1. 为该用户创建一个个人账户(基于他们的 Open WebUI 用户 ID)
  2. /home/{user-id} 设置一个私有主文件夹
  3. 在他们自己的账户下运行他们的所有命令
  4. 将他们的文件访问限制在他们自己的文件夹内

每个用户在文件浏览器中只能看到自己的文件。

共享 vs. 独立

每个用户独立共享
主文件夹和文件
运行命令
系统软件包
CPU 和内存
网络访问
适合小团队,不适合生产环境

这种模式给每个人都分配了自己专属的工作区,但他们都在同一个容器内运行。资源压力(内存、CPU)是共享的,网络命名空间也是共享的 —— 绑定了某个端口(例如 python -m http.server 8080)的用户可以通过该端口上的任何其他用户的终端服务器代理 URL 被访问。在此模式下,每用户的文件隔离无法延伸为每用户的网络隔离。

请将此模式用于受信任的小型团队 —— 不要用于广泛开放的部署。对于非受信任的多用户部署,请使用下面的方案 2(每用户独立容器),或者叠加 TERMINAL_PROXY_HEADERS 配置以将代理响应锁定到沙箱 CSP 中。


方案 2:使用 Terminals 的每用户独立容器

对于较大规模的部署或当您需要真正的隔离时,Terminals 为每个用户提供自己的容器,与其他人完全隔离。

  • 完全隔离 — 每个用户的容器都是独立的,拥有自己的文件、进程和资源
  • 按需生成 — 容器在用户启动会话时创建,并在空闲时进行清理
  • 资源控制 — 为每个用户或每个环境设置 CPU、内存和存储限制
  • 多种环境 — 为不同团队提供不同的设置(例如数据科学、软件开发)
  • Kubernetes 支持 — 支持 Docker、Kubernetes 和 k3s

提供两种部署后端:

  • Docker 后端 — 在单个 Docker 主机上运行。最适合中小型团队或没有 Kubernetes 的环境。
  • Kubernetes Operator — 使用基于 CRD 的 Operator 的生产级部署。通过 Helm chart 与 Open WebUI 一同部署。
需要企业版许可证

Terminals 需要 Open WebUI 企业版许可证。有关许可证详情,请参阅 Terminals 仓库

This content is for informational purposes only and does not constitute a warranty, guarantee, or contractual commitment. Open WebUI is provided "as is." See your license for applicable terms.