收起左侧

为 OpenClaw 系统服务单独配置代理,解决 Telegram 连接失败问题!

0
回复
180
查看
[ 复制链接 ]

17

主题

36

回帖

0

牛值

初出茅庐

摘要:通过 systemctl --user 启动的 OpenClaw Gateway 服务默认不继承终端代理,导致无法连接 Telegram 等外网服务。本文教你使用 systemd 的 Drop-In 机制,只为该服务单独设置代理,安全、精准、持久生效。

🌐 问题背景:为什么 OpenClaw 连不上 Telegram?

你可能遇到过这种情况:

  • 终端设置代理服务
export http_proxy=http://192.168.31.197:7890
export https_proxy=http://192.168.31.197:7890
export all_proxy=socks5://192.168.31.197:7891
export no_proxy="localhost,127.0.0.1,192.168.0.0/16,.local"
  • ✅ 成功;在终端执行 curl https://api.telegram.org
  • ❌失败:但 systemctl --user start openclaw-gateway 作为后台服务 一直报网络超时或连接拒绝,导致Openclaw一直无法连接上Telegram。

原因很简单
你在终端设置的代理(如 export http_proxy=...只对当前 shell 有效。而 systemctl --user start openclaw-gateway 启动的服务由 systemd 管理,运行在独立环境中,完全“看不见”你的终端代理变量

尤其 OpenClaw Gateway 依赖 Telegram Bot API,若无法走代理,核心功能将直接失效。

✅ 正确方案:使用 systemd “Drop-In” 覆盖机制

systemd 提供了一种优雅方式:不修改原始服务文件,仅通过覆盖目录添加代理配置

🔧 步骤 1:确认服务位置

systemctl --user show -p FragmentPath openclaw-gateway.service

示例输出:

/home/Jaben/.config/systemd/user/openclaw-gateway.service

📁 步骤 2:创建覆盖目录

mkdir -p ~/.config/systemd/user/openclaw-gateway.service.d

📝 步骤 3:创建代理配置文件

nano ~/.config/systemd/user/openclaw-gateway.service.d/proxy.conf

填入你的代理信息(根据实际地址调整):

[Service]
# HTTP/HTTPS 代理(Clash 默认 7890)
Environment="http_proxy=http://192.168.31.197:7890"
Environment="https_proxy=http://192.168.31.197:7890"
Environment="HTTP_PROXY=http://192.168.31.197:7890"
Environment="HTTPS_PROXY=http://192.168.31.197:7890"

# SOCKS5 代理(Clash 默认 7891)
Environment="all_proxy=socks5://192.168.31.197:7891"
Environment="ALL_PROXY=socks5://192.168.31.197:7891"

# 排除本地和内网
Environment="no_proxy=localhost,127.0.0.1,192.168.,.local"
Environment="NO_PROXY=localhost,127.0.0.1,192.168.,.local"

💡 小贴士

  • 同时设置大小写变量,兼容不同语言(Node.js / Go / Python 等)。
  • 192.168. 可匹配所有 192.168.x.x 内网地址,比 CIDR 更通用。

🔄 步骤 4:重载并重启服务

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

一键命令输入

mkdir -p ~/.config/systemd/user/openclaw-gateway.service.d
cat > ~/.config/systemd/user/openclaw-gateway.service.d/proxy.conf <<EOF
[Service]
Environment="http_proxy=http://192.168.31.197:7890"
Environment="https_proxy=http://192.168.31.197:7890"
Environment="HTTP_PROXY=http://192.168.31.197:7890"
Environment="HTTPS_PROXY=http://192.168.31.197:7890"
Environment="all_proxy=socks5://192.168.31.197:7891"
Environment="ALL_PROXY=socks5://192.168.31.197:7891"
Environment="no_proxy=localhost,127.0.0.1,192.168.,.local"
Environment="NO_PROXY=localhost,127.0.0.1,192.168.,.local"
EOF

🔍 如何验证代理是否真正生效?

✅ 方法 1:查看进程真实环境(最可靠!)

运行以下命令:

PID=$(systemctl --user show openclaw-gateway -p MainPID --value)
tr '\0' '\n' < /proc/$PID/environ | grep -i proxy

🟢 成功走代理的输出示例:

http_proxy=http://192.168.31.197:7890
https_proxy=http://192.168.31.197:7890
HTTP_PROXY=http://192.168.31.197:7890
HTTPS_PROXY=http://192.168.31.197:7890
all_proxy=socks5://192.168.31.197:7891
ALL_PROXY=socks5://192.168.31.197:7891
no_proxy=localhost,127.0.0.1,192.168.,.local
NO_PROXY=localhost,127.0.0.1,192.168.,.local

✅ 如果你看到类似以上内容,说明代理环境变量已成功注入到 OpenClaw 进程中

🔴 未配置代理的输出:

(无任何输出)

或仅显示其他无关变量(如 PATHHOME),但没有 proxy 相关字段


📊 方法 2:观察服务日志(功能级验证)

journalctl --user -u openclaw-gateway -f

🟢 成功走代理的日志特征:

  • 不再出现 ETIMEDOUTECONNREFUSEDgetaddrinfo ENOTFOUND 等网络错误;
  • 出现类似以下成功连接信息:
[INFO] Connected to Telegram Bot API successfully
[DEBUG] Fetched remote config from https://api.openclaw.com/v1/config
[INFO] Gateway online and ready

🔴 未走代理的典型错误:

Error: connect ETIMEDOUT 149.154.167.220:443
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1494:16)
[ERROR] Failed to connect to Telegram API

💡 149.154.167.220 是 Telegram 的 IP,国内直连通常超时。


⚠️ 重要提醒

  • systemctl --user show --property=Environment openclaw-gateway可能不显示代理变量,这是 systemd 的显示限制,不代表没生效
  • 请以 /proc/$PID/environ 和实际日志行为准

🛡️ 为什么推荐这种方式?

优势 说明
精准隔离 仅影响 openclaw-gateway,其他程序不受干扰
无需全局代理 避免整个系统流量被代理,更安全
持久生效 重启后依然有效,无需手动干预
非侵入式 不修改原始服务文件,便于升级维护

💬 结语

下次再遇到 systemctl --user 服务无法访问外网的问题,记住:它需要自己的代理配置

这一招不仅适用于 OpenClaw,也适用于任何基于 Node.js、Electron、Python 的 systemd 用户服务。

如有修改将更新在文章底部留言,觉得有用可以点赞+转发+推荐,点点关注,你的支持是我更新的最大动力❤。
收藏
送赞 2
分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则