# 部署认证配置

通过静态环境变量配置 Google、GitHub、微信、邮箱登录、SMTP 和 SMS。

部署说明 · 模块: deploy · 管理人员 · 部署形态：Cloud / 私有部署 · 已确认产品版本：资料未说明 · 来源：编辑整理 · 变更章节按产品 4.2.48-1026 核对（CLI 命令另按 0.0.10）；不代表所有实例已升级，也不是完整历史支持矩阵。

Google、GitHub、微信、邮箱登录、SMTP 与 SMS 属于整个 AskTable 实例，只从环境变量读取。修改后需要重启 Web 和 Worker；系统设置中不再提供这些认证配置。

## 部署模式与 Region

`AT_REGION` 默认是 `cn`，也可设置为 `global`。私有部署（`AT_DEPLOY_MODE=local`）始终使用邮箱作为账号标识，不因 Region 改变。国内 Cloud 使用手机号，海外 Cloud 使用邮箱。部署后应固定 Region；变更需要先规划身份数据迁移。

使用 Docker Compose 时，将下方配置合并到原有 `asktable.environment` 中。修改环境变量后执行 `docker compose up -d asktable`，让容器按新配置重建；单纯重启容器不会读取修改后的 Compose 环境变量。Web、Worker 分开运行时，两者都要更新并重启。

## OAuth 提供商

| 提供商    | 环境变量                                      |
| ------ | ----------------------------------------- |
| Google | `GOOGLE_CLIENT_ID`、`GOOGLE_CLIENT_SECRET` |
| GitHub | `GITHUB_CLIENT_ID`、`GITHUB_CLIENT_SECRET` |
| 微信     | `WECHAT_APP_ID`、`WECHAT_APP_SECRET`       |

每组 ID 和 Secret 必须同时设置。整组留空会禁用该提供商，只填一项会让应用在启动时失败并指出不完整配置。

```yaml docker-compose.yaml
services:
  asktable:
    environment:
      GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID:-}
      GOOGLE_CLIENT_SECRET: ${GOOGLE_CLIENT_SECRET:-}
      GITHUB_CLIENT_ID: ${GITHUB_CLIENT_ID:-}
      GITHUB_CLIENT_SECRET: ${GITHUB_CLIENT_SECRET:-}
      WECHAT_APP_ID: ${WECHAT_APP_ID:-}
      WECHAT_APP_SECRET: ${WECHAT_APP_SECRET:-}
      SMS_API_URL: ${SMS_API_URL:-}
      SMS_API_KEY: ${SMS_API_KEY:-}
```

`GET /system/info` 只返回启用状态和非敏感 Client ID，不返回 Secret，也不包含任何组织级企业微信/WPS/飞书/钉钉配置。

## 国内云

Cloud + CN 生产的统一登录页只提供微信；组织专属的企业微信/WPS/飞书/钉钉登录地址仍可使用。微信、企业微信、WPS、飞书或钉钉认证成功后先建立正常会话；缺少手机号时，统一 setup 页面会要求完成验证后才能进入产品工作区。启动时必须同时配置 `WECHAT_APP_ID`、`WECHAT_APP_SECRET`、`SMS_API_URL` 和 `SMS_API_KEY`；任一缺失都会让进程明确报错并停止。

## 邮箱登录与 SMTP

```yaml docker-compose.yaml
services:
  asktable:
    environment:
      EMAIL_LOGIN_ENABLED: "true"
      EMAIL_SMTP_PROVIDER: aliyun # aliyun | custom
      EMAIL_SMTP_HOST: ""         # custom 时必填
      EMAIL_SMTP_PORT: "465"
      EMAIL_SMTP_USERNAME: ""
      EMAIL_SMTP_PASSWORD: ${EMAIL_SMTP_PASSWORD:-}
      EMAIL_SMTP_USE_SSL: "true"
      EMAIL_SENDER_ADDRESS: noreply@example.com
```

`aliyun` 使用固定的阿里云邮件推送主机和 SSL 端口，发件地址同时作为用户名；`custom` 使用给定的 Host、Port 与 SSL 选项，Username 留空时回退到发件地址。SMTP 未完整配置时，依赖邮件发送的任务会跳过邮件投递。

**Note**

私有部署和海外 Cloud 中，若 Google、GitHub、微信全部未启用，即使 `EMAIL_LOGIN_ENABLED=false`，系统也会保留邮箱登录兜底，避免部署完全没有登录入口。组织级企业微信/WPS/飞书/钉钉不参与这个判断。

企业微信、WPS、飞书和钉钉请由组织 Owner/Admin 在登录集成中连接，参见 [企业集成登录](https://docs.asktable.com/organization/enterprise-login)。旧版本升级要求见 [迁移](https://docs.asktable.com/deploy/migration)。
