在国内网络环境下给 OpenClaw 运行环境配置全局代理
目的:解决 OpenClaw(Node.js 常驻进程 + systemd 服务)在国内网络环境下无法正常访问部分网络服务 的问题。
背景与思路
OpenClaw 属于 Node.js 运行时 + 常驻后台服务 的形态。很多时候你在终端里手动 curl 能走代理,并不代表 systemd 启动的服务(比如 openclaw-gateway)也能继承到代理环境变量。
所以这里分两步:
- 先准备一个 本机可用的 HTTP 代理(很多程序不直接支持 SOCKS5,只认 HTTP)。
- 再把 HTTP/HTTPS 代理 写到系统与 systemd 的环境变量 里,确保:
- 终端命令默认走代理
- systemd system 级服务走代理
- systemd user 级服务走代理(OpenClaw gateway 通常跑在这里)
提醒:请在遵守法律法规与网络策略的前提下使用。
1)准备本地 HTTP 代理(示例端口)
文章给的示例:本机同时提供
- SOCKS5:
127.0.0.1:10808 - HTTP:
127.0.0.1:10809
(具体代理软件/协议不展开,这里只记录“如何让 OpenClaw 和系统服务使用它”。)
验证本地 HTTP 代理可用
能返回公网 IP 说明 OK:
bash
curl -x http://127.0.0.1:10809 https://httpbin.org/ip2)配置系统级 HTTP/HTTPS 代理
2.1 让终端命令默认走代理(/etc/environment)
备份并编辑:
bash
sudo cp /etc/environment /etc/environment.bak.$(date +%F_%H%M%S)
sudo vim /etc/environment建议整段覆盖写入(按你的端口调整):
bash
ALL_PROXY=http://127.0.0.1:10809
all_proxy=http://127.0.0.1:10809
HTTP_PROXY=http://127.0.0.1:10809
http_proxy=http://127.0.0.1:10809
HTTPS_PROXY=http://127.0.0.1:10809
https_proxy=http://127.0.0.1:10809
NO_PROXY=localhost,127.0.0.1,::1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,.local,.lan
no_proxy=localhost,127.0.0.1,::1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,.local,.lan让当前 shell 立刻生效:
bash
set -a
. /etc/environment
set +a
env | grep -i proxy验证能访问外网(示例用 Google;你也可以换成其它站点):
bash
curl -I -L --connect-timeout 5 --max-time 10 https://www.google.com2.2 让 systemd(system 级服务)继承代理
创建 drop-in:
bash
sudo mkdir -p /etc/systemd/system.conf.d
sudo vim /etc/systemd/system.conf.d/10-proxy.conf写入(注意这里是 DefaultEnvironment,且要用引号包住每个 kv):
ini
[Manager]
DefaultEnvironment="ALL_PROXY=http://127.0.0.1:10809" "all_proxy=http://127.0.0.1:10809" "HTTP_PROXY=http://127.0.0.1:10809" "http_proxy=http://127.0.0.1:10809" "HTTPS_PROXY=http://127.0.0.1:10809" "https_proxy=http://127.0.0.1:10809" "NO_PROXY=localhost,127.0.0.1,::1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,.local,.lan" "no_proxy=localhost,127.0.0.1,::1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,.local,.lan"让 systemd 重新执行自身加载配置:
bash
sudo systemctl daemon-reexec2.3 让 systemd --user(用户服务)继承代理
OpenClaw 的 gateway 常驻进程很多情况下是 user service,所以还要给 user systemd 配。
创建用户环境文件:
bash
mkdir -p ~/.config/environment.d
vim ~/.config/environment.d/10-proxy.conf写入:
bash
ALL_PROXY=http://127.0.0.1:10809
all_proxy=http://127.0.0.1:10809
HTTP_PROXY=http://127.0.0.1:10809
http_proxy=http://127.0.0.1:10809
HTTPS_PROXY=http://127.0.0.1:10809
https_proxy=http://127.0.0.1:10809
NO_PROXY=localhost,127.0.0.1,::1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,.local,.lan
no_proxy=localhost,127.0.0.1,::1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,.local,.lan让 user systemd 重新加载:
bash
systemctl --user daemon-reexec验证 user systemd 环境里确实有代理:
bash
systemctl --user show-environment | grep -i proxy最后重启 OpenClaw gateway 并检查状态:
bash
systemctl --user restart openclaw-gateway.service
openclaw status写在最后
原文提到:上述步骤主要由 AI 生成,作者做了整理与验证;并且一个很现实的点是——这些配置其实也可以交给 OpenClaw 自己去完成(前提是它有足够的执行权限与安全边界)。
