自托管
环境变量
每个服务端和浏览器构建变量的用途、必填条件与归属。
Open Connector 在启动时校验服务端变量,在构建时校验浏览器变量。空字符串等同于未设置。缺少必填服务端变量会导致启动失败;VITE_* 会被编译进浏览器 bundle,因此改动后必须重新构建。
不要提交 .env 文件,也不要把机密放进 VITE_* 变量。生产环境应使用密钥管理服务;AWS 拓扑中机密存入 Secrets Manager,公开配置存入 SSM Parameter Store。
必填服务端变量
| 变量 | 用途 | 条件 |
|---|---|---|
DATABASE_URL | API 和迁移使用的 Postgres 连接字符串。 | 必填 |
BETTER_AUTH_SECRET | 用于签名和加密 Better Auth 会话数据。请生成至少 32 个字符的随机值。 | 必填 |
BETTER_AUTH_URL | Better Auth 链接使用的 API 公开 origin,也是 OAuth 回调的默认 origin。 | 必填 URL |
CORS_ORIGIN | 允许携带凭证跨域请求的控制台应用 origin。 | 必填 URL |
CONNECTOR_ENCRYPTION_KEY | 用于派生凭证保险库 AES 密钥的主密钥。丢失后无法恢复已存凭证;只能通过重新加密迁移轮换。 | 必填,至少 32 个字符 |
WEB_URL | 等待列表确认链接使用的营销站 origin。 | 必填 URL |
运行控制与默认值
| 变量 | 默认值 | 用途 |
|---|---|---|
NODE_ENV | development | 选择 development、production 或 test 运行模式;部署时设为 production。 |
SIGNUP_ENABLED | true | 设为 false 可关闭新用户注册,同时保留现有用户登录。 |
CONNECTOR_CALLBACK_BASE_URL | BETTER_AUTH_URL | 当本地 API 访问地址与第三方 OAuth 回调公开地址不同时,单独指定回调 origin。 |
OIDC_DISCOVERY_TTL_MS | 86400000 | OIDC discovery 文档的缓存时长(毫秒)。 |
S3_REGION | us-east-1 | S3 兼容 Blob 存储所用的 AWS 区域。 |
S3_FORCE_PATH_STYLE | false | 使用 path-style S3 URL;常见 MinIO 部署设为 true。 |
OAuth 应用凭证
以下成对变量为对应 Provider 启用托管 OAuth。它们都是可选的:也可以通过 Auth Config 提供凭证。所有 *_SECRET 必须放进机密存储。
| 变量 | 用途 |
|---|---|
GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET | GitHub OAuth 应用。 |
NOTION_CLIENT_ID, NOTION_CLIENT_SECRET | Notion OAuth 应用。 |
SLACK_CLIENT_ID, SLACK_CLIENT_SECRET | Slack OAuth 应用。 |
GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET | Google 系列连接器共用的 OAuth 应用,包括 Gmail 和 YouTube。 |
TWITTER_CLIENT_ID, TWITTER_CLIENT_SECRET | X/Twitter OAuth 应用。 |
LINKEDIN_CLIENT_ID, LINKEDIN_CLIENT_SECRET | LinkedIn OAuth 应用。 |
REDDIT_CLIENT_ID, REDDIT_CLIENT_SECRET | Reddit OAuth 应用。 |
DISCORD_CLIENT_ID, DISCORD_CLIENT_SECRET | Discord OAuth 应用。 |
FACEBOOK_CLIENT_ID, FACEBOOK_CLIENT_SECRET | Facebook OAuth 应用。 |
LOGO_DEV_PUBLISHABLE_KEY | 可选的 Logo.dev pk_... 公钥,只用于构造 Provider Logo 图片 URL;它按设计就是可公开的,不是机密。 |
功能门控的服务端变量
未设置以下变量时 API 仍会启动,但相应功能会禁用或返回明确的“未配置”错误。
| 变量 | 用途 |
|---|---|
RESEND_API_KEY, EMAIL_FROM | 发送事务邮件。未设置 API Key 时,开发环境使用在日志中打印链接的 mailer。 |
OTLP_ENDPOINT, OTLP_HEADERS | 向 OTLP/HTTP collector 导出日志和 trace。Headers 为逗号分隔的 key=value,通常包含认证 header。 |
STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET | 启用托管计费并校验 Stripe webhook。自托管免费版不需要它们。 |
OPENROUTER_API_KEY, OPENROUTER_MODEL, DOCS_URL | 启用文档站 Ask AI,选择模型,并提供用于 CORS 与答案 grounding 的文档站 origin。 |
S3_ENDPOINT, S3_BUCKET, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, S3_PUBLIC_URL | 启用 S3 兼容 Blob 存储。S3_BUCKET 是功能开关;AWS S3 可不设 endpoint,实例角色供给凭证时也不应配置静态 key。S3_PUBLIC_URL 用于把预签名 URL 改写为客户端可见 host。 |
LICENSE_PUBLIC_KEY, LICENSE_KEY | 启用 EE 许可证的离线验证。任一未设置时实例运行免费 AGPL 版。PEM 在本地可以是原文,经过生产机密链路时可以是 base64。 |
LICENSE_SIGNING_KEY | 仅托管许可证签发服务使用的 EE 私钥。普通自托管安装不要设置。 |
浏览器构建变量
这些值会被 Vite 写入浏览器资源,因此按设计是公开的;它们不是 API 服务器运行变量。
| 变量 | 用途 | 条件 |
|---|---|---|
VITE_SERVER_URL | 控制台和浏览器遥测使用的 API 公开 origin。 | 构建时必填 URL |
VITE_APP_URL | 营销站 CTA 使用的控制台公开 origin。 | 构建时必填 URL |
VITE_GTM_ID | 可选的 Google Tag Manager 容器标识。 | 可选 |
VITE_MANAGED_OAUTH_PROVIDERS | 已具备托管 OAuth 凭证的 Provider slug(逗号分隔);营销站据此标记可用的目录卡片。 | 可选 |
本地 .env 示例
DATABASE_URL=postgres://postgres:postgres@localhost:5432/open_connector
BETTER_AUTH_SECRET=replace-with-a-random-32-character-secret
BETTER_AUTH_URL=http://localhost:3000
CORS_ORIGIN=http://localhost:3001
CONNECTOR_ENCRYPTION_KEY=replace-with-a-separate-random-32-character-secret
WEB_URL=http://localhost:3002独立生成两个必填密钥:
openssl rand -base64 48
openssl rand -base64 48