环境变量
配置 Carbon 实例的全部变量,按用途分组。事实来源是 packages/env。
Carbon 从 packages/env 中注册的环境变量读取配置。使用 .env.example 作为模板。sst.config.ts 读取仅用于基础设施的变量。最小实例需要 Supabase、会话密钥和 Redis;其他变量用于启用可选功能。
核心
平台级行为和版本。
community、cloud、enterprise 或 test 之一。控制版本特定功能。?lang=zh|en),文档站默认使用中文(读者可切换,选择保存在 cookie 中)。数据库——Supabase
Carbon 的单一 Postgres 数据库。前四个为必填,缺失会导致启动失败。
认证与会话
AUTH_PROVIDERS 包含 google 时。azure 时。企业版 SAML 单点登录增加两个:
.env.example。在 Vercel 之外,同时设置 CLOUDFLARE_TURNSTILE_SITE_KEY 和 CLOUDFLARE_TURNSTILE_SECRET_KEY 以在登录表单启用 Cloudflare Turnstile。没有它们时,仅应用按 IP 限流和按账户锁定。把 BOT_PROTECTION 设为 turnstile,或设为 botid 使用 Vercel BotID 无感保护。BotID 仅在 Vercel 上运行。
任务与缓存
生产环境必须提供 Inngest 密钥
只有在 INNGEST_DEV=1 时,INNGEST_SIGNING_KEY 和 INNGEST_EVENT_KEY 才是可选的。其他环境下缺少任一,应用不会启动。自托管 Inngest 服务器会提供两者;Docker + Caddy 方案会生成它们。
数据库还会直接向 Inngest 发送事件,用于事件队列、搜索嵌入和生产订单通知。每当 ERP 向 Inngest 注册其函数时(每次部署,以及每次长时间运行服务器启动时),它也会把地址存入数据库,地址由 INNGEST_EVENT_KEY 和 INNGEST_BASE_URL 构建,因此无需额外步骤。
如果数据库访问 Inngest 的地址与应用不同,请设置一次:
SELECT public.set_inngest_event_url('https://inngest.example.com/e/<event key>');ERP 会保留你设置的地址,只刷新其中的事件密钥,因此轮换后的密钥仍会在下次部署时到达数据库。
邮件与计费
Carbon <no-reply@example.com>。SMTP_* 未设置时也作为旧版 SMTP 回退。AI 与分析
集成
每个连接器的 OAuth 凭据,全部可选,只设置你使用的。
onshape)所用 Onshape OAuth 应用的客户端 ID。缺少时 Onshape 卡片显示 Not Configured。https://<erp-host>/api/integrations/onshape/oauth。必须在拉取集成的 Onshape 应用上注册。onshape-v2)所用 Onshape OAuth 应用的客户端 ID,与拉取集成是不同应用。缺少时 Onshape V2 卡片显示 Not Configured。https://<erp-host>/api/integrations/onshape-v2/oauth。必须在面板集成的 Onshape 应用上注册。缺少时 Onshape V2 Connect 按钮会报「Onshape isn't configured」。Onshape 面板还需要在 Onshape 应用上注册扩展,并让面板用户订阅它——参见 CAD。面板会话和推送评审保存在 Redis 中,因此 REDIS_URL 是面板工作的必要条件。
基础设施——SST
由 sst.config.ts 在部署时读取,而不是应用。
TRIGGER_* 和 UPSTASH_REDIS_* 变量已废弃。任务使用 Inngest,缓存使用 REDIS_URL。