Files
AgentLab/deploy/agentlab.env
T
ThearchyHelios 6af4e396b9 生产部署:prod.sh 直接运行,package-docker.sh 打 Docker 离线包(镜像 + 一键部署脚本 + 配置 + 说明)
- 服务端可以托管前端构建产物(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
2026-09-30 09:48:16 +08:00

70 lines
4.4 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 和额外下载的运行时与镜像,离线包默认不支持。