Skip to content

配置参考

Core 安装的每项设置都恰好只有一个归属位置。共有两类:

类型示例归属位置修改方式生效方式
进程设置公共 URL、端口、日志、Harness、执行并发度、审计保留期、OAuth 来源、Runtime 历史记录导出安装目录中的 .env(默认 ~/.oac/core)编辑 .env,然后运行 oac applyoac apply 会重新创建读取了这些已更改设置的服务
运行时设置沙箱后端和大小、节点、项目和密钥、默认模型、执行器凭据Core 的 PostgreSQL 数据库在 Web 中修改,或使用 Core 密钥调用 Core API(/core/v1)保存时无需重启 Core;节点会异步准备 Runtime 变更

Web 的 System 页面显示该安装的地址、默认模型和沙箱配置,并在 Startup settings 下以只读方式显示 Core 加载的进程设置。机密信息存放在 data/secrets/ 中,每项仅保存一份。没有任何配置文件定义项目或 API 密钥。

进程设置 ​

安装选项中的安装标志只会一次性写入 .env。要更改设置,请编辑 .env 并应用:

sh
~/.oac/core/oac apply

oac apply 的工作方式 ​

  1. 它用你改过的 .env 运行 oac-core check-config。值无效时什么都不改。
  2. 它运行 docker compose up -d --wait。Compose 只重新创建配置有变化的服务。
  3. 校验失败时,不会重新创建任何容器。重启会中断哪些操作,见停止和重启。

docker compose ps 展示服务。域名状态在 data/domain/status.json。

更改公共 URL ​

OAC_PUBLIC_URL 是应用、节点、沙箱和自托管执行器使用的唯一源地址。Core 从中派生守护进程 WebSocket URL、自托管 remote_url 和每个沙箱的连接地址。它是 http 或 https 源地址,也就是浏览器和节点使用的地址。安装通过 OAC_WEB_PORT 以 HTTP 提供 Web;前面有反向代理或托管平台时,由它们终止 HTTPS。

要更改它,先把反向代理指向新地址,然后编辑 OAC_PUBLIC_URL 并运行 oac apply。之后:

  • 使用旧地址的节点不会再获得新沙箱:请在 Web 中移除这些节点,然后重新添加。
  • 只有在旧地址仍可访问此 Core 时,现有沙箱和执行器才会继续工作。
  • 自托管执行器必须使用新的 remote_url 重启,并且其安装程序会拒绝为旧地址进行的安装:请创建新的自托管 Session,然后重新连接其主机。

设置 ​

OAC_HISTORY_SETTINGS_FILE 可以指向一个文件,其 headers 中含有导出凭据。该文件权限为 0600,这些 headers 绝不会出现在 oac 输出或安装报告中。模型提供商不属于进程设置;请参阅默认模型。

以下配置参考表保留英文原文。

VariableDefaultMeaning
OAC_PUBLIC_URLhttp://localhost:8080应用、节点、沙箱和自托管执行器使用的源地址。参阅修改公开 URL
OAC_HOST127.0.0.1compose.yaml 发布的 Web 绑定地址。install.sh 设置为 0.0.0.0
OAC_WEB_PORT8080Host port of Web
OAC_LOG_LEVELinfodebug, info, warn or error
OAC_LOG_FORMATautoauto, text or json
OAC_LOG_ADD_SOURCEunset1 adds source locations
OAC_EXECUTION_CONCURRENCY4Concurrent execution work, from 1 to 1024
OAC_DEFAULT_HARNESScodexHarness used when a request does not name one
OAC_HARNESSESEvery registered HarnessComma-separated Harnesses to enable besides the default one. Unknown names stop startup
OAC_WRITE_AUDIT_RETENTION2160hMinimum 1h
OAC_OAUTH_TRUSTED_ORIGINSunsetComma-separated HTTPS origins
OAC_HISTORY_SETTINGS_FILEunsetOptional Runtime history file. Sensitive; Core reports only whether it is configured

未设置或为空的值使用默认值。编辑 .env,然后运行 oac apply。Core 会在 GET /core/v1/installation 报告它加载的进程设置。oac-core check-config 会在不启动 Core 的情况下校验同一组环境变量。敏感设置只报告是否已配置。有关 Core 如何收集和保留 Runtime 历史记录,请参阅保留的历史记录。

运行时设置:Web ​

运行时设置存储在 Core 的数据库中。请在 Web 中修改;脚本使用同一个 Core API 和 Core 密钥。

设置Web 中的位置Core API注意事项
沙箱后端:Docker、microsandbox 或 E2BSystem → Manage sandbox configuration:设置向导,最后点击 Save configuration/core/v1/sandbox/deployment每个安装只能使用一个后端,在首次登录后选择。要改用其他后端,必须先执行 Reset deployment;请参阅更改沙箱配置
沙箱大小、Runtime 发行版、E2B 密钥和模板构建System → Manage sandbox configuration → Change resources/core/v1/sandbox/deploymentWeb 会在 standard-sizes.json 中推荐可用大小。现有沙箱会保留其大小和发行版。E2B 密钥仅可写入,并且已加密
节点及其容量Nodes:Add node;在节点页面上使用 Edit node 和 Remove node/core/v1/sandbox/enrollment-tokens、/core/v1/sandbox/nodes请参阅节点容量和节点指南
项目和 API 密钥Projects and keys:Create project、Rename、Issue key、Revoke、Archive/core/v1/projects密钥只显示一次;Core 存储其摘要
每个 Harness 的默认模型System → Default model configuration:Set/core/v1/harnesses/{harness}/model-configuration请参阅默认模型
自托管 Session 的执行器凭据Session log,然后进入 Session 页面:Executor credentials/core/v1/projects/{project_id}/environments/{environment_id}/executor-credentials请参阅自托管执行器

哪些 Harness 已启用以及默认 Harness 属于进程设置(core.harnesses、core.default_harness);System 会以只读方式显示它们。Core 管理 API 列出了所有 Core API 路由,部署契约 定义了沙箱字段、限制和更改规则。

节点容量 ​

生成 Add node 命令时,Core 会批准节点容量:Sandboxes at once(max_active,默认值为 2),并且仅对 microsandbox 还会批准 Retained sandboxes(max_retained,默认值为 8),其中 max_retained >= max_active >= 1。Docker 从不暂停沙箱,因此 Web 不会询问此项,并且 Core 会使 max_retained 保持等于 max_active。之后可使用 Edit node 修改这些值。预留和尚未确认的清理操作都会占用容量;调低限制不会停止任何正在运行的沙箱。节点自身的文件无法更改其容量、大小或 Runtime。

core.execution_concurrency 与此无关:它限制 Core 中并发执行的工作量。

默认模型 ​

在 System → Default model configuration 中设置默认值,或使用 PUT /core/v1/harnesses/{harness}/model-configuration。Core 使用 secrets/credential.key 加密提供商密钥,并且绝不返回这些密钥。模型执行 定义了请求字段和替换规则,优先级说明了哪些 Session 使用默认值。

Compose 安装 ​

发行版中的独立 Compose 文件从平台环境读取进程设置。OAC_PUBLIC_URL 为空时选用 http://localhost:8080。把它设成准确的公共源地址,不要带尾部斜杠,并在添加节点或执行器之前重新创建 Core 和 Web。平台终止 TLS,并把流量转到 web:8080。

初始化服务首次生成机密信息和安装 ID,随后在后续部署中验证它们。每项机密信息都只有一个持久来源;Core 的密钥摘要派生自 Web 的登录密钥。对于现有安装,初始化绝不会替换缺失或已更改的机密信息。Core 从 .env 读取进程环境。

数据目录路径内容读取方
database/PostgreSQL 数据PostgreSQL;初始化会检查它是否为空
secrets/database/生成的数据库密码PostgreSQL 和 Core
secrets/core/凭据加密密钥、安装 ID 和 Core 密钥摘要Core
secrets/web/生成的 Core 登录密钥Web
state/私有 Provider 状态Core
node-payload/已验证的节点安装元数据Web

初始化会准备该目录;应用服务以只读方式接收各自的机密目录。docker compose exec web oac-web core-key 把 Core 密钥打印到运维人员终端,不写入容器日志。数据库密码和凭据加密密钥绝不打印。

OAC_DATA_DIR 选择该目录,默认是 Compose 文件旁的 ./data。必须将该项目的定义和公共 URL 与该目录一同保留。仅删除机密目录不会重置安装;如果数据库已经存在,初始化会拒绝重新开始。Core 还会将安装 ID 与其数据库绑定。运行时设置仍存储在 Core 的数据库中。

Docker 节点配置 ​

节点安装程序会将 Docker 的提供商配置写入节点的配置文件。部署资源、Runtime 镜像和容量仍存储在 Core 的数据库中。

字段安装程序设置的值含义
hostunix:///var/run/docker.sock显式 Docker Engine 套接字
networkoac-node-<installation-id>Runtime 容器网络
seccomp_file<node-root>/runtime/seccomp.json所匹配发行版的 seccomp 配置文件
nested_sandboxtrue启用 Docker 适配器的 init 进程和 proc-mask 配置
extra_hosts可选额外的容器主机映射

Docker 适配器负责容器隔离、卷布局和生命周期行为。

安装目录 ​

安装程序会创建安装目录,默认路径为 ~/.oac/core,权限模式为 0700。机密文件为 0600。

路径内容修改者
.env进程设置。由你编辑的文件你,然后运行 oac apply;托管域名设置写入 OAC_PUBLIC_URL
compose.yaml发行版的服务定义。不要编辑发行版
oac管理命令,从 Core 镜像复制安装程序
data/secrets/web/core.keyCore 密钥oac rotate-core-key
data/secrets/core/credential.key加密 Core 在数据库中封存内容的密钥无。必须与数据库一同保留
data/secrets/core/core-key-digests.jsonCore 密钥的 SHA-256oac rotate-core-key
data/secrets/database/passwordPostgreSQL 密码无。PostgreSQL 仅在创建数据库时读取
data/database/PostgreSQL 数据PostgreSQL
data/node-payload/Web 在 /node-install/ 提供的节点文件初始化
data/state/私有 Provider 状态,包括 E2B 回执Core
.oac.lock安装锁会修改安装状态的 oac 命令

Compose 项目名为 oac-<10 hex digits>。服务包括 init、database、core 和 web。Core 启动时执行数据库迁移。web 提供控制台并把 /v1 和 /api/v1 转发到 Core,是唯一发布端口(OAC_WEB_PORT)的服务。没有服务持有 Docker 套接字。除 Docker 存储外,不会向安装目录之外写入任何内容。

附录:没有安装程序时的 Core 环境 ​

Core 只读取其环境。Compose 把 .env 插值进服务环境。Compose 必须为 2.26.0 或更高版本。如果你自行运行 Core,请设置这些变量;见服务指南。

变量设置来源
OAC_PUBLIC_URLpublic_url,或 Core 的回环源地址。Core 从中派生守护进程 WebSocket URL、自托管 remote_url、托管沙箱地址和部署的只读 core_url,绝不从请求标头派生。未设置时,Core 不运行 Runtime 网关,也不执行任何 Session
OAC_ADDR安装程序在容器中设置为 :8091。独立启动的 Core 在未设置或为空时,默认使用 127.0.0.1:8091
OAC_DATABASE_URL该安装不含密码的 PostgreSQL URL,并将 core.database_pool 作为 pool_* 查询参数附加到其中
OAC_DATABASE_PASSWORD_FILEdata/secrets/database/password。此时 URL 不得包含密码
OAC_CREDENTIAL_KEY_FILEdata/secrets/core/credential.key
OAC_CORE_KEY_DIGESTS_FILEdata/secrets/core/core-key-digests.json:一个包含 Core 密钥 SHA-256 的 JSON 数组
OAC_INSTALLATION_ID_FILEdata/secrets/core/installation.id:安装 ID,采用规范 UUID 格式。它会启用沙箱部署和节点路由,并要求设置 OAC_PUBLIC_URL 和 OAC_CORE_KEY_DIGESTS_FILE。如果 ID 与数据库记录的 ID 不一致,Core 会拒绝它,因此必须将两者一同保留
OAC_EXECUTION_CONCURRENCY、OAC_DEFAULT_HARNESS、OAC_HARNESSES、OAC_WRITE_AUDIT_RETENTION、OAC_OAUTH_TRUSTED_ORIGINS对应的进程设置。oac-core check-config 会在不启动 Core 的情况下校验它们
OAC_HISTORY_SETTINGS_FILE可选的 Runtime 历史文件。敏感;安装报告只说明它是否已设置
OAC_LOG_LEVEL、OAC_LOG_FORMAT、OAC_LOG_ADD_SOURCElog.*;Web 也读取这三个设置
OAC_PROVIDER_ROOT适配器构件的绝对根目录。Core 镜像设置为 /opt/oac。每个适配器都拥有此根目录下的辅助路径
OAC_PROVIDER_STATE_ROOT绝对私有状态根目录:Core 镜像中为 /state。每个适配器都拥有自己的子目录;E2B 使用 e2b/,该目录归 Core 的用户所有,不允许组或其他用户访问。将其与数据库和 credential.key 一起备份;不要将其挂载到 Web 或 Runtime 中
OAC_NATIVE_INSTALLER_DIR自托管守护进程安装程序:Compose 文件中为 /opt/oac/native-installers。未设置时 Core 不提供安装程序。提供目录清单前,Core 会将其与自身发行版进行核对

Core 会记录所加载文件的路径,但绝不记录环境变量的值或文件内容。

显式 OAuth 受信任源无效时,Core 会停止启动。条目必须是不含凭据、查询参数和非根路径的 HTTPS 源地址。Vaults 负责刷新和网络策略。私有颁发者还需要受信任的 CA:独立管理的 Unix Core 可以使用 Go 的 SSL_CERT_FILE PEM CA-bundle 覆盖机制,从而保留证书验证。托管安装没有自定义 CA 设置。

附录:没有安装程序时的 Web 环境 ​

Compose 为 Web 设置这些变量。仅在不使用 Compose 运行控制台时才自行设置。该安装的机密信息中,Web 只收到 data/secrets/web/core.key。

变量默认值含义
OAC_WEB_ADDR:8080监听地址
OAC_WEB_ORIGINhttp://127.0.0.1:8080面向浏览器的准确源地址,可以使用 HTTP 或 HTTPS,且不得包含路径。Host 和源地址检查使用此值;HTTPS 会使 Session Cookie 具备 Secure 属性
OAC_WEB_UPSTREAMhttp://core:8091Core 的源地址,可以使用 HTTP 或 HTTPS,且不得包含凭据、查询参数或路径
OAC_WEB_CORE_KEY_FILE/admin/core.key常规文件的绝对路径,该文件没有组或其他用户权限,并保存 Core 密钥:至少 32 个字符、不含空白字符、最大 4 KiB
OAC_WEB_DIST/www已构建控制台的绝对目录;必须包含 index.html
OAC_WEB_NODE_PAYLOAD_DIR未设置所匹配发行版的节点载荷(即安装程序的 node-payload/)的绝对路径。未设置时,不提供 /node-install/*,且 Add node 不可用

变量不存在时会应用默认值;显式空值会按已提供的值进行验证。无效的 OAC_WEB_* 值会阻止控制台启动,并显示一条指明变量名的消息。控制台还会读取 OAC_LOG_LEVEL、OAC_LOG_FORMAT 和 OAC_LOG_ADD_SOURCE(Core 环境);未知值会回退到其默认值。对于不在同一台计算机上的任何浏览器,请使用 HTTPS。

基于 MIT 许可证发布。