受够了网络反爬?这套 WebTop 方案,让云端 OpenClaw 像真人一样上网

0 阅读16分钟

浏览器是网络世界的入口

对于云端部署的 OpenClaw,有一个最大的痛点,就是浏览器没有显示界面,这会对 OpenClaw 的浏览器自动化操作产生很大的影响。

刷知乎、小红书、推特,或者看 Reddit 时,传统的 Headless(无头)浏览器几乎过不了人机验证,也很容易卡在扫码登录界面。

云服务器没有显示器,你连验证码长什么样都看不到,更别提接管操作了。

那么,有没有一种优雅的姿势,让云端的 OpenClaw 拥有一个“有血有肉”的真实桌面浏览器? 就像我们在本地自己电脑上浏览网页一样自由?

既能保留 Cookie 环境,又能在遇到验证码时,让你通过浏览器随时“远程附体”进行人工接管?

我花了几天时间,反复追问 Claude、GPT、Grok、Gemini、Kimi,在我的云服务器上跑通了他们一致推荐的方案:WebTop + Tailscale,并且成功登录谷歌、知乎、小红书等平台。

从此访问网页畅通无阻,它甚至还能自己去谷歌搜索自己想了解的事物。

我的实测环境

Oracle Cloud(新加坡区 Free Tier)4C CPU / 24GB 内存 。SCP 速度大约 1.5~2 MB/s,Ping 400ms延迟,所以远程桌面在人工接管时会感觉偏卡。好在 OpenClaw 自己通过 CDP 调用浏览器是本机通讯,不吃公网带宽,因此不会拖慢自动化性能。

如果你把 WebTop 跑在离自己更近的 VPS(或本地超微机),延迟和带宽体验都会好很多。下面所有参数都基于这台机器调出来的“高配方案”,如果你的资源更紧张(比如 2C4G 或 2C8G),记得在部署前对照文中的可调项做减法,确保 CPU、内存、带宽都匹配自己的上限。

OpenClaw 需要什么样的浏览器环境

为了发挥OpenClaw最大的潜力,它需要一个“有血有肉”的真实桌面浏览器,就像一个入职公司的正式员工,在自己的工位,用着 Chrome 浏览网页。

那么,什么才是真实的浏览器环境?

这个诉求再拆解一下:

  • 抗反爬:避免网站风控秒封
  • 浏览状态持久化: 它需要记住登录状态,浏览历史,cookie
  • 遇到登录/验证码可以人工接管

把这个需求喂给 AI 之后,首先了解到一个叫 Xvfb 的工具,它可以在服务器端为浏览器虚拟一个显示器,基本满足上面的诉求。

不过我并没有止步于此,继续 push AI:有没有其他方案?有没有更优解?

最后拿到四种候选方案,本质上都是在 Xvfb 上做了不同程度的封装:

  • Xvfb + noVNC: 自己直接配置Xvfb,这是最原始的组合
  • WebTop: LinuxServer.io 维护的 Docker 镜像,提供完整的 Linux 桌面环境,也内置浏览器。底层仍是 Xvfb,但做了完善封装,内存占用多一点,却换来稳定性和更简单的配置。无需客户端,浏览器即可访问远程桌面。
  • Selenium Chrome: 官方 Selenium 浏览器镜像 + VNC,运行在 Docker 中的 Selenium + Chrome 调试环境,通过 Xvfb 虚拟显示服务器
  • Playwright + xvfb: 最轻量,但需手动配置 VNC

虽然 WebTop 内存占用更高,但稳定性、反爬效果、接管体验、配置流程都优秀得多,所以所有 AI 都建议我选 WebTop。

理由:

  • 我的机器内存充足(24GB)(建议不少于4G)
  • 人工接管体验最佳(完整桌面,可装扩展/调试工具)
  • 维护成本最低(Docker Compose 一键管理)
  • 稳定性最好(LinuxServer.io 持续维护)

下面是详细对比 参考表格:

维度Xvfb + noVNCWebTop ⭐Selenium ChromePlaywright + xvfb
内存占用~250MB~600MB~450MB~200MB
CPU(空闲)中(桌面环境)低-中
网络(自动化)CDPCDPCDPCDP
网络(人工接管)中(VNC)中(VNC)中(VNC)中(VNC,需配置)
安装复杂度⭐⭐⭐⭐ 复杂⭐ 简单⭐⭐ 较简单⭐⭐⭐ 中等
维护复杂度⭐⭐⭐⭐ 复杂⭐ 简单⭐⭐ 较简单⭐⭐⭐ 中等
人工接管Web VNC完整桌面Web VNC需额外配置
接管体验⭐⭐⭐ 一般⭐⭐⭐⭐⭐ 优秀⭐⭐⭐ 一般⭐⭐ 差
反爬效果⭐⭐⭐⭐ 好⭐⭐⭐⭐⭐ 优秀⭐⭐ 差⭐⭐⭐ 一般
稳定性⭐⭐⭐ 中等⭐⭐⭐⭐ 自动化稳定⭐⭐⭐⭐ 好⭐⭐⭐ 中等

说明:

  • 内存占用:Selenium 包含 fluxbox + Xvfb + noVNC + supervisord,实际占用约 450MB
  • 网络(自动化):OpenClaw 通过 CDP 控制,所有方案带宽占用一致且很低
  • 网络(人工接管):通过 VNC 传输屏幕图像,带宽占用中等(~1-5Mbps)
  • OpenClaw 性能:CDP 不经过桌面环境,所有方案性能基本一致(差异<5%)
  • 反爬效果:WebTop 提供真实桌面环境,反爬效果最佳;Selenium 包含 navigator.webdriver 等自动化指纹,容易被识别
  • 稳定性:WebTop 适合人工接管场景,Selenium 适合纯自动化场景

最终架构

选定方案之后,我又为了稳定和安全加上了 Tailscale 私有网络、Watchdog 监控等配套组件,让远程桌面浏览器具备生产级可靠性。

  • WebTop (Chromium) - 持久化浏览器,Cookie/Session 永久保留
  • socat 端口转发 - 解决 Chromium 133+ 强制绑定 127.0.0.1 的问题
  • Tailscale - 私有网络,无需公网端口
  • Watchdog - 监控 CDP 端口,浏览器 freeze 时自动重启(<3秒恢复)
  • Docker Healthcheck - 容器健康监控

┌──────────────┐
│   Local PC   │
└──────┬───────┘
       │ 
┌──────▼───────┐
│  Tailscale   │ (私有网络)
└──────┬───────┘
       │  (3000/3001)
       ▼
┌─────────────────────────────────────────────┐
│ Oracle Cloud VPS                            │
│                                             │
│ ┌──────────────┐                            │
│ │  OpenClaw    │                            │
│ └──────┬───────┘                            │
│        │ CDP (127.0.0.1:9222)               │
│        ▼                                    │
│ ┌────────────────────────┐                  │
│ │ WebTop Container       │◄─────────────────┘
│ │ (XFCE Desktop)         │                  │
│ │                        │                  │
│ │  ├─ socat :9222        │                  │
│ │  │   └─> 127.0.0.1:9223│                  │
│ │  └─ Chromium :9223     │                  │
│ │                        │                  │
│ │  Watchdog Supervisor   │                  │
│ └────────────────────────┘                  │
└─────────────────────────────────────────────┘

关键设计:

  • socat 监听 0.0.0.0:9222,转发到 Chromium 的 127.0.0.1:9223
  • Watchdog 只重启浏览器进程,不重启整个容器
  • 桌面环境保持运行,Cookie/Session 不丢失
  • 解决浏览器 freeze(进程存在但 CDP 无响应)问题
  • Healthcheck 仅用于容器状态监控,实际恢复由 Watchdog 完成

关键参数

4C 24GB 高配版本:

  • ✅ shm_size: 4GB(共享内存)
  • ✅ mem_limit: 8GB(内存限制)
  • ✅ cpus: 2.5(CPU 限制)
  • ✅ disk-cache-size: 512MB(磁盘缓存)
  • ✅ max-old-space-size: 4GB(V8 堆内存)

如果你是 2C4G/2C8G 等轻量实例,可以把 mem_limit 下调到 4GB、cpus 限制到 1.5,并酌情调小 disk-cache-size。唯一的前提是要保证 shm_size ≥ 2GB,否则 Chromium 很容易崩。所有这些参数都写在 docker-compose 里,实际部署前最好让 AI 再帮你根据机器规格复核一遍。

硬件建议

档位CPU / RAM适用场景备注
最低可用2C / 4GB纯自动化 + 偶尔人工接管mem_limit≈4GB,cpus≤1.5,shm_size 保持 2GB;
建议标准4C / 16GB+稳定生产/推荐标准mem_limit≈6-8GB,cpus≈2-3,shm_size≈2-4GB 文章示例所用配置,足够支撑多标签、长时间持久化

既然要用 OpenClaw,就别把它当一个“聊天机器人”糊弄过去。太低配的云主机只能让你卡着干着急——与其在 2C2G 上耗时间,不如直接上够用的规格,把 OpenClaw 当成真正的提效助手,认真投入一次。

如何配置

这份教程不是“照着 README 抄一遍”,而是我在 Oracle Cloud 4C24G 机器上连续调试、反复和 Claude / GPT / Grok / Gemini / Kimi 拉扯之后沉淀下来的生产级实践:

  • 先让 Claude 写出初版,再请 Kimi 和 GPT 并行 Review,来回改了 5 轮才都点头;
  • 紧接着让 Claude 自己在我的机器上动手部署,我在旁边盯日志,又针对异常修了 3 次;
  • HTTPS 访问、X11 认证、socat 端口、s6 权限、Watchdog 逻辑这些坑我是一个个踩过来的。

因此这里的每个参数都有出处:要么是官方最佳实践,要么是我真实环境量出来的稳定值。你完全可以把这份步骤交给自己的 Claude 或 Codex 去执行,但务必要结合你机器的 CPU/内存/带宽,把 cpusmem_limitshm_sizePASSWORD 等可调项提前改好。

建议直接把本文发给交给 Claude/Codex,让AI帮你配置。 文末有公众号扫码关注并回复 “webtop” 可领取原始 MD 文件

强烈建议看完整个教程再开始配置!!! 强烈建议看完整个教程再开始配置!!! 强烈建议看完整个教程再开始配置!!! 留意注释里所有需要自定义的参数

确认过硬件和网络都扛得住之后,就可以按照下面的 Step 1 ~ Step 3 一步步来。

Step 1: Tailscale 私有网络

1. VPS 安装 Tailscale

curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

复制终端输出的 https://login.tailscale.com/... 链接,在本地浏览器授权登录。

2. 获取 Tailscale IP

tailscale ip -4

记录输出的 IP(如 100.10.20.30),后续用 $TS_IP 表示。

3. 本地安装 Tailscale

在本地电脑安装 Tailscale 客户端,登录同一账号。

Step 2: 部署 Docker 环境

1. 安装 Docker

curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER

重新登录 SSH 使 docker 组生效。

2. 创建项目目录

mkdir -p /opt/openclaw-browser && cd /opt/openclaw-browser

3. 创建浏览器启动脚本(带 Watchdog + socat 端口转发)

cat > browser-launcher.sh << 'EOF'
#!/usr/bin/with-contenv bash

# WebTop 已设置 DISPLAY=:1,使用默认值或环境变量
export DISPLAY=${DISPLAY:-:1}

# 等待 X server 就绪
while ! xdpyinfo >/dev/null 2>&1; do
  sleep 1
done
echo "[$(date)] X server ready, using DISPLAY=$DISPLAY"

echo "[$(date)] Browser Supervisor 启动,监控 CDP 端口..."

# 启动 CDP 端口代理(9222 -> 9223)
start_cdp_proxy() {
    pkill -f "socat.*TCP-LISTEN:9222" 2>/dev/null
    socat TCP-LISTEN:9222,fork,reuseaddr TCP:127.0.0.1:9223 &
    SOCAT_PID=$!
    echo "[$(date)] CDP 代理已启动 (9222 -> 9223)"
}

# 主循环:浏览器崩溃或假死时自动重启
while true; do
    echo "[$(date)] 清理锁文件..."
    rm -f /browser-data/Singleton*

    echo "[$(date)] 启动 Chromium (端口 9223)..."
    chromium-browser \
      --user-data-dir=/browser-data \
      --remote-debugging-port=9223 \
      --remote-debugging-address=127.0.0.1 \
      --remote-allow-origins="*" \
      --no-sandbox \
      --disable-gpu \
      --disable-software-rasterizer \
      --disable-features=VizDisplayCompositor \
      --disable-blink-features=AutomationControlled \
      --disable-crash-reporter \
      --disable-breakpad \
      --hide-crash-restore-bubble \
      --restore-last-session \
      --disable-features=TranslateUI \
      --no-first-run \
      --disable-background-timer-throttling \
      --disable-renderer-backgrounding \
      --disable-backgrounding-occluded-windows \
      --disable-ipc-flooding-protection \
      --password-store=basic \
      --disk-cache-size=536870912 \
      --max-old-space-size=4096 &

    BROWSER_PID=$!

    # 启动端口转发
    start_cdp_proxy

    # 健康监测:15秒检查一次(检查 socat 端口)
    while kill -0 $BROWSER_PID 2>/dev/null; do
        sleep 15
        if ! curl -sf http://localhost:9222/json/version >/dev/null 2>&1; then
            echo "[$(date)] 浏览器无响应,正在重启..."
            kill -TERM $BROWSER_PID 2>/dev/null
            sleep 2
            kill -KILL $BROWSER_PID 2>/dev/null
            kill -9 $SOCAT_PID 2>/dev/null
            sleep 2
            break
        fi
    done

    echo "[$(date)] 浏览器已停止,3秒后重启..."
    sleep 3
done
EOF

chmod +x browser-launcher.sh

4. 创建 Docker Compose 配置

cat > docker-compose.yml << 'EOF'
services:
  webtop:
    image: lscr.io/linuxserver/webtop:ubuntu-xfce
    container_name: openclaw-browser
    security_opt:
      - seccomp:unconfined
    environment:
      - PUID=1001
      - PGID=1001
      - TZ=Asia/Shanghai
      - CUSTOM_USER=oclaw
      # - PASSWORD=${WEBTOP_PASSWORD:-ChangeMe123!}  # 已禁用密码认证,通过 Tailscale 私有网络保护, 如需密码可在此处设置
      - DOCKER_MODS=linuxserver/mods:universal-package-install
      - INSTALL_PACKAGES=socat
      - SELKIES_ENABLE_HTTPS=false
    volumes:
      - ./config:/config
      - ${HOME}/workspace/webtop-browser-data:/browser-data
      - ./browser-launcher.sh:/config/scripts/browser-launcher.sh:ro
      - ./config/custom-cont-init.d:/custom-cont-init.d:ro
    ports:
      - "${TAILSCALE_IP}:3000:3000"
      - "${TAILSCALE_IP}:3001:3001"
      - "127.0.0.1:9222:9222"
    shm_size: "4gb"
    mem_limit: "8gb"
    cpus: "2.5"
    ulimits:
      nofile:
        soft: 65536
        hard: 65536
    tmpfs:
      - /tmp:size=1g
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "curl -sf http://localhost:9222/json/version >/dev/null"]
      interval: 15s
      timeout: 5s
      retries: 3
      start_period: 30s
EOF

5. 创建环境变量文件

# 获取 Tailscale IP
TAILSCALE_IP=$(tailscale ip -4)

# 创建 .env 文件
cat > .env << EOF
TAILSCALE_IP=${TAILSCALE_IP}
EOF

说明

  • VNC 端口(3000/3001)绑定到 Tailscale IP,只能通过 Tailscale 网络访问
  • 已禁用密码认证,通过 Tailscale 私有网络保护访问安全,如需密码可在docker-compose.yml中设置
  • CDP 端口(9222)绑定到 127.0.0.1,本地 OpenClaw 直接访问
  • 浏览器数据目录:$HOME/workspace/webtop-browser-data(需提前创建)
  • 如果 Tailscale IP 变化,需要更新 .env 并重启容器

6. 配置浏览器自启动

  • 使用 custom-cont-init.d:容器初始化时后台启动,避免 s6 服务管理问题
  • s6-setuidgid abc:以 abc 用户运行浏览器,解决 X11 认证问题(root 无法显示窗口到 abc 的桌面)
  • 后台启动 (&):避免阻塞容器启动流程
# 创建浏览器启动服务
mkdir -p config/custom-cont-init.d
cat > config/custom-cont-init.d/01-start-browser << 'EOF'
#!/bin/bash
(
  # 等待 socat 安装完成
  while ! command -v socat >/dev/null 2>&1; do
    sleep 2
  done
  # 以 abc 用户运行浏览器(解决 X11 认证问题)
  exec s6-setuidgid abc /config/scripts/browser-launcher.sh
) &
EOF

# 赋予执行权限
chmod +x config/custom-cont-init.d/01-start-browser

7. 创建浏览器数据目录

# 创建浏览器数据目录
mkdir -p $HOME/workspace/webtop-browser-data

8. 启动容器

# (cd /opt/openclaw-browser && docker compose up -d)
docker compose up -d
docker compose logs -f

等待 30 秒,看到 "Browser Supervisor 启动" 日志即成功。

启动完成之后可快速检查CDP 端口响应:

docker exec openclaw-browser curl -sf http://localhost:9222/json/version

Step 3:OpenClaw 配置

在 OpenClaw 配置文件中浏览器配置里添加 webtop ,并设为默认:

  "browser": {
    ...
    "defaultProfile": "webtop",
    "profiles": {
    
      "webtop": {
        "cdpUrl": "http://127.0.0.1:9222",
        "color": "#00AA00"
      }
      ...
    }
  },

如果你还没有配置过浏览器,你可以直接复制我的配置:

  "browser": {
    "enabled": true,
    "headless": false,
    "noSandbox": true,
    "attachOnly": false,
    "defaultProfile": "webtop",
    "profiles": {
      "openclaw": {
        "cdpPort": 18800,
        "color": "#FF4500"
      },
      "webtop": {
        "cdpUrl": "http://127.0.0.1:9222",
        "color": "#00AA00"
      }
    }
  },

配置参数说明

环境变量 (.env)

参数默认值说明可修改
TAILSCALE_IP可选设置Tailscale 私有网络 IPtailscale私有网络和密码保护至少选一项
WEBTOP_PASSWORD未设置远程桌面登录密码(可选)✅ 如需密码保护可添加

Docker Compose 配置

参数默认值说明可修改
CUSTOM_USERclaw远程桌面用户名✅ 可自定义
TZAsia/Shanghai容器时区✅ 可改为其他时区
PUID/PGID1001容器内用户 ID⚠️ 需与宿主机匹配,终端输入 id 查询
shm_size4gb共享内存大小✅ 可根据需求调整
ulimits.nofile65536文件描述符限制✅ 可根据需求调整
tmpfs/tmp:size=1g临时文件系统✅ 可根据需求调整

说明

  • VNC 端口(3000/3001)绑定到 Tailscale IP,只能通过 Tailscale 网络访问
  • 默认无密码认证,通过 Tailscale 私有网络保护
  • CDP 端口(9222)绑定到 127.0.0.1,供本地 OpenClaw 连接,不建议修改
  • 浏览器数据目录:$HOME/workspace/webtop-browser-data 可自己修改

登录凭据

  • 当前配置:无需密码,直接访问即可(通过 Tailscale 私有网络保护)
  • 如需启用密码保护:
    1. docker-compose.yml 中取消注释 PASSWORD 行:
      - PASSWORD=${WEBTOP_PASSWORD:-ChangeMe123!}
      
    2. .env 文件中添加:
      WEBTOP_PASSWORD=your_secure_password_here
      
    3. 重启容器:docker compose restart

本地如何连接远程浏览器验证

这一步我们要在本地访问远程机器的浏览器,验证它是否稳定启动。

首先获取远程机的私有网络地址(也可以直接在 Tailscale 客户端里看到):

tailscale ip -4

然后在本地浏览器访问 https://<Tailscale_IP>:3001

大概率你会先看到“被安全拦截”的警告页。

没关系,这是因为 WebTop 强制启用 HTTPS,但证书是自签名的,不被浏览器信任。

点击 高级 → 继续访问 即可。

稍等片刻,就能看到远程浏览器已经打开。我习惯把谷歌设为主页,这里截图来自我用 iPad 访问的场景 —— 浏览器里的浏览器,挺像套娃😁,也可以直接在里面做搜索。

也就是说无论你到哪里,只要能上网,随时可以查看云端龙虾的浏览器状态。

不用担心浏览器异常退出,我写了监控脚本,每 15 秒检测一次状态;一旦崩溃会立刻重启。可以手动关掉浏览器,等 15 秒左右就会自动恢复,下面的视频是 ×4 加速的效果。

OpenClaw 实操

经过我实测,OpenClaw 原生的 CDP 控制太差了,速度比较慢,截图总是截长图(似乎是个 bug: Screenshots capture full page instead of viewport by default)。

所以这里我建议安装 Agent Browser 技能包。Agent Browser 是 Vercel 用 Rust 写的浏览器自动化工具,定位准、速度快,也更省 token。

Agent Browser 支持通过 --cdp 9222 连接 webtop 已有的 Chromium 进行工作。 安装完技能,可以把上句加黑的文字发给龙虾并让他写入TOOLS.md。

这样OpenClaw 就拥有了自己的桌面浏览器。

你就可以干一些好玩的事了。

比如总结博客内容的时候可以直接要求它截取文章中的关键数据表格,作为文章配图或者校验AI总结的数据准确性:

openai gpt 5.4 mini/nano 发布

AI热点监控的时候,比如Midjourney V8发布了,它不仅给我了内容要点,还发了几张参考图:

openclaw-browser-midjourney

登录小红书小号:

openclaw-browser-xiaohongshu-login-1

openclaw-browser-xiaohongshu-login-2

温馨提示:登录账号可以先使用小号尝试,避免账号被封。虽然该方案已经是云端浏览器自动化的最优解。

不过其实我们手动登录就行了,这里只是测试一下浏览器的能力。因为让它登个小红书其实花费了半个小时才登陆上,一方面中转站的api太慢了,另一方面浏览器自动化还需要和虾一起打磨打磨。

登录完可玩的空间就大了,大家可以自行尝试。

Chrome DevTools MCP

另外提一下前两天 Google 发布的 Chrome DevTools MCP 工具,全网都在爆吹,不过这对云端的龙虾来说并没有做任何改善,只是利好本地 OpenClaw。因为该工具只是提供操控浏览器的接口,并不改变浏览器本身的状态,该工具的运行还是建立在 CDP 接口的基础上。但是有了 WebTop 就不一样了,OpenClaw 天然拥有完全属于自己的桌面浏览器,并且与用户看到的是共享的。

也就是说在 Chrome DevTools MCP 工具发布之前,本地 OpenClaw 要与用户共享浏览器需要安装插件,而之后只需要开放开发者调试接口,不需要安装插件。而对于云端 OpenClaw,我们安装的 WebTop 解决了一切问题,浏览器天然属于共享状态。

Browse Use

在我写这篇文章的时候,Browser Use 刚巧上线了“直连 CDP”能力,可以通过--cdp-url http://localhost:9222指定cdp接口。详细可参考Browser Use CLI

browser-use --cdp-url http://localhost:9222 open https://example.com

官方也强调,这条路径就是为第三方云浏览器或自建实例准备的,只要你的浏览器通过 WebSocket 暴露了 CDP,就能被 Browser Use 驱动。而官方的更新也进一步验证了“真实桌面 + 持久化 CDP”的方案越来越成为Agent操纵浏览器重要的一部分。

其实通过最近Chrome DevTools MCP工具的发布,Browse Use新增对CDP直连的支持,我们可以发现通过CDP端口直接控制浏览器会越来越成为主流。因为这样Agent不仅能控制本地电脑的真实浏览器,还能连接远程浏览器,也可以让云端Agent连接类似webtop这一类的浏览器。在openclaw的browser 文档里其实有推荐云端浏览器Browserbase,其中的控制方式就是通过CDP。也就是说,文档里描述的webtop方案是自己在服务器配置的,如果你不想配,你可以在云端浏览器提供商购买服务,它会给你开放一个浏览器实例,这个浏览器实例和服务器之间的控制方案就是CDP协议。

我在openclaw里面一开始配置Agent Browser也是因为它原生支持CDP模式。不过现在Browse Use也支持了,后面可以尝试一下。

FAQ

遇到问题优先请教 Claude/Codex

Q: 想启用密码或公网访问?
A: 默认依赖 Tailscale 隐私网络,不开放公网端口。如果必须暴露公网,务必在 docker-compose 里启用 PASSWORD 并配置强口令,同时建议套上一层 Cloudflare Tunnel / Caddy 做额外认证。

Q: 远程桌面很卡怎么办?
A: 文中示例的 VPS 在新加坡,我本人在国内,因此 SCP 只有 1.5~2 MB/s、延迟 400ms。人工接管时确实会感觉卡顿,但 OpenClaw 自动化走本地回环,速度不受影响。可以优先选择距离自己更近的节点(本地 NUC、同城云厂商等)

Q: Tailscale IP 改了无法访问?
A: 重新执行 tailscale ip -4,把新 IP 写入 .env 或直接更新 docker-compose 的 TAILSCALE_IP 环境变量,然后 docker compose down && docker compose up -d 即可。

Q: 浏览器启动失败 / 无法打开新标签?
A: 99% 是共享内存不足,确认 shm_size 至少 2GB,低配机器也不要低于 2048m;若系统 RAM 只有 4GB,最好把其它容器停掉。

参考链接

建议直接把本文发给交给 Claude/Codex,让AI帮你配置。 公众号扫码关注并回复 “webtop” 可领取原始 markdown 文件(AI更容易看懂)

欢迎关注 Yee的出海手记

原文链接: yeekal.com/ai/openclaw…