OpenClaw启动就报错?90%的人都是环境变量配错了!附2026最新避坑清单
💡 前言:
刚装好 OpenClaw,兴致勃勃想让它干活,结果终端一片红字Error: Configuration failed?
或者服务启动了,一调用大模型就提示Missing API Key?
别慌!根据 2026 年社区统计,90% 的启动故障都源于环境变量配置错误。
本文整理了最新版(v2026.3+)最常见的 5 个“致命”配置坑,并附上一键复制的正确模板和排查命令,助你 5 分钟内满血复活!
🚨 症状一:容器启动即退出 (Exit Code 1)
报错日志关键词:Permission denied, Config validation failed, Secret key missing
❌ 错误原因
2026 新版安全策略升级,如果未设置 OPENCLAW_SECRET_KEY 或配置文件权限不对,程序会主动拒绝启动以保护数据安全。
✅ 解决方案
- 必须生成随机密钥:
不要随便填个 "123456"!在终端运行:# Mac/Linux export MY_KEY=$(openssl rand -hex 32) # Windows PowerShell $env:MY_KEY = -join ((48..57) + (65..90) + (97..122) | Get-Random -Count 64 | ForEach-Object {[char]$_}) - 检查
.env文件:
确保你的.env文件里有这一行(替换为你刚才生成的值):OPENCLAW_SECRET_KEY=你生成的那串长字符 - 修复权限(Linux/Docker常见):
chmod 600 .env chmod -R 777 ~/openclaw-data
🚨 症状二:能登录后台,但所有技能都报错“无API Key”
报错日志关键词:LLM Provider not configured, Connection timeout, 401 Unauthorized
❌ 错误原因
这是最典型的**“变量名写错”或“代理没配对”**。
- 变量名拼写错误(如写成
DEEPSEEK_KEY而不是DEEPSEEK_API_KEY)。 - 国内网络未配置 HTTPS 代理,导致无法连接海外/国内公有云 API。
- 修改了
.env但忘记重启容器。
✅ 解决方案
请对照以下2026 标准模板检查你的 .env 文件:
# --- 必填:大模型配置 (二选一,不要同时开启多个Provider除非你懂高级配置) ---
# 选项 A: DeepSeek (推荐)
LLM_PROVIDER=deepseek
DEEPSEEK_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxx
# 选项 B: 阿里云百炼
# LLM_PROVIDER=aliyun
# ALIYUN_DASHSCOPE_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxx
# --- 必填:国内网络代理 (没有代理软件请删除这两行!) ---
# 注意:必须是 HTTPS_PROXY,只配 HTTP_PROXY 没用!
HTTPS_PROXY=http://127.0.0.1:7890
HTTP_PROXY=http://127.0.0.1:7890
NO_PROXY=localhost,127.0.0.1,host.docker.internal
# --- 必填:管理员密码 ---
OPENCLAW_ADMIN_PASSWORD=你的强密码
OPENCLAW_SECRET_KEY=你的64位随机密钥
🔥 关键动作:修改后务必执行重启!
docker-compose down
docker-compose up -d
# 或者
docker restart openclaw
🚨 症状三:特殊字符导致密码失效
现象:明明设置了密码,登录时却提示 Invalid credentials。
❌ 错误原因
密码中包含 $, !, ', " 等特殊字符,在 Shell 或 Docker 解析时被转义或截断了。
例如:PASSWORD=My$Pass! 可能被解析为 My (因为 $P 被当成变量)。
✅ 解决方案
在 .env 文件中,用双引号包裹包含特殊字符的值:
# ❌ 错误写法
OPENCLAW_ADMIN_PASSWORD=My$SuperPass!
# ✅ 正确写法 (加引号)
OPENCLAW_ADMIN_PASSWORD="My$SuperPass!"
注意:Docker Compose 通常能自动处理 .env 中的引号,但为了保险起见,建议密码尽量使用“字母+数字”组合,避免特殊符号。
🚨 症状四:变量写了却没生效 (幽灵变量)
现象:docker exec 进去看环境变量是空的,或者还是旧值。
❌ 错误原因
.env文件名错了(比如存成了.env.txt,Windows 用户高发)。docker-compose.yml中没有引用env_file。- 使用了
docker run命令但忘了加--env-file .env参数。
✅ 解决方案
自查三步走:
- 看文件名:在终端输入
ls -a,确认文件名叫.env且前面有点。 - 看配置:
- Compose 用户:检查 yaml 里是否有
env_file: - .env。 - Run 用户:检查命令里是否有
--env-file .env。
- Compose 用户:检查 yaml 里是否有
- 验证注入:
运行以下命令,如果看不到你的 Key,说明根本没注入成功:
如果有输出docker exec -it openclaw env | grep DEEPSEEKDEEPSEEK_API_KEY=sk...则成功;无输出则失败。
🚨 症状五:日志狂刷 "DNS resolution failed"
现象:日志里全是网络错误,技能完全不可用。
❌ 错误原因
Docker 容器内部的 DNS 解析挂了,或者代理地址写错了(比如代理软件没开,或者端口不是 7890)。
✅ 解决方案
- 指定容器 DNS:
在docker-compose.yml的services.openclaw下添加:dns: - 8.8.8.8 - 114.114.114.114 - 检查代理端口:
确认你的代理软件(***/Surge等)监听端口确实是7890。如果是7893或其他,请修改.env中的端口号。 - 临时关闭代理测试:
如果你确定网络直连没问题,先注释掉.env中的HTTP_PROXY和HTTPS_PROXY行,重启试试。
🛠️ 终极排查大招:一键诊断脚本
如果不确定哪里错了,复制这段命令到终端,它会自动帮你检查常见错误:
echo "🔍 开始诊断 OpenClaw 配置..."
# 1. 检查容器状态
if [ "$(docker ps -q -f name=openclaw)" ]; then
echo "✅ 容器正在运行"
else
echo "❌ 容器未运行!请检查启动命令或日志。"
docker logs openclaw --tail 20
exit 1
fi
# 2. 检查关键变量是否注入
echo "🔎 检查环境变量注入情况..."
if docker exec openclaw env | grep -q "OPENCLAW_SECRET_KEY"; then
echo "✅ 密钥已注入"
else
echo "❌ 密钥未注入!请检查 .env 文件或 docker 启动参数。"
fi
if docker exec openclaw env | grep -q "DEEPSEEK_API_KEY\|ALIYUN_DASHSCOPE_API_KEY"; then
echo "✅ 大模型 Key 已注入"
else
echo "⚠️ 未检测到大模型 Key,请确认你是否配置了对应 Provider。"
fi
# 3. 检查代理配置
if docker exec openclaw env | grep -q "HTTPS_PROXY"; then
echo "⚠️ 检测到代理配置,请确保代理软件正常运行且端口正确。"
else
echo "ℹ️ 未配置代理,如果是国内环境访问海外 API 可能会失败。"
fi
echo "🏁 诊断完成。如果以上都正常但仍报错,请查看完整日志:docker logs -f openclaw"
📝 总结:2026 配置黄金法则
- 敏感信息进
.env:别碰openclaw.json里的密码字段。 - Key 要对应 Provider:选了
deepseek就必须配DEEPSEEK_API_KEY。 - 代理要配 HTTPS:只配 HTTP 是没用的。
- 改完必重启:环境变量不热加载!
- 空格是大敌:
KEY= Value(错) vsKEY=Value(对)。
照着这份清单检查一遍,你的 OpenClaw 一定能稳稳跑起来!如果还有问题,欢迎把 docker logs 的最后 20 行贴出来,大家帮你一起看! 🦞
浙公网安备 33010602011771号