最近在安装 OpenClaw Gateway 时,遇到了一个比较棘手的错误:systemctl is-enabled unavailable。看起来只是简单的 systemd 报错,但深挖下去涉及 systemd user service、Node.js 环境以及 PATH 变量的配置问题。
运行环境
这次测试基于以下环境:
- Windows 11 + WSL2
- Ubuntu 24.04.4 LTS
- nvm + Node v24.14.0
- OpenClaw 2026.3.2
执行 openclaw onboard --install-daemon 后,终端报出:
Gateway service check failed:
Error: systemctl is-enabled unavailable
Command failed: systemctl --user is-enabled openclaw-gateway.service
架构分析
OpenClaw Gateway 依赖 systemd user service 来守护进程。流程大致是 CLI 调用 systemctl --user 启动 openclaw-gateway.service,底层由 Node 运行时支撑。任何一层的环境缺失都可能导致启动失败。
排查过程
先检查服务状态:
systemctl --user is-enabled openclaw-gateway.service
输出显示为 disabled。虽然启用服务能解决一部分问题,但根本原因在于 systemd 不会自动加载 .bashrc 或 nvm 的环境变量。
解决方案
关键在于修改 service 文件,显式指定 Node 和 OpenClaw 的路径。
首先确认可执行文件位置:
which node
which openclaw
输出类似 /home/tesla/.nvm/versions/node/v24.14.0/bin/node。
接着编辑 ~/.config/systemd/user/openclaw-gateway.service,重点调整 [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
注意这里必须使用绝对路径,并且显式定义 PATH,否则 systemd 找不到命令。


