本文档是《小型服务器更新 OpenClaw 完整指南》的补充,记录更新完成后启动服务时遇到的问题和解决方案。
- 前置条件
- 问题一:内存溢出导致无法启动
- 问题二:Gateway 服务配置过期
- 问题三:systemd 服务管理
- 问题四:远程访问配置
- 问题五:API 密钥配置
- 完整的启动流程
在开始之前,确保你已经:
- ✅ 完成了 OpenClaw 的更新(参考《小型服务器更新 OpenClaw 完整指南》)
- ✅ OpenClaw 已安装在
/opt/openclaw/node_modules/openclaw/ - ✅ 创建了启动脚本
/usr/local/bin/openclaw - ✅ 可以执行
openclaw –version并看到版本号
直接运行 openclaw 命令时出现以下错误:
[root@server ~]# openclaw
<— Last few GCs —>
[63589:0x6c4c000] 53443 ms: Mark-Compact 508.2 (514.4) -> 506.7 (514.9) MB [63589:0x6c4c000] 54812 ms: Mark-Compact 508.8 (514.9) -> 508.0 (519.7) MB
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
Node.js 默认的内存限制(通常 512MB-1GB)不足以支撑 OpenClaw 的运行。OpenClaw 在启动时需要:
- 加载大量的依赖模块
- 初始化 node-llama-cpp 的 C++ 绑定
- 加载配置和插件系统
在 2GB 内存的小型服务器上,默认限制会导致内存溢出。
GPT plus 代充 只需 145NODE_OPTIONS=“–max-old-space-size=1536” openclaw
这个命令只对当前执行有效,关闭终端后失效。
创建一个包装脚本来自动设置内存限制:
# 1. 删除旧的软链接 rm /usr/local/bin/openclaw
2. 创建包装脚本
cat > /usr/local/bin/openclaw <<‘EOF’ #!/bin/bash export NODE_OPTIONS=“–max-old-space-size=1536” exec node /opt/openclaw/node_modules/openclaw/openclaw.mjs “$@” EOF
3. 赋予执行权限
chmod +x /usr/local/bin/openclaw
4. 验证
openclaw –version
脚本说明:
NODE_OPTIONS=“–max-old-space-size=1536”:设置 Node.js 堆内存上限为 1.5GBexec node …:执行 OpenClaw 主程序“$@”:传递所有命令行参数(如openclaw gateway run)
内存分配建议:
| 服务器内存 | 推荐设置 | 说明 |
|---|---|---|
| 2GB | 1536MB | 为系统保留约 300MB |
| 4GB | 3072MB | 为系统保留约 1GB |
| 8GB+ | 6144MB | 可以更高,但通常不需要 |
GPT plus 代充 只需 145[root@server ~]# openclaw –version 2026.1.30
如果能正常显示版本号,说明内存问题已解决。
运行 openclaw gateway run 时出现错误:
[root@server ~]# openclaw gateway run
03:36:01 Gateway failed to start: gateway already running (pid 66708); lock timeout after 5000ms If the gateway is supervised, stop it with: openclaw gateway stop 03:36:01 Port 18789 is already in use. 03:36:01 Gateway service appears enabled. Stop it first. 03:36:01 Tip: openclaw gateway stop 03:36:01 Or: systemctl –user stop openclaw-gateway.service
当你手动更新 OpenClaw 时(通过打包传输方式),systemd 服务配置文件仍然指向旧版本的路径和配置:
- 路径错误:服务配置指向
/usr/lib/node_modules/openclaw,但实际安装在/opt/openclaw - 版本不匹配:服务配置中的版本号还是旧版本(如 1.29)
- 缺少内存限制:旧配置没有设置
NODE_OPTIONS
GPT plus 代充 只需 145# 尝试正常停止 openclaw gateway stop
如果无法停止,查找进程并强制终止
ps aux | grep openclaw kill <进程ID>
# 卸载旧服务配置 openclaw gateway uninstall
重新安装(会自动生成新的 systemd 配置)
openclaw gateway install
openclaw gateway install 做了什么:
- 在
~/.config/systemd/user/创建openclaw-gateway.service文件 - 自动检测当前 OpenClaw 的安装路径
- 配置服务的启动命令、环境变量、重启策略
- 启用开机自启动
安装后的服务配置默认不包含内存限制,需要手动添加:
GPT plus 代充 只需 145# 编辑服务配置文件 nano ~/.config/systemd/user/openclaw-gateway.service
在 [Service] 段中,找到 Environment=OPENCLAW_GATEWAY_PORT=18789 这一行,在它之前添加:
Environment=“NODE_OPTIONS=–max-old-space-size=1536”
完整的 [Service] 段应该类似:
GPT plus 代充 只需 145[Service] ExecStart=/usr/bin/node /opt/openclaw/node_modules/openclaw/dist/index.js gateway –port 18789 Restart=always RestartSec=5 KillMode=process Environment=HOME=/root Environment=“PATH=/root/.local/share/pnpm:/root/.local/bin:/usr/local/bin:/usr/bin:/bin” Environment=“NODE_OPTIONS=–max-old-space-size=1536” Environment=OPENCLAW_GATEWAY_PORT=18789 Environment=OPENCLAW_GATEWAY_TOKEN=你的token Environment=“OPENCLAW_SYSTEMD_UNIT=openclaw-gateway.service” Environment=OPENCLAW_SERVICE_MARKER=openclaw Environment=OPENCLAW_SERVICE_KIND=gateway Environment=OPENCLAW_SERVICE_VERSION=2026.1.30
或者使用 sed 命令快速添加:
sed -i ‘/Environment=OPENCLAW_GATEWAY_PORT/i Environment=“NODE_OPTIONS=–max-old-space-size=1536”’
~/.config/systemd/user/openclaw-gateway.service
GPT plus 代充 只需 145# 重载 systemd 配置 systemctl –user daemon-reload
启动 Gateway 服务
openclaw gateway start
检查服务状态
openclaw gateway status
成功启动后应该看到:
[root@server ~]# openclaw gateway status
🦞 OpenClaw 2026.1.30 (76b5208)
Gateway service: running (PID 70485) Port: 18789 Uptime: 2m 15s
OpenClaw Gateway 使用 systemd 作为服务管理器,提供以下功能:
GPT plus 代充 只需 145[Service] Restart=always RestartSec=5
说明:
Restart=always:无论什么原因退出(崩溃、被杀、正常退出)都会自动重启RestartSec=5:崩溃后等待 5 秒再重启,防止疯狂重启消耗资源
测试自动恢复:
# 查看当前进程 ID openclaw gateway status
强制杀死进程
kill -9 <PID>
等待 5 秒后再次检查
sleep 6 openclaw gateway status
应该看到新的 PID,说明服务已自动恢复
GPT plus 代充 只需 145[Install]
GPT plus 代充 只需 145[Install]
WantedBy=default.target
检查是否启用:
systemctl –user is-enabled openclaw-gateway.service
输出:enabled
手动启用/禁用:
GPT plus 代充 只需 145# 启用开机自启
systemctl –user enable openclaw-gateway.service
禁用开机自启
systemctl –user disable openclaw-gateway.service
# 启动服务 openclaw gateway start
或
systemctl –user start openclaw-gateway.service
停止服务
openclaw gateway stop
或
systemctl –user stop openclaw-gateway.service
重启服务
openclaw gateway restart
或
systemctl –user restart openclaw-gateway.service
查看状态
openclaw gateway status
或
systemctl –user status openclaw-gateway.service
查看日志
journalctl –user -u openclaw-gateway.service -f
GPT plus 代充 只需 145~/.config/systemd/user/openclaw-gateway.service
查看完整配置:
cat ~/.config/systemd/user/openclaw-gateway.service
GPT plus 代充 只需 145# 查看详细错误日志 journalctl –user -u openclaw-gateway.service -n 50
# 修改配置文件后必须重载 systemctl –user daemon-reload
然后重启服务
openclaw gateway restart
GPT plus 代充 只需 145# 查看失败原因 systemctl –user status openclaw-gateway.service
重置失败状态
systemctl –user reset-failed openclaw-gateway.service
重新启动
openclaw gateway start
在浏览器中访问 http://服务器IP:18789 时出现:
ERR_CONNECTION_REFUSED 或 ERR_CONNECTION_RESET
OpenClaw Gateway 默认绑定在 127.0.0.1(本地回环地址),只允许本机访问。这是出于安全考虑的设计。
验证绑定地址:
GPT plus 代充 只需 145ss -tlnp | grep 18789
输出:LISTEN 0 511 127.0.0.1:18789 0.0.0.0:*
如果看到 127.0.0.1:18789,说明只绑定了本地地址。
有两种方式访问远程服务器上的 Gateway:
在本地电脑上执行以下命令:
ssh -N -L 18789:127.0.0.1:18789 root@<服务器公网IP>
命令说明:
-N:不执行远程命令,只建立隧道-L 18789:127.0.0.1:18789:将本地 18789 端口转发到服务器的 127.0.0.1:18789root@<服务器公网IP>:SSH 连接信息
使用步骤:
- 在本地终端执行上述命令(保持终端打开)
- 在本地浏览器打开: http://localhost:18789/?token=你的token
优点:
- ✅ 安全:流量通过 SSH 加密
- ✅ 无需修改防火墙
- ✅ 无需暴露端口到公网
缺点:
- ❌ 需要保持 SSH 连接
- ❌ 每次访问前需要建立隧道
警告:此方法会将 Gateway 暴露到公网,存在安全风险。建议配合防火墙和强密码使用。
步骤 1:修改配置文件
GPT plus 代充 只需 145nano ~/.openclaw/openclaw.json
找到 gateway 配置段,修改 bind 字段:
{
“gateway”: {
GPT plus 代充 只需 145"port": 18789, "bind": "0.0.0.0", // 改为 0.0.0.0 "token": "你的token"
} }
步骤 2:配置防火墙
# 如果使用 firewalld firewall-cmd –permanent –add-port=18789/tcp firewall-cmd –reload
如果使用 iptables
iptables -A INPUT -p tcp –dport 18789 -j ACCEPT service iptables save
阿里云/腾讯云:还需要在控制台的安全组中开放 18789 端口
步骤 3:重启 Gateway
GPT plus 代充 只需 145openclaw gateway restart
步骤 4:验证绑定
ss -tlnp | grep 18789
输出:LISTEN 0 511 0.0.0.0:18789 0.0.0.0:*
现在可以通过公网 IP 访问:
GPT plus 代充 只需 145http://<服务器公网IP>:18789/?token=你的token
安全建议:
- 使用强随机 token(OpenClaw 默认生成的 token 已经足够强)
- 定期更换 token
- 配置防火墙只允许特定 IP 访问
- 考虑使用 Nginx 反向代理 + HTTPS
Gateway 启动后,日志中出现以下错误:
03:27:04 [diagnostic] lane task error: lane=main durationMs=34
error=“FailoverError: No API key found for provider ”anthropic“. Auth store: /root/.openclaw/agents/main/agent/auth-profiles.json”
03:27:04 [llm-slug-generator] Failed to generate slug: FailoverError: No API key found for provider “anthropic”
OpenClaw 的某些内部功能(如 session-memory hook 的 slug 生成器)默认使用 Anthropic 的 claude-opus-4-5 模型。如果你没有配置 Anthropic API 密钥,这些功能会失败。
好消息:这个错误不会阻止 Gateway 运行。系统会使用回退方案(如时间戳 slug)。
如果你有 Anthropic API 密钥:
GPT plus 代充 只需 145openclaw auth add anthropic
按提示输入 API 密钥。
验证配置:
cat ~/.openclaw/agents/main/agent/auth-profiles.json
应该看到 anthropic 配置:
GPT plus 代充 只需 145{ “anthropic”: {
"apiKey": "sk-ant-..."
} }
如果你暂时不需要 slug 生成功能,可以忽略这个错误。系统会自动使用时间戳作为 slug:
GPT plus 代充 只需 14503:27:04 [session-memory] Generated slug: null 03:27:04 [session-memory] Using fallback timestamp slug: 0327 03:27:04 [session-memory] Generated filename: 2026-02-01-0327.md
查看已配置的提供商:
cat ~/.openclaw/agents/main/agent/auth-profiles.json | jq ‘keys’
删除 API 密钥:
GPT plus 代充 只需 145openclaw auth remove anthropic
更新 API 密钥:
openclaw auth add anthropic # 会覆盖旧密钥
GPT plus 代充 只需 145# 1. 验证安装 openclaw –version
2. 初始化配置(如果是首次使用)
openclaw onboard
3. 卸载旧的 Gateway 服务配置
openclaw gateway uninstall
4. 重新安装 Gateway 服务
openclaw gateway install
5. 添加内存限制到服务配置
6. 重载 systemd 配置
systemctl –user daemon-reload
7. 启动 Gateway
openclaw gateway start
8. 检查状态
openclaw gateway status
9. 查看日志(可选)
journalctl –user -u openclaw-gateway.service -f
# 启动 Gateway openclaw gateway start
停止 Gateway
openclaw gateway stop
重启 Gateway
openclaw gateway restart
查看状态
openclaw gateway status
在本地电脑上:
GPT plus 代充 只需 145# 建立 SSH 隧道 ssh -N -L 18789:127.0.0.1:18789 root@<服务器IP>
在本地浏览器中打开:
http://localhost:18789/?token=你的token
检查清单:
- [ ]
openclaw –version显示正确版本 - [ ]
openclaw gateway status显示 “running” - [ ] 端口 18789 正在监听:
ss -tlnp | grep 18789 - [ ] 服务已启用开机自启:
systemctl –user is-enabled openclaw-gateway.service输出 “enabled” - [ ] 可以通过浏览器访问 Control UI
- [ ] 日志中没有严重错误:
journalctl –user -u openclaw-gateway.service -n 50
症状:openclaw gateway start 后立即退出
排查步骤:
GPT plus 代充 只需 145# 1. 查看详细日志 journalctl –user -u openclaw-gateway.service -n 100
2. 检查端口是否被占用
ss -tlnp | grep 18789
3. 手动运行 Gateway(查看实时输出)
openclaw gateway run
4. 检查配置文件
cat ~/.openclaw/openclaw.json cat ~/.config/systemd/user/openclaw-gateway.service
症状:日志中出现 “JavaScript heap out of memory”
解决:
# 检查是否设置了内存限制 grep “NODE_OPTIONS” ~/.config/systemd/user/openclaw-gateway.service
如果没有,添加内存限制
重载并重启
systemctl –user daemon-reload openclaw gateway restart
症状:浏览器显示 “无法连接” 或 “连接被拒绝”
排查步骤:
GPT plus 代充 只需 145# 1. 确认 Gateway 正在运行 openclaw gateway status
2. 确认端口正在监听
ss -tlnp | grep 18789
3. 检查绑定地址
如果输出是 127.0.0.1:18789,需要使用 SSH 隧道
如果输出是 0.0.0.0:18789,可以直接访问
4. 检查防火墙(如果绑定到 0.0.0.0)
firewall-cmd –list-ports
或
iptables -L -n | grep 18789
5. 检查阿里云/腾讯云安全组
需要在控制台开放 18789 端口
症状:openclaw gateway status 显示 uptime 很短,不断重启
排查步骤:
# 查看重启原因
journalctl –user -u openclaw-gateway.service -n 200 | grep -E “error|Error|ERROR|failed|Failed”
常见原因:
1. 内存不足 → 增加内存限制
2. 配置错误 → 检查 ~/.openclaw/openclaw.json
3. API 密钥无效 → 重新配置 API 密钥
4. 端口冲突 → 更换端口或停止冲突进程
- 内存限制是必须的:小型服务器必须设置
NODE_OPTIONS=“–max-old-space-size=1536”
- 更新后重新安装服务:手动更新后必须运行
openclaw gateway install 更新 systemd 配置
- 使用 systemd 管理服务:不要手动运行
openclaw gateway run,使用 openclaw gateway start
- SSH 隧道是最安全的访问方式:避免将 Gateway 直接暴露到公网
- API 密钥错误可以忽略:如果不影响核心功能,可以暂时忽略 slug 生成器的错误
- 小型服务器更新 OpenClaw 完整指南 - 如何编译和部署
- OpenClaw 官方文档 - 官方使用指南
- systemd 用户服务 - systemd 用户服务详解
NODE_OPTIONS=“–max-old-space-size=1536”openclaw gateway install 更新 systemd 配置openclaw gateway run,使用 openclaw gateway start文档版本:1.0 最后更新:2026-02-01 适用版本:OpenClaw 2026.1.30+ 测试环境:Alibaba Cloud Linux 3 + 2GB 内存
祝你使用愉快!如有问题,请参考故障排查章节或查阅官方文档。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/214132.html