mirror of
https://github.com/ThearchyHelios/AgentLab.git
synced 2026-11-15 00:01:58 +00:00
6af4e396b9
- 服务端可以托管前端构建产物(AGENTLAB_WEB_DIST):页面路由回退到 index.html,/api 下不存在的路径照旧是 JSON 404, 挡住路径穿越;index.html 不缓存,assets/ 带哈希的文件长缓存;没设时行为完全不变 - scripts/prod.sh:不用 Docker 的生产运行。按需构建前端,单进程、不热重载,默认只听本机,--host 开放到局域网并提示没有登录 - Dockerfile(多阶段构建,Linux 镜像):前端在构建机架构上构建,运行阶段用 python:3.12-slim,依赖装进独立的 venv, 以非 root 用户(uid 10001)运行,数据在 /data,带健康检查;.dockerignore 排除 .env、data/、各种库文件,镜像里实测没有密钥和数据库 - scripts/package-docker.sh:构建指定平台的镜像(默认按本机架构,可选 linux/amd64),打成 release/agentlab-<版本>-linux-<架构>.tar,里面有 image.tar、deploy.sh、agentlab.env、README.md、SHA256SUMS - deploy/deploy.sh:目标机上只依赖 Docker,离线可用。install / start / stop / restart / status / logs / upgrade / uninstall; 检查架构和配置,自动导入镜像,替换容器时保留旧容器以便回退,数据永远保留,日志轮转 - 修正 bubblewrap 的可用性判断:以前只看有没有装 bwrap,容器里和 Ubuntu 24.04 默认配置下装了却建不了命名空间, 每次执行代码都失败;现在真起一次试,不能用就退回下一个后端,并写明原因 - README 增加「生产部署」一节,部署细节见 deploy/README.md
70 lines
4.4 KiB
Bash
70 lines
4.4 KiB
Bash
# AgentLab 一键部署的配置。改完运行 ./deploy.sh(已经在跑的,改完运行 ./deploy.sh install 让它生效)。
|
||
#
|
||
# 写法(这个文件直接交给 docker run --env-file,规矩和 shell 不一样):
|
||
# - 一行一个 KEY=VALUE,等号两边不要空格;
|
||
# - 值不要加引号,引号会原样变成值的一部分;
|
||
# - 注释只能单独成行,不能写在值后面。
|
||
#
|
||
# 前四项(HOST_PORT、BIND_ADDR、DATA_DIR、CONTAINER_NAME)和 ENABLE_BWRAP 是给 deploy.sh 用的;
|
||
# 其余的变量原样传进容器,给 AgentLab 自己用。
|
||
|
||
# ---- 访问 ----
|
||
# 宿主机上对外的端口。浏览器打开 http://<这台机器的地址>:HOST_PORT
|
||
HOST_PORT=8000
|
||
# 监听哪个地址。0.0.0.0 表示所有网卡,同一网络里的电脑、手机都能打开。
|
||
#
|
||
# 注意:AgentLab 没有登录。同一网络里打得开页面的人都能用它——跑工作流、花你配的模型额度、
|
||
# 读你接入的数据源、在沙箱里执行代码。只在信得过的网络里开,并用防火墙限制来源。
|
||
# 只给本机用(比如另配反向代理做登录),改成 127.0.0.1。
|
||
BIND_ADDR=0.0.0.0
|
||
|
||
# ---- 数据 ----
|
||
# 数据目录:数据库、执行断点、上传的文件、沙箱工作区,还有加密密钥 .secret_key 都在这里。
|
||
# 要备份的就是这个目录(丢了 .secret_key,存进去的 API Key 就解不开了)。
|
||
# 相对路径以 deploy.sh 所在的目录为准。升级时解到新目录的,记得指回原来的数据目录(写绝对路径最稳)。
|
||
# deploy.sh 会把它的属主改成容器里的用户(uid 10001),备份和删除要用 sudo。
|
||
DATA_DIR=./data
|
||
|
||
# ---- 容器 ----
|
||
CONTAINER_NAME=agentlab
|
||
|
||
# ---- 模型接入(可选)----
|
||
# 填了的话,第一次启动时(库里还没有任何模型接入)自动导入成模型接入。之后再改这里不会更新已导入的,
|
||
# 要到界面「设置 → 模型接入」里改。也可以都留空,启动后在「设置 → 模型接入」里配,Key 加密存进数据目录。
|
||
# 不配也能用:内置的演示模型不需要 Key,编排链路能完整走一遍。
|
||
# ANTHROPIC_API_KEY=
|
||
# 用中转网关时填这两个(以 Authorization: Bearer 发送),这时不填 ANTHROPIC_API_KEY
|
||
# ANTHROPIC_BASE_URL=
|
||
# ANTHROPIC_AUTH_TOKEN=
|
||
# OPENAI_API_KEY=
|
||
# 配了就用 Tavily 做网页搜索,否则退回 DuckDuckGo
|
||
# TAVILY_API_KEY=
|
||
|
||
# ---- 代理(可选)----
|
||
# 机器要经代理才能访问模型接口时填。NO_PROXY 里的地址不走代理。
|
||
# HTTPS_PROXY=http://proxy.example.internal:3128
|
||
# NO_PROXY=localhost,127.0.0.1
|
||
|
||
# ---- 代码沙箱 ----
|
||
# auto:按 microvm → bubblewrap → local 挑第一个能用的。可选值 auto | bubblewrap | local | off
|
||
#
|
||
# 容器里实测(Docker 默认权限):bubblewrap 无法创建命名空间,auto 自动退回 local,也就是在容器里
|
||
# 起一个普通子进程执行代码。这时隔离的边界只有容器本身:代码伤不到宿主机,但和 AgentLab 在同一个容器、
|
||
# 同一个用户下,读得到数据目录里的数据库和加密密钥、读得到传进容器的 API Key、能联网。
|
||
# 只运行你信得过的工作流;不需要执行代码就设成 off。
|
||
AGENTLAB_SANDBOX_BACKEND=auto
|
||
#
|
||
# 想让代码在 bubblewrap 里执行(看不到数据目录、看不到别的进程、默认断网),把下面改成 1,
|
||
# 然后运行 ./deploy.sh install。deploy.sh 会给容器加三项权限:
|
||
# --security-opt seccomp=unconfined 放开 Docker 默认的系统调用过滤,才能创建命名空间
|
||
# --security-opt systempaths=unconfined 取消对 /proc、/sys 部分路径的遮蔽,才能在沙箱里挂载 /proc
|
||
# --security-opt apparmor=unconfined Ubuntu 上 Docker 默认的 AppArmor 配置不允许沙箱里的挂载
|
||
# 代价:整个容器少了系统调用过滤和这几处遮蔽,内核暴露给容器的面变大。AgentLab 自己仍以非 root 运行。
|
||
# 实测在 Docker Desktop(arm64)上生效,沙箱类型显示为 bubblewrap。Ubuntu 24.04 默认还限制非特权
|
||
# user namespace,开了之后「设置 → 运行环境」里仍显示 local 的话,要在宿主机上执行
|
||
# sudo sysctl kernel.apparmor_restrict_unprivileged_userns=0
|
||
# 这一步会放宽整台机器的限制,自行权衡。
|
||
ENABLE_BWRAP=0
|
||
#
|
||
# microVM(独立内核)需要 /dev/kvm 和额外下载的运行时与镜像,离线包默认不支持。
|