Typebot 3.19 配置参数详解
Typebot v3.19 全部 60+ 环境变量按功能分类详解(核心/认证/Google/GitHub/S3/媒体),含最小配置、生产增强、企业私有三套 .env 模板。
Typebot 3.19 配置参数详解
目标:本文档系统梳理 Typebot v3.19 的全部环境变量配置项,按功能分类详解每个参数的含义、默认值、取值范围与实测行为,并给出三种典型场景(最小配置 / 生产增强 / 企业私有)的完整 .env 模板。版本信息截至 2026-10-27。
一、环境信息
- Typebot 版本:v3.19.0(Builder + Viewer 共用同一个
.env) - 配置形式:环境变量(
.env文件、export、或 Docker Composeenvironment:/env_file:) - Builder 与 Viewer:相同的
DATABASE_URL、ENCRYPTION_SECRET、NEXTAUTH_URL、NEXT_PUBLIC_VIEWER_URL必须一致,否则会出现登录失败或对话中断 - 官方权威文档:https://docs.typebot.com/self-hosting/configuration(本文按其 v3.19 版本整理,并补充实测验证项)
二、前置条件
修改环境变量后,Builder 和 Viewer 需要同时重启以生效(docker compose restart typebot-builder typebot-viewer 或 pm2 restart typebot-builder typebot-viewer)。数据库迁移相关的改动(如需 SUPERUSER 权限)会在 Builder 启动时自动执行。
三、参数查看与修改方式
| 部署方式 | 查看当前配置 | 修改方式 |
|---|---|---|
| Docker Compose | docker compose exec typebot-builder env | grep -E 'TYPEBOT|NEXTAUTH|DATABASE' | 编辑 .env → docker compose up -d |
| PM2 + 源码 | pm2 describe typebot-builder 或 cat /proc/$(pgrep -f 'nx start builder')/environ | tr '\0' '\n' | 编辑根目录 .env → pm2 restart typebot-builder typebot-viewer |
四、参数总览
Typebot 配置项按功能可分为 9 大类,共 60+ 个环境变量:
| 类别 | 数量 | 是否必需 | 典型项 |
|---|---|---|---|
| 通用核心 | 7 | 3 必需 | DATABASE_URL, ENCRYPTION_SECRET, NEXTAUTH_URL |
| 邮件认证与通知 | 7 | 至少配一种认证 | SMTP_HOST, SMTP_PORT, SMTP_USERNAME |
| Google 全家桶 | 11 | 可选 | GOOGLE_AUTH_CLIENT_ID, NEXT_PUBLIC_GOOGLE_SHEETS_API_KEY |
| GitHub/GitLab/Facebook | 6 | 可选 | GITHUB_CLIENT_ID, GITLAB_BASE_URL |
| 企业身份认证 | 9 | 可选 | AZURE_AD_CLIENT_ID, KEYCLOAK_REALM, CUSTOM_OAUTH_ISSUER |
| S3 对象存储 | 8 | 可选 | S3_ACCESS_KEY, S3_ENDPOINT, S3_BUCKET |
| 外部媒体服务 | 4 | 可选 | NEXT_PUBLIC_GIPHY_API_KEY |
| WhatsApp 预览 | 2 | 可选 | WHATSAPP_PREVIEW_APP_SECRET |
| 调试与安全 | 3 | 可选 | TYPEBOT_DEBUG, SSRF_ALLOWED_HOSTS |
五、核心参数分类详解
5.1 通用核心参数(必需 + 基础)
这是 Typebot 启动的最低必需配置,缺任意一个 Builder 和 Viewer 都无法正常启动。
| 参数 | 默认 | 必需 | 说明 | 实测验证 |
|---|---|---|---|---|
DATABASE_URL | — | ✅ | PostgreSQL 连接串,格式 postgresql://user:pass@host:5432/dbname。数据库用户需 SUPERUSER 角色(Prisma 迁移要求) | 可通过 docker compose exec typebot-db psql -U typebot -d typebot 验证连通 |
ENCRYPTION_SECRET | — | ✅ | 恰好 32 字符的加密密钥,用于加密敏感数据(凭证、API Token 等)。Builder 与 Viewer 必须相同 | openssl rand -hex 16 生成;短于 32 字符 Builder 直接启动失败 |
NEXTAUTH_URL | — | ✅ | Builder 的公开访问 URL(含协议和域名)。NextAuth.js 以此为基准做 OAuth 回调和 Cookie 设置 | 必须与实际浏览器访问 Builder 的 URL 完全匹配 |
NEXT_PUBLIC_VIEWER_URL | — | ✅ | Viewer 的公开访问 URL。用于嵌入脚本生成和跨域 Cookie | 根域必须和 NEXTAUTH_URL 相同,但 host 不同(浏览器 Cookie 忽略端口) |
ADMIN_EMAIL | — | 建议 | 首次用此邮箱注册的用户自动获得 UNLIMITED 套餐并可绕过数据库规则。支持逗号分隔多个邮箱 | 注册后在 Builder Settings 可确认套餐状态 |
DEFAULT_WORKSPACE_PLAN | FREE | 可选 | 新用户创建 Workspace 时的默认套餐。可选值:FREE、STARTER、PRO、LIFETIME、UNLIMITED | 商业场景可设为 STARTER 以限制免费用户额度 |
DISABLE_SIGNUP | false | 可选 | 设为 true 禁止新用户自助注册(仅允许通过邀请链接注册) | 企业私有部署强烈建议开启 |
5.2 运行时与调试参数
| 参数 | 默认 | 说明 |
|---|---|---|
TYPEBOT_DEBUG | false | 设为 true 时 Builder 输出详细配置调试日志(.env 解析过程、环境变量校验结果) |
CHAT_API_TIMEOUT | — | 聊天 API 执行超时(毫秒)。避免无限循环卡住,但不作用于 OpenAI 等已知长耗时 block |
NEXT_PUBLIC_BOT_FILE_UPLOAD_MAX_SIZE | — | 限制 Bot 内单文件上传大小(MB)。如 10 表示最大 10MB |
NEXT_PUBLIC_ONBOARDING_TYPEBOT_ID | — | 指定 Onboarding 用的 Typebot ID,未设置则跳过引导页 |
SSRF_ALLOWED_HOSTS | — | 逗号分隔的内部 IPv4 SMTP 中继主机名白名单(SMTP 配置测试用) |
5.3 邮件认证与 SMTP 配置
Typebot 支持通过 Email Magic Link(无需密码)登录,也可用于发送通知邮件。至少需要配置一种认证方式,SMTP 是最简单的。
| 参数 | 默认 | 说明 |
|---|---|---|
SMTP_HOST | — | SMTP 服务器地址(如 smtp.gmail.com) |
SMTP_PORT | 25 | SMTP 端口。常用:25(明文)、587(STARTTLS)、465(SSL) |
SMTP_USERNAME | — | SMTP 认证用户名 |
SMTP_PASSWORD | — | SMTP 认证密码或 App Password |
SMTP_SECURE | false | 设为 true 则强制 TLS 连接。端口 465 时建议开启 |
SMTP_IGNORE_TLS | — | 当 SMTP_SECURE=false 时,设为 true 可强制不使用 STARTTLS |
SMTP_AUTH_DISABLED | false | 仅禁用 Email 认证(仍用 SMTP 发通知邮件)。适合只想用 GitHub/Google 登录的场景 |
NEXT_PUBLIC_SMTP_FROM | — | 发件人显示名和邮箱,格式 'DisplayName' <email@domain.com> |
5.4 Google 全家桶集成
| 参数 | 默认 | 说明 |
|---|---|---|
| Google OAuth 登录 | ||
GOOGLE_AUTH_CLIENT_ID | — | Google Cloud Console OAuth 2.0 Client ID |
GOOGLE_AUTH_CLIENT_SECRET | — | 对应的 Client Secret |
| Google Sheets 集成 | ||
GOOGLE_SHEETS_CLIENT_ID | — | OAuth 2.0 Client ID |
GOOGLE_SHEETS_CLIENT_SECRET | — | Client Secret |
NEXT_PUBLIC_GOOGLE_SHEETS_API_KEY | — | Google Sheets API Key |
| Gmail 发送 | ||
GMAIL_CLIENT_ID | — | Gmail OAuth Client ID |
GMAIL_CLIENT_SECRET | — | Gmail Client Secret |
| Google Fonts | ||
NEXT_PUBLIC_GOOGLE_FONTS_API_KEY | — | Web Fonts Developer API Key |
5.5 GitHub / GitLab / Facebook OAuth
| 参数 | 默认 | 说明 |
|---|---|---|
GITHUB_CLIENT_ID | — | GitHub OAuth App Client ID(callback: $NEXTAUTH_URL/api/auth/callback/github) |
GITHUB_CLIENT_SECRET | — | GitHub OAuth App Client Secret |
GITLAB_CLIENT_ID | — | GitLab OAuth App Client ID |
GITLAB_CLIENT_SECRET | — | GitLab OAuth App Client Secret |
GITLAB_BASE_URL | https://gitlab.com | 自建 GitLab 实例的 Base URL |
GITLAB_REQUIRED_GROUPS | — | 逗号分隔的用户必须直接隶属的 GitLab 组(如 foo,bar) |
GITLAB_NAME | GitLab | 登录按钮显示名称 |
FACEBOOK_CLIENT_ID | — | Facebook OAuth App Client ID |
FACEBOOK_CLIENT_SECRET | — | Facebook OAuth App Client Secret |
5.6 企业身份认证(Azure AD / Keycloak / Custom OAuth)
| 参数 | 默认 | 说明 |
|---|---|---|
| Azure AD | ||
AZURE_AD_CLIENT_ID | — | Azure AD 应用程序 Client ID |
AZURE_AD_CLIENT_SECRET | — | Client Secret |
AZURE_AD_TENANT_ID | — | Azure Tenant ID |
| Keycloak | ||
KEYCLOAK_CLIENT_ID | — | Keycloak Client ID |
KEYCLOAK_CLIENT_SECRET | — | Client Secret |
KEYCLOAK_REALM | — | Keycloak Realm 名称 |
KEYCLOAK_BASE_URL | — | Keycloak 实例 Base URL |
| Custom OAuth(OIDC) | ||
CUSTOM_OAUTH_CLIENT_ID | ✅必需 | 自定义 OIDC Provider 的 Client ID |
CUSTOM_OAUTH_CLIENT_SECRET | ✅必需 | Client Secret |
CUSTOM_OAUTH_ISSUER | ✅必需 | OIDC Issuer URL(如 https://auth.example.com/openid) |
CUSTOM_OAUTH_NAME | Custom OAuth | 登录按钮显示名称 |
CUSTOM_OAUTH_SCOPE | openid profile email | OAuth Scope |
CUSTOM_OAUTH_USE_USERINFO | false | 从 UserInfo Endpoint 而非 ID Token 取用户信息 |
5.7 S3 兼容对象存储(媒体上传)
Typebot 支持任意 S3 兼容对象存储(AWS S3、MinIO、DigitalOcean Spaces 等)。配置后 Builder 中的图片、视频、GIF 上传将存入 S3。
| 参数 | 默认 | 说明 |
|---|---|---|
S3_ACCESS_KEY | — | S3 Access Key(存在即表示启用上传功能) |
S3_SECRET_KEY | — | S3 Secret Key |
S3_BUCKET | typebot | Bucket 名称 |
S3_ENDPOINT | — | S3 Endpoint(如 MinIO minio:9000、AWS s3.<region>.amazonaws.com) |
S3_PORT | — | S3 端口(非标准端口时显式指定) |
S3_SSL | true | 连接是否使用 SSL。MinIO 内网部署可设为 false |
S3_REGION | — | S3 Region(AWS 必需,MinIO 可留空) |
S3_PUBLIC_CUSTOM_DOMAIN | — | 公开访问文件时的自定义域名(如 CDN 域名),不同于 S3_ENDPOINT |
5.8 外部媒体搜索服务(GIPHY / Unsplash / Pexels)
| 参数 | 默认 | 说明 |
|---|---|---|
NEXT_PUBLIC_GIPHY_API_KEY | — | GIPHY API Key,启用 Builder 内 GIF 搜索 |
NEXT_PUBLIC_UNSPLASH_APP_NAME | — | Unsplash App 名称 |
NEXT_PUBLIC_UNSPLASH_ACCESS_KEY | — | Unsplash API Key |
NEXT_PUBLIC_PEXELS_API_KEY | — | Pexels API Key(视频搜索) |
5.9 WhatsApp Preview(本地测试 WhatsApp Bot)
仅用于 Builder Preview 抽屉内测试 WhatsApp Bot 功能,非生产必需:
| 参数 | 默认 | 说明 |
|---|---|---|
WHATSAPP_PREVIEW_APP_SECRET | — | WhatsApp Meta App 的 App Secret |
META_SYSTEM_USER_TOKEN | — | Meta Business System User Token(权限:whatsapp_business_messaging, whatsapp_business_management) |
六、生产配置模板
6.1 最小可用(单机 + SMTP 邮件登录)
适用于个人评估或小团队测试:
# ===== 必需 =====
DATABASE_URL=postgresql://typebot:your-pw@localhost:5432/typebot
ENCRYPTION_SECRET=$(openssl rand -hex 16) # 32 字符
NEXTAUTH_URL=https://typebot.example.com
NEXT_PUBLIC_VIEWER_URL=https://bot.example.com
# ===== 基础安全 =====
ADMIN_EMAIL=admin@example.com
DISABLE_SIGNUP=true
# ===== 至少一种认证:SMTP Magic Link =====
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USERNAME=your-gmail@gmail.com
SMTP_PASSWORD=your-app-password
SMTP_SECURE=false
NEXT_PUBLIC_SMTP_FROM='Typebot' <your-gmail@gmail.com>
6.2 生产增强(SMTP + S3 + 调试禁用)
适用于生产环境的标准部署:
# ===== 必需 =====
DATABASE_URL=postgresql://typebot-prod:${DB_PASSWORD}@prod-db.internal:5432/typebot
ENCRYPTION_SECRET=${32-char-hex-secret}
NEXTAUTH_URL=https://typebot.yourcompany.com
NEXT_PUBLIC_VIEWER_URL=https://bot.yourcompany.com
# ===== 安全与管理 =====
ADMIN_EMAIL=admin@yourcompany.com,ops@yourcompany.com
DISABLE_SIGNUP=true
DEFAULT_WORKSPACE_PLAN=STARTER # 新用户默认 Starter 套餐
TYPEBOT_DEBUG=false
CHAT_API_TIMEOUT=300000 # 5 分钟
# ===== SMTP(SendGrid / 企业内部 SMTP)=====
SMTP_HOST=smtp.sendgrid.net
SMTP_PORT=587
SMTP_USERNAME=apikey
SMTP_PASSWORD=${SENDGRID_API_KEY}
SMTP_SECURE=false
NEXT_PUBLIC_SMTP_FROM='Typebot NoReply' <noreply@yourcompany.com>
SSRF_ALLOWED_HOSTS=smtp.internal.yourcompany.com
# ===== S3(AWS S3)=====
S3_ACCESS_KEY=${AWS_S3_AK}
S3_SECRET_KEY=${AWS_S3_SK}
S3_BUCKET=typebot-prod
S3_ENDPOINT=s3.ap-northeast-1.amazonaws.com
S3_REGION=ap-northeast-1
S3_SSL=true
# ===== 外部媒体(可选)=====
NEXT_PUBLIC_GIPHY_API_KEY=${GIPHY_KEY}
NEXT_PUBLIC_PEXELS_API_KEY=${PEXELS_KEY}
6.3 企业私有(Keycloak + MinIO + 无外网服务)
适用于完全内网的企业部署:
# ===== 必需 =====
DATABASE_URL=postgresql://typebot-ent:${DB_PASSWORD}@10.0.0.10:5432/typebot
ENCRYPTION_SECRET=${32-char-hex-secret}
NEXTAUTH_URL=https://typebot.corp.local
NEXT_PUBLIC_VIEWER_URL=https://bot.corp.local
# ===== 安全与管理 =====
ADMIN_EMAIL=admin@corp.local
DISABLE_SIGNUP=true
DEFAULT_WORKSPACE_PLAN=PRO
TYPEBOT_DEBUG=false
# ===== 企业 Keycloak 认证 =====
KEYCLOAK_CLIENT_ID=typebot
KEYCLOAK_CLIENT_SECRET=${KEYCLOAK_SECRET}
KEYCLOAK_REALM=corp-realm
KEYCLOAK_BASE_URL=https://keycloak.corp.local
# ===== MinIO 内网 S3 =====
S3_ACCESS_KEY=typebot
S3_SECRET_KEY=${MINIO_SECRET}
S3_BUCKET=typebot
S3_ENDPOINT=minio.corp.local:9000
S3_PORT=9000
S3_SSL=false
# ===== 禁用外部媒体服务(内网不可达)=====
# 不设置 NEXT_PUBLIC_GIPHY_API_KEY 等,功能自动隐藏
七、常见问题
Q1:Builder 报 ENCRYPTION_SECRET Too small: expected string to have exactly 32 characters
原因:Typebot v3 强制 ENCRYPTION_SECRET 长度恰好 32(v2 版本允许更长)。
解决:
openssl rand -hex 16 # 输出 32 字符 hex
# 修改 .env 后重启
docker compose up -d --force-recreate
Q2:OAuth 回调报 redirect_uri_mismatch
原因:NEXTAUTH_URL 与 OAuth Provider 配置的回调 URL 不一致。
解决:在 Google / GitHub / GitLab / Azure OAuth 配置中将回调 URL 设为 $NEXTAUTH_URL/api/auth/callback/<provider>(如 https://typebot.example.com/api/auth/callback/google)。
Q3:S3 上传报 Access Denied
原因:S3 bucket 权限未正确设置(Typebot 需要 public read 权限读取公开文件)。
解决(MinIO):
mc alias set minio http://minio:9000 minioadmin minioadmin
mc mb --ignore-existing minio/typebot
mc anonymous set public minio/typebot/public
Q4:Viewer 消息中无法显示上传的图片/视频
原因:S3 文件的公开访问 URL 不正确。
解决:
- AWS S3:无需
S3_PUBLIC_CUSTOM_DOMAIN,默认用https://<bucket>.s3.<region>.amazonaws.com/... - MinIO 内网:需要
S3_PUBLIC_CUSTOM_DOMAIN指向 MinIO 的可访问地址(如https://storage.example.com) - Cloudflare R2:
S3_PUBLIC_CUSTOM_DOMAIN设为 R2 公开域名
Q5:SSRF_ALLOWED_HOSTS 配置后 Builder SMTP 测试仍报错
原因:该参数只影响 Builder 内 Send Email block 的 SMTP 配置测试,不影响实际发送(实际发送仍走 SMTP 环境变量)。且 RFC1918 私有地址段默认已允许,不需要额外配置。
八、参考链接
- 官方配置文档:https://docs.typebot.com/self-hosting/configuration
- 手动部署指南(含完整 .env 模板):https://docs.typebot.com/self-hosting/deploy/manual
- Docker Compose 部署指南:https://docs.typebot.com/self-hosting/deploy/docker
- Prisma Schema(数据库模型):https://github.com/baptisteArno/typebot.io/blob/main/packages/prisma/schema.prisma