Acahti自托管与管理
安全
Acahti 的信任边界。一个公开网关,私有内核,以人的身份认证的 Agent,以及写入后不会再被取出的密钥。
唯一的公开入口#
实例只暴露一个网关,其余一切保持私有。
| 公开(经由网关) | 私有 |
|---|---|
Web 应用(/ui,会话 cookie) |
Forgejo 自身的网页界面和 /api/v1 |
MCP(/mcp,OAuth 或个人访问令牌) |
Woodpecker 的界面和 /ci |
REST 和 CLI(/acahti/v1) |
供执行节点使用的 Woodpecker gRPC 端口 |
基于 HTTPS 的 Git(/<org>/<repo>.git) |
PostgreSQL |
制品仓库源(/api/packages) |
内核的路径经由网关访问时返回 404。产品内容(文档、skill)完全不由实例提供,而是放在本站。
凭据#
| 凭据 | 适用于 | 说明 |
|---|---|---|
| 访问令牌 | MCP、REST、CLI、Git、制品 | 在头像菜单 →「访问令牌」中创建。代表该成员。删除即吊销 |
| OAuth 访问令牌 | MCP、REST、Git、制品 | 成员授权 MCP 客户端后签发给该客户端;有效期 90 天,用刷新令牌续期 |
| 账号密码 | 网页登录、Git、制品、通过 HTTP Basic 访问 REST | CLI 从不发送。MCP 不接受。只有当邀请密码由 Acahti 生成时,管理员才能看到它;替换成员自己设置的密码需要显式确认的重置操作 |
| 会话 cookie | Web 应用、REST | 仅限浏览器 |
在 Acahti 中,SSH 密钥在任何地方都不是凭据。令牌拥有该成员的全部权限;本版本不支持按任务委派权限。Agent 会被告知绝不要把令牌粘贴到聊天中。
密钥#
- 流水线密钥保存在控制面。值从不被列出或返回;没有读取 API。
- 只有组织管理员(组织范围)和仓库管理员(仓库范围)可以列出名称或写入值。
- 流水线步骤只有在其 YAML 中点名某个密钥时才会收到它。
- 外部系统(仓库源、集群)的凭据以具名密钥保存,从不放进 git 或
with:。
执行#
- 控制面和「执行节点」是不同的主机。不受信任的流水线代码绝不会在控制面的数据旁边运行。
- 网关在任务开始前展开官方 pipe;执行节点按收到的内容和注入的环境变量执行。
- 执行节点通过你的局域网访问网关。切勿把 gRPC 端口暴露到互联网。
合并门禁#
- 只有 head SHA 上最新的流水线为绿色时,
pr_merge才会成功。 - 分支保护、仓库权限和团队成员关系仍由人明确制定策略。
局限#
- 流水线为绿色只代表配置的检查已通过,不代表软件没有缺陷。
- 受门禁控制的部署(
deploy_approve)和成员管理仍需人来审批和处理。
报告漏洞#
请在仓库上使用私密漏洞报告,并附上受影响的版本和最小化的合成复现。不要在公开 issue 中写入凭据或利用细节。
供 Agent 读取: security.md编辑此页