前言
环境变量是配置 OpenClaw 的重要方式之一,特别适合容器化部署和 CI/CD 场景。本文将全面列举 OpenClaw 支持的所有环境变量,并给出实际使用示例。
核心环境变量
以下是 OpenClaw 运行必需或常用的核心环境变量:
| 变量名 | 说明 | 默认值 | 示例 |
|---|---|---|---|
OPENCLAW_PORT |
网关监听端口 | 18789 |
8080 |
OPENCLAW_CONFIG |
配置文件路径 | ~/.config/openclaw/openclaw.json5 |
/etc/openclaw/config.json5 |
OPENCLAW_LOG_LEVEL |
日志级别 | info |
debug |
OPENCLAW_DATA_DIR |
数据存储目录 | ~/.local/share/openclaw |
/var/lib/openclaw |
OPENCLAW_HOST |
监听地址 | 0.0.0.0 |
127.0.0.1 |
NODE_ENV |
Node.js 运行模式 | production |
development |
设置示例
# 修改监听端口和日志级别
export OPENCLAW_PORT=8080
export OPENCLAW_LOG_LEVEL=debug
openclaw up
在 ~/.bashrc 中持久化:
# OpenClaw 环境变量
export OPENCLAW_PORT=18789
export OPENCLAW_LOG_LEVEL=info
export OPENCLAW_HOST=0.0.0.0
API 密钥环境变量
各 AI 模型的 API 密钥都可以通过环境变量设置,避免将敏感信息写入配置文件:
| 变量名 | 对应模型 | 示例 |
|---|---|---|
OPENAI_API_KEY |
OpenAI (GPT-4o 等) | sk-proj-xxxx |
ANTHROPIC_API_KEY |
Claude | sk-ant-api03-xxxx |
GOOGLE_API_KEY |
Gemini | AIzaSyxxxx |
OPENROUTER_API_KEY |
OpenRouter | sk-or-v1-xxxx |
OLLAMA_BASE_URL |
Ollama 本地模型 | http://localhost:11434 |
多密钥配置
部分模型支持设置多个 API 密钥,OpenClaw 会自动轮换使用:
# 用逗号分隔多个密钥
export OPENAI_API_KEY="sk-proj-key1,sk-proj-key2,sk-proj-key3"
API 基础地址覆盖
如果你使用第三方代理或自部署的 API 端点:
| 变量名 | 说明 | 示例 |
|---|---|---|
OPENAI_BASE_URL |
OpenAI API 地址 | https://api.your-proxy.com/v1 |
ANTHROPIC_BASE_URL |
Claude API 地址 | https://claude-proxy.example.com |
GOOGLE_BASE_URL |
Gemini API 地址 | https://gemini.your-proxy.com |
# 使用第三方 OpenAI 代理
export OPENAI_API_KEY="sk-custom-key"
export OPENAI_BASE_URL="https://api.your-proxy.com/v1"
openclaw up
频道相关环境变量
| 变量名 | 说明 |
|---|---|
WHATSAPP_ENABLED |
是否启用 WhatsApp (true/false) |
WHATSAPP_SESSION_DIR |
会话数据存储目录 |
Telegram
| 变量名 | 说明 |
|---|---|
TELEGRAM_BOT_TOKEN |
Telegram Bot Token |
TELEGRAM_ALLOWED_USERS |
允许的用户 ID 列表(逗号分隔) |
Discord
| 变量名 | 说明 |
|---|---|
DISCORD_BOT_TOKEN |
Discord Bot Token |
DISCORD_CLIENT_ID |
Discord 应用 Client ID |
Slack
| 变量名 | 说明 |
|---|---|
SLACK_BOT_TOKEN |
Slack Bot Token (xoxb-xxxx) |
SLACK_APP_TOKEN |
Slack App-Level Token (xapp-xxxx) |
SLACK_SIGNING_SECRET |
Slack 签名密钥 |
LINE
| 变量名 | 说明 |
|---|---|
LINE_CHANNEL_SECRET |
LINE Channel Secret |
LINE_CHANNEL_ACCESS_TOKEN |
LINE Channel Access Token |
Microsoft Teams
| 变量名 | 说明 |
|---|---|
TEAMS_APP_ID |
Azure AD 应用 ID |
TEAMS_APP_PASSWORD |
Azure AD 应用密码 |
代理相关环境变量
| 变量名 | 说明 | 示例 |
|---|---|---|
HTTP_PROXY |
HTTP 代理 | http://127.0.0.1:7890 |
HTTPS_PROXY |
HTTPS 代理 | http://127.0.0.1:7890 |
ALL_PROXY |
所有协议代理 | socks5://127.0.0.1:1080 |
NO_PROXY |
不走代理的地址 | localhost,127.0.0.1 |
安全相关环境变量
| 变量名 | 说明 | 默认值 |
|---|---|---|
OPENCLAW_DASHBOARD_PASSWORD |
Dashboard 访问密码 | 无 |
OPENCLAW_API_SECRET |
内部 API 认证密钥 | 自动生成 |
OPENCLAW_CORS_ORIGIN |
允许的跨域来源 | * |
OPENCLAW_RATE_LIMIT |
每分钟请求限制 | 60 |
# 设置安全相关变量
export OPENCLAW_DASHBOARD_PASSWORD="your-strong-password"
export OPENCLAW_CORS_ORIGIN="https://your-domain.com"
export OPENCLAW_RATE_LIMIT=30
.env 文件支持
OpenClaw 支持从 .env 文件自动读取环境变量,省去每次手动导出的麻烦。
创建 .env 文件
在 OpenClaw 的配置目录下创建 .env 文件:
# ~/.config/openclaw/.env
# 核心配置
OPENCLAW_PORT=18789
OPENCLAW_LOG_LEVEL=info
NODE_ENV=production
# API 密钥
OPENAI_API_KEY=sk-proj-your-key-here
ANTHROPIC_API_KEY=sk-ant-api03-your-key-here
GOOGLE_API_KEY=AIzaSy-your-key-here
# 频道密钥
TELEGRAM_BOT_TOKEN=123456789:ABCdefGhIjKlMnOpQrStUvWxYz
DISCORD_BOT_TOKEN=MTIzNDU2Nzg5.your-discord-token
# 代理
HTTPS_PROXY=http://127.0.0.1:7890
# 安全
OPENCLAW_DASHBOARD_PASSWORD=my-secure-password
.env 文件优先级
环境变量的优先级从高到低:
- 系统环境变量 - 通过
export设置的变量 - .env 文件 - 配置目录下的
.env文件 - 配置文件 -
openclaw.json5中的配置 - 默认值 - OpenClaw 的内置默认值
注意事项
# .env 文件中的值不需要 export 关键字
# 正确写法
OPENCLAW_PORT=8080
# 错误写法
export OPENCLAW_PORT=8080
# 值包含空格时需要引号
OPENCLAW_DASHBOARD_PASSWORD="my password with spaces"
# 支持注释
# 这是一条注释
# 不支持变量引用
# 以下写法不生效
# OPENCLAW_DATA_DIR=$HOME/.openclaw
Docker 环境变量
在 Docker 中部署 OpenClaw 时,环境变量是推荐的配置方式。
docker run 方式
docker run -d \
--name openclaw \
-p 18789:18789 \
-e OPENAI_API_KEY="sk-proj-xxxx" \
-e ANTHROPIC_API_KEY="sk-ant-xxxx" \
-e TELEGRAM_BOT_TOKEN="your-token" \
-e OPENCLAW_LOG_LEVEL="info" \
-e OPENCLAW_DASHBOARD_PASSWORD="secure-pwd" \
openclaw/openclaw:latest
docker-compose 方式
# docker-compose.yml
services:
openclaw:
image: openclaw/openclaw:latest
ports:
- "18789:18789"
environment:
- OPENCLAW_PORT=18789
- OPENCLAW_LOG_LEVEL=info
- NODE_ENV=production
- OPENAI_API_KEY=sk-proj-xxxx
- ANTHROPIC_API_KEY=sk-ant-xxxx
- TELEGRAM_BOT_TOKEN=your-token
volumes:
- openclaw-data:/data
volumes:
openclaw-data:
使用 env_file
更安全的做法是将密钥放在单独的 env 文件中:
# docker-compose.yml
services:
openclaw:
image: openclaw/openclaw:latest
ports:
- "18789:18789"
env_file:
- .env.openclaw
volumes:
- openclaw-data:/data
# .env.openclaw
OPENAI_API_KEY=sk-proj-xxxx
ANTHROPIC_API_KEY=sk-ant-xxxx
TELEGRAM_BOT_TOKEN=your-token
OPENCLAW_DASHBOARD_PASSWORD=secure-pwd
记得将 .env.openclaw 添加到 .gitignore 和 .dockerignore 中。
查看当前环境变量
使用 openclaw config get 命令查看当前生效的配置(包括来自环境变量的配置):
# 查看所有配置
openclaw config get
# 查看特定配置项
openclaw config get port
openclaw config get log.level
# 查看所有 API 密钥(掩码显示)
openclaw config get models
总结
环境变量是配置 OpenClaw 的灵活方式,几个使用建议:
- 敏感信息(API 密钥、密码)优先使用环境变量或
.env文件,不要写入配置文件 - Docker 部署使用
env_file集中管理变量,并确保文件不被提交到版本控制 - 开发环境使用
.env文件方便管理,生产环境使用系统级环境变量或密钥管理服务 - 记住优先级规则:系统环境变量 >
.env文件 > 配置文件 > 默认值