自托管密钥清单
发布镜像与 Compose 部署所需的必填和可选凭据。
切勿提交 .env,切勿将密钥值粘贴到 issue/PR 中,也切勿在未经显式备份和运维人员同意的情况下覆盖已有的 .env。
发布镜像:安装脚本会填充什么
bash install-images.sh(在没有现成 .env 时)会复制 .env.images.example,并用 openssl 填充空白的必填键:
| 键 | 安装脚本填充方式 | 作用 |
|---|---|---|
POSTGRES_PASSWORD |
openssl rand -hex 16 |
Compose 内部 Postgres 所有者密码(用于迁移) |
POSTGRES_APP_PASSWORD |
openssl rand -hex 16 |
应用 rakazo_app 登录的密码,行级安全策略作用于该登录 |
BETTER_AUTH_SECRET |
openssl rand -hex 32 |
认证/会话签名 |
ENCRYPTION_KEY |
openssl rand -hex 32 |
加密静态存储的凭据 |
SCREEN_PROXY_SECRET |
openssl rand -hex 32 |
签发短期 /novnc/* 屏幕能力令牌 |
SANDBOX_SUPERVISOR_TOKEN |
openssl rand -hex 32 |
API ↔ sandbox supervisor 认证 |
重新运行会保留已有的 .env(不会轮换密钥);只有当旧 .env 缺少 POSTGRES_APP_PASSWORD 时才会追加。空白的必填键仍会在 Compose 校验阶段直接失败(${VAR:?Set … in .env})。
手动生成(与安装脚本使用的形态相同):
openssl rand -hex 16 # POSTGRES_PASSWORD, POSTGRES_APP_PASSWORD
openssl rand -hex 32 # BETTER_AUTH_SECRET, ENCRYPTION_KEY, SCREEN_PROXY_SECRET, SANDBOX_SUPERVISOR_TOKEN
源码检出方式的 .env.example 同样要求为 infra/compose/docker-compose.yml 提供 POSTGRES_PASSWORD 和 POSTGRES_APP_PASSWORD(同样使用 openssl rand -hex 16 形态)。使用可选的 docker-compose.postgres-host.yml 覆盖层时,将它们放入主机侧的 DATABASE_MIGRATION_URL 和 DATABASE_URL。保持密码对 URI 安全:Compose 会像镜像栈那样把它插值进 DATABASE_URL。openssl rand 生成的十六进制是安全的;@ : / ? # % 等字符则不安全。
已有的源码检出 pgdata 卷会保留首次初始化时的用户、密码和数据库(通常是过去硬编码的 rakazo / rakazo)。将这些值保留在 .env 中,或用 ALTER ROLE / 重命名在原位修改。只有在备份之后(或数据可丢弃时)才重建该卷;docker compose down -v 会删除所有 Postgres 状态。
源码检出的 .env.example 在注释中要求 64 位十六进制 的 ENCRYPTION_KEY;发布镜像安装脚本通过 openssl rand -hex 32 使用 32 字节十六进制(64 个十六进制字符)。无论哪种方式,都优先使用长且相互独立的随机值。不要在不同键之间复用同一个字符串。
独立性规则
以下必须是相互独立的随机值(不要将同一个密钥复制粘贴到多个键中):
BETTER_AUTH_SECRETENCRYPTION_KEYSCREEN_PROXY_SECRETSANDBOX_SUPERVISOR_TOKENRAKAZO_UPDATER_TOKEN(仅在启用 updater profile 时需要;≥32 个字符,并且也要与上述四项不同)
在凭据已存储后轮换 ENCRYPTION_KEY 会使旧密文无法读取。对于已有部署,除非你有意清除加密材料,否则请保留原始密钥。
ENCRYPTION_KEY 还会派生聊天、记忆和文件加密的默认主密钥,因此更改它也会使这些内容无法读取。若要将内容迁移出去,请设置 ENCRYPTION_MASTER_KEYS 并按 content-encryption.md 中所述执行轮换,它会重新包装空间密钥而不会使内容搁浅。之后保持 ENCRYPTION_KEY 不变:已存储的凭据仍依赖它。
可选键(不使用时留空)
来自 .env.images.example(镜像安装脚本)。不使用时留空:
| 键 | 何时需要 |
|---|---|
RAKAZO_DOITX_API_KEY |
部署级 Doitx 路由密钥,当部署为其用户提供该密钥时 |
TYPESAFE_API_KEY |
可选的 TypeSafe Jev Auto Review 验证器(RAKAZO_AUTO_REVIEW_PROVIDER=jev) |
COMPOSIO_API_KEY |
Composio 托管目录 |
E2B_API_KEY / DAYTONA_API_KEY / BOAT_API_KEY |
当 SANDBOX_PROVIDER 不是 docker 时的远程计算机 |
EMAIL_PROVIDER / EMAIL_API_KEY / SMTP_URL / EMAIL_FROM |
通过 Resend API 或 SMTP 的可选账户邮件 |
EXPO_ACCESS_TOKEN |
当 Expo 项目启用增强推送安全时的移动推送 |
| 消息令牌(Slack、Telegram 等) | 仅在你启用这些界面时 |
对于最小化的发布镜像启动,可选项留空是正常的。Pipedream Connect 的键只出现在源码/Compose 的 .env.example 中,不在镜像示例中。
运维人员流程
bash install-images.sh --prepare-only # creates .env + fills empties
# inspect key NAMES only if debugging; never log values
bash install-images.sh # pull + up; preserves .env
curl -fsS http://127.0.0.1:3100/internal/health
如果 /internal/health 中的 sandbox 为 "none",或 supervisor 始终无法变为健康状态,请检查 Docker 计算机路径下的 SANDBOX_SUPERVISOR_TOKEN 是否已设置且非空。缺少令牌属于设置失败,而不是“稍后可选收紧”的事项。
不重新打印密钥的恢复
- 丢失 UI 密码:如已配置,使用 SMTP 恢复;否则运维人员身份恢复需带外进行(数据库)。在运行中的部署上,尽量不要随意轮换
BETTER_AUTH_SECRET。 - 丢失
.env:只能从备份恢复。在仍保存 Postgres 数据的卷上重新生成随机密钥会导致密码和加密不同步。 - 迁移主机:将
.env和卷一起复制;传输途中将.env视为密钥材料。
相关内容
可选凭据存储
已存储的凭据可以使用自托管的 Infisical,同时短期密钥仍加密存放在 Postgres 中。参见 Infisical 设置、迁移与回滚。