Skip to content

[Bug]: Docker Compose 部署时如果安装到/root下则沙箱根目录默认解析到 /root 下,被安全黑名单拒绝,文档应明确说明 #2463

Description

@saintak

运行环境

v4.10.8

部署版本

社区版

异常情况

问题描述

使用 Docker Compose 部署 LangBot(启用 box profile),如果在宿主机的 /root 目录下运行 docker compose,沙箱(Box)功能无法启动,MCP 等依赖沙箱的能力报错:BoxValidationError: host_path /root/LangBot/docker/data/box/default/tenants/... is blocked for security

根因

  1. compose 默认值会把沙箱根目录解析到 /root 下docker-compose.yaml 中:
    volumes:
      - ${LANGBOT_BOX_ROOT:-${PWD}/data/box}:${LANGBOT_BOX_ROOT:-${PWD}/data/box}
    environment:
      - BOX__LOCAL__HOST_ROOT=${LANGBOT_BOX_ROOT:-${PWD}/data/box}
      - BOX__LOCAL__ALLOWED_MOUNT_ROOTS=${LANGBOT_BOX_ROOT:-${PWD}/data/box}

当在 /root/LangBot/docker 下执行 compose 时,${PWD} 展开为 /root/LangBot/docker,于是 host_root 变成 /root/LangBot/docker/data/box。

langbot-plugin SDK 将 /root 列为禁止挂载路径。box/security.py 中的 _BLOCKED_HOST_PATHS_POSIX 包含 /root、/etc、/proc、/sys、/dev、/boot、/run 等。SDK 在创建沙箱会话时校验 host_path,命中黑名单即拒绝。

改 config.yaml 无效:BOX__LOCAL__HOST_ROOT 环境变量优先级高于 config.yaml 中的 box.local.host_root,即使修改配置文件也会被 compose 环境变量覆盖。

####建议
在文档(Docker 部署部分)中明确说明:
如果启用沙箱功能,docker compose不要安装放在/root目录下.
沙箱根目录(LANGBOT_BOX_ROOT)不能放在 /root、/etc、/proc、/sys、/dev、/boot、/run 等 SDK 禁止挂载的路径下,建议使用 /opt/langbot-box、/data/langbot-box 等目录。
若宿主机部署目录本身在 /root 下(如 /root/LangBot),必须显式设置 LANGBOT_BOX_ROOT 指向 /root 之外的安全目录,并 docker compose up -d --force-recreate 重建容器使其生效。
补充提示:修改沙箱目录后需同时重建 langbot 和 langbot_box 两个容器(--force-recreate),仅 restart 不会重新解析环境变量/volume。
另外建议评估:compose 默认值 ${PWD}/data/box 是否容易让新用户在 /root 下部署时踩坑,可否在文档或启动时给出更明显的提示。

复现步骤

环境
部署方式:Docker Compose(rockchin/langbot:latest,启用 box profile)
宿主机:Linux,部署目录在 /root/LangBot/docker
langbot-plugin SDK:0.5.5

启用的插件

duckduckgo/duckduckgo
ihor-sokoliuk/searxng
链接摘要

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug?Bug或Bug修复相关 / maybe a bugeh: Improveenhance: 现有功能的改进 / improve current featurespd: Need designpending: 需要进一步设计的功能 / wait for us to design

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions