说明:仅供学习使用,请勿用于非法用途,若有侵权,请联系博主删除

作者:zhu6201976

最近在安装 OpenClaw Gateway 时,遇到了一个比较奇怪的错误:

systemctl is-enabled unavailable
Command failed: systemctl --user is-enabled openclaw-gateway.service

看起来只是一个简单的 systemd 错误,但实际上背后涉及:

  • systemd user service

  • Node.js / nvm 环境

  • PATH 环境变量

  • CLI daemon 启动方式

这篇文章记录了 完整的排查过程 + 最终解决方案。


一、运行环境

我的环境如下:

Window11 + WSL2
Ubuntu 24.04.4 LTS
nvm + Node v24.14.0
OpenClaw 2026.3.2

安装 OpenClaw 后执行:

openclaw onboard --install-daemon

出现错误:

Gateway service check failed:
Error: systemctl is-enabled unavailable
Command failed: systemctl --user is-enabled openclaw-gateway.service


二、OpenClaw Gateway 架构

OpenClaw Gateway 实际上是通过 systemd user service 运行的。

架构大致如下:

OpenClaw CLI
│
▼
openclaw gateway install
│
▼
systemctl --user
│
▼
systemd user service
│
▼
openclaw-gateway.service
│
▼
Node runtime (nvm)
│
▼
OpenClaw Gateway

因此任何一层出问题都会导致 Gateway 无法启动。


三、systemd 启动流程

当执行:

openclaw gateway start

实际运行流程是:

openclaw gateway start
│
▼
systemctl --user restart openclaw-gateway.service
│
▼
systemd user service
│
▼
ExecStart
│
▼
node openclaw gateway run

所以本质上就是:

systemd 负责守护 Node 进程。


四、第一个问题:systemd user service 未启用

先检查 service 状态:

systemctl --user is-enabled openclaw-gateway.service

输出:

disabled

启用 service:

systemctl --user enable openclaw-gateway.service


五、最终解决方案

找到 node 和 openclaw 的路径:

which node
which openclaw

输出:

/home/tesla/.nvm/versions/node/v24.14.0/bin/node
/home/tesla/.nvm/versions/node/v24.14.0/bin/openclaw

然后修改 service 文件:

~/.config/systemd/user/openclaw-gateway.service

完整配置:

[Unit]
Description=OpenClaw Gateway
After=network.target

[Service]
Type=simple
Environment="PATH=/home/tesla/.nvm/versions/node/v24.14.0/bin:/usr/local/bin:/usr/bin:/bin"
ExecStart=/home/tesla/.nvm/versions/node/v24.14.0/bin/openclaw gateway run
Restart=always
RestartSec=5

[Install]
WantedBy=default.target


六、重新加载 systemd

执行:

systemctl --user daemon-reload
systemctl --user restart openclaw-gateway

检查状态:

systemctl --user status openclaw-gateway

输出:

Active: active (running)
Main PID: node

说明服务已经正常运行。


七、最终运行效果

● openclaw-gateway.service - OpenClaw Gateway
Loaded: loaded
Active: active (running)
Main PID: node

Gateway 成功启动 🎉


八、总结(踩坑记录)

这次安装 OpenClaw Gateway 一共踩了 三个坑:

1 systemd user service 未启用

需要执行:

systemctl --user enable openclaw-gateway.service


2 systemd 不加载 nvm 环境

解决:

Environment="PATH=..."


3 ExecStart 必须使用绝对路径

否则会出现:

openclaw: command not found


九、经验总结

如果使用 nvm + systemd 运行 Node 服务,一定要注意:

systemd 不会加载 .bashrc
systemd 不会加载 nvm
systemd PATH 很干净

最稳定的方式是:

使用绝对路径
显式指定 PATH


十、成功展示

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐