Open Connector
自托管

环境变量

每个服务端和浏览器构建变量的用途、必填条件与归属。

Open Connector 在启动时校验服务端变量,在构建时校验浏览器变量。空字符串等同于未设置。缺少必填服务端变量会导致启动失败;VITE_* 会被编译进浏览器 bundle,因此改动后必须重新构建。

不要提交 .env 文件,也不要把机密放进 VITE_* 变量。生产环境应使用密钥管理服务;AWS 拓扑中机密存入 Secrets Manager,公开配置存入 SSM Parameter Store。

必填服务端变量

变量用途条件
DATABASE_URLAPI 和迁移使用的 Postgres 连接字符串。必填
BETTER_AUTH_SECRET用于签名和加密 Better Auth 会话数据。请生成至少 32 个字符的随机值。必填
BETTER_AUTH_URLBetter Auth 链接使用的 API 公开 origin,也是 OAuth 回调的默认 origin。必填 URL
CORS_ORIGIN允许携带凭证跨域请求的控制台应用 origin。必填 URL
CONNECTOR_ENCRYPTION_KEY用于派生凭证保险库 AES 密钥的主密钥。丢失后无法恢复已存凭证;只能通过重新加密迁移轮换。必填,至少 32 个字符
WEB_URL等待列表确认链接使用的营销站 origin。必填 URL

运行控制与默认值

变量默认值用途
NODE_ENVdevelopment选择 developmentproductiontest 运行模式;部署时设为 production
SIGNUP_ENABLEDtrue设为 false 可关闭新用户注册,同时保留现有用户登录。
CONNECTOR_CALLBACK_BASE_URLBETTER_AUTH_URL当本地 API 访问地址与第三方 OAuth 回调公开地址不同时,单独指定回调 origin。
OIDC_DISCOVERY_TTL_MS86400000OIDC discovery 文档的缓存时长(毫秒)。
S3_REGIONus-east-1S3 兼容 Blob 存储所用的 AWS 区域。
S3_FORCE_PATH_STYLEfalse使用 path-style S3 URL;常见 MinIO 部署设为 true

OAuth 应用凭证

以下成对变量为对应 Provider 启用托管 OAuth。它们都是可选的:也可以通过 Auth Config 提供凭证。所有 *_SECRET 必须放进机密存储。

变量用途
GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRETGitHub OAuth 应用。
NOTION_CLIENT_ID, NOTION_CLIENT_SECRETNotion OAuth 应用。
SLACK_CLIENT_ID, SLACK_CLIENT_SECRETSlack OAuth 应用。
GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRETGoogle 系列连接器共用的 OAuth 应用,包括 Gmail 和 YouTube。
TWITTER_CLIENT_ID, TWITTER_CLIENT_SECRETX/Twitter OAuth 应用。
LINKEDIN_CLIENT_ID, LINKEDIN_CLIENT_SECRETLinkedIn OAuth 应用。
REDDIT_CLIENT_ID, REDDIT_CLIENT_SECRETReddit OAuth 应用。
DISCORD_CLIENT_ID, DISCORD_CLIENT_SECRETDiscord OAuth 应用。
FACEBOOK_CLIENT_ID, FACEBOOK_CLIENT_SECRETFacebook 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

On this page