最近在安装 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 启动方式
这篇文章记录了完整的排查过程 + 最终解决方案。
一、运行环境
我的环境如下:
Windows 11 + 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 一共踩了三个坑:
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
九、成功展示
Gateway 成功启动。


