使用Docker从源码编译安装OpenClaw并配置Github Skill
看了一圈 Docker 安装 OpenClaw 的文章
好像都是默认设置
正好搞了连接 Github 账号就记录一下
主机信息
系统: Debian GNU/Linux 13 (trixie)
OpenClaw 代码目录: /data/openclaw/src
OpenClaw 数据目录: /data/openclaw/data
模型提供商: Deepseek
目标
-
Docker 安装 OpenClaw
-
更改数据保存位置
-
通过 PAT 连接 Github 账号
安装 OpenClaw
下载 OpenClaw 代码库
git clone https://github.com/openclaw/openclaw.git src
切换到最新发行版
在 Github Release 页面查看最新发行版
git checkout v2026.2.26
创建 .env 环境变量
# 自定义数据目录,按照实际情况修改OPENCLAW_CONFIG_DIR=/data/openclaw/data# 自定义工作空间,按照实际情况修改OPENCLAW_WORKSPACE_DIR=/data/openclaw/data/workspaceOPENCLAW_GATEWAY_PORT=18789OPENCLAW_BRIDGE_PORT=18790OPENCLAW_GATEWAY_BIND=lanOPENCLAW_GATEWAY_TOKEN=<随机生成的64位hex>OPENCLAW_IMAGE=openclaw:local# 持久化 gh 配置文件OPENCLAW_EXTRA_MOUNTS=/data/openclaw/data/.config/gh:/home/node/.config/ghOPENCLAW_HOME_VOLUME=OPENCLAW_DOCKER_APT_PACKAGES=
生成随机 Hex Token
# 三选一openssl rand -hex 32head -c 32 /dev/urandom | xxd -pod -An -N32 -tx1 /dev/urandom | tr -d ' \n'
构建 OpenClaw 镜像
docker build -t openclaw:local -f Dockerfile .
启动 OpenClaw 并进入设置向导
docker compose run --rm openclaw-cli onboard
设置向导完成后,在 Control UI 和 Dashboard ready 部分会显示网页控制台的 URL 与 Token
◇ Dashboard ready ────────────────────────────────────────────────────────────────╮│ ││ Dashboard link (with token): ││ http://127.0.0.1:18789/#token=c01dbeef0000000000000000000000000000000000000000 ││ Copy/paste this URL in a browser on this machine to control OpenClaw. ││ No GUI detected. Open from your computer: ││ ssh -N -L 18789:127.0.0.1:18789 user@<host> ││ Then open: ││ http://localhost:18789/ ││ http://localhost:18789/#token=c01dbeef0000000000000000000000000000000000000000 ││ Docs: ││ https://docs.openclaw.ai/gateway/remote ││ https://docs.openclaw.ai/web/control-ui ││ │├──────────────────────────────────────────────────────────────────────────────────╯
修改 openclaw.json
编辑 $OPENCLAW_CONFIG_DIR/openclaw.json, 在先前的设定中为 /data/openclaw/data/openclaw.json
在 gateway 中添加以下内容
"controlUi": {"allowedOrigins": ["http://127.0.0.1:18789"]},
启动 OpenClaw Gateway
docker compose up -d openclaw-gateway
建立 SSH 端口映射隧道
根据 OpenClaw 的默认安全设置,Control UI 只能从本地 127.0.0.1 访问
ssh -N -L 18789:127.0.0.1:18789 <用户名>@<主机 IP 地址>
访问 Control UI
访问先前获取的带 token 参数的 URL
如果一切正常,网页会显示 pairing required
安装 clawdock-helpers
clawdock-helpers 是一个用于快速管理 Docker 容器中 OpenClaw 实例的工具
安装 clawdock-helpers
# 下载 clawdock-helpersmkdir -p ~/.clawdock && curl -sL https://raw.githubusercontent.com/openclaw/openclaw/main/scripts/shell-helpers/clawdock-helpers.sh -o ~/.clawdock/clawdock-helpers.sh# 添加至环境变量echo 'source ~/.clawdock/clawdock-helpers.sh' >> ~/.bashrc && source ~/.bashrc# 显示 clawdock 帮助clawdock-help
设置 clawdock-helpers 环境变量
在 ~/.bashrc 添加指向 OpenClaw 源代码目录的环境变量 CLAWDOCK_DIR
export CLAWDOCK_DIR=/data/openclaw/src
设备认证
安装 clawdock-helpers 后即可使用该工具进行设备认证
# 列出所有设备clawdock-devices
处理 Token 错误
如果出现如下错误:
🔍 Checking device pairings...gateway connect failed: Error: unauthorized: gateway token mismatch (set gateway.remote.token to match gateway.auth.token)[openclaw] CLI failed: Error: gateway closed (1008): unauthorized: gateway token mismatch (set gateway.remote.token to match gateway.auth.token)
运行以下命令修复 Token
clawdock-fix-token
批准配对请求
如果一切正常,则会输出类似内容
🔍 Checking device pairings...Pending (1)┌──────────────────────────────────────┬────────────────────────────────────┬──────────┬────────────┬────────┬────────┐│ Request │ Device │ Role │ IP │ Age │ Flags │├──────────────────────────────────────┼────────────────────────────────────┼──────────┼────────────┼────────┼────────┤│ 71949123-52ef-417a-806f-a5c62501d321 │ 21f82c8f9434af86fa525cc9fe7c955541 │ operator │ 172.21.0.1 │ 1m ago │ ││ │ 72e0d06235f042992f0cffebfb7c3d │ │ │ │ │└──────────────────────────────────────┴────────────────────────────────────┴──────────┴────────────┴────────┴────────┘Paired (1)┌─────────────────────────────┬────────────┬────────────────────────────────────────────────┬────────────┬────────────┐│ Device │ Roles │ Scopes │ Tokens │ IP │├─────────────────────────────┼────────────┼────────────────────────────────────────────────┼────────────┼────────────┤│ f2f1d2d9b6155bf93693f19a631 │ operator │ operator.admin, operator.read, operator. │ operator │ ││ d5a211adf982a640a360f3b534d │ │ write, operator.approvals, operator.pairing │ │ ││ bdb3764a39 │ │ │ │ │└─────────────────────────────┴────────────┴────────────────────────────────────────────────┴────────────┴────────────┘💡 To approve a pairing request:clawdock-approve <request-id>
使用 clawdock-approve 命令批准设备配对请求
clawdock-approve <Pending表格显示的request-id>
由于刷新了 Token,需要使用 clawdock-token 命令查看新的 Token
再次访问 http://127.0.0.1:18789/#token=<Token> 应用新 Token
配置 gh
在镜像中安装 gh
编辑 Dockerfile,在 COPY –chown=node:node package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc ./ 前添加以下内容:
RUN curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg \| gpg --dearmor -o /usr/share/keyrings/githubcli-archive-keyring.gpg && \echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" \> /etc/apt/sources.list.d/github-cli.list && \apt-get update && \DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends gh && \apt-get clean && \rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/*
配置 GH_TOKEN
修改 docker-compose.yml,在 service.openclaw-gateway.environment 中添加一条 GH_TOKEN
修改后的 docker-compose.yml 大致如下
services:openclaw-gateway:image: ${OPENCLAW_IMAGE:-openclaw:local}environment:HOME: /home/nodeTERM: xterm-256colorOPENCLAW_GATEWAY_TOKEN: ${OPENCLAW_GATEWAY_TOKEN}CLAUDE_AI_SESSION_KEY: ${CLAUDE_AI_SESSION_KEY}CLAUDE_WEB_SESSION_KEY: ${CLAUDE_WEB_SESSION_KEY}CLAUDE_WEB_COOKIE: ${CLAUDE_WEB_COOKIE}GH_TOKEN: ${SKILL_GH_TOKEN}
在 .env 中添加 Github Personal Access Token
夜雨聆风
