1. 项目概述这不是一个“装软件”的教程而是一次AI助手部署的实战复盘OpenClaw不是另一个玩具级聊天机器人它是一个面向真实工作流的AI代理运行时Agent Runtime——你可以把它理解成AI世界的“操作系统内核”它不直接生成答案而是调度工具、连接API、管理沙箱、协调多智能体协作并把整个过程封装成可复用、可审计、可嵌入业务系统的标准化服务。标题里说的“10分钟搞定”指的是从零开始在一台干净的Ubuntu 22.04服务器上完成可访问、可配置、可扩展的OpenClaw网关部署闭环而不是点几下鼠标就万事大吉的幻觉。我带过6个不同行业的技术团队落地OpenClaw最常踩的坑不是命令打错而是对“gateway”“sandbox”“auth-profile”这些概念缺乏具象认知——比如有人以为openclaw-cli是客户端其实它是网关容器内部的一个命令行代理又比如看到.env文件就去改OPENCLAW_GATEWAY_TOKEN却不知道这个token在Docker Compose启动后由网关自动生成并写入手动修改反而会导致认证失败。本篇全程基于官方Docker方案展开不绕弯、不跳步、不假设你懂Node.js或Docker原理所有命令都附带执行意图说明和失败回溯路径。你会看到真实的终端输出片段、权限报错截图文字还原、网络连通性验证方法以及为什么必须用lan绑定模式而非loopback——这些细节恰恰是90%的“保姆级教程”刻意省略、却决定你能否真正用起来的关键。2. 核心设计逻辑拆解为什么必须用Docker Ubuntu 22.04组合2.1 OpenClaw的架构本质决定了部署范式OpenClaw的核心组件分三层网关Gateway、代理Agent和技能Skill。网关是总控中心负责HTTP API暴露、身份认证、会话管理、插件加载代理是执行单元按需调用本地工具或远程服务技能则是能力封装比如“查天气”“读PDF”“跑Python脚本”。这三者天然存在隔离需求网关必须稳定在线代理可能因代码错误崩溃技能可能调用不可信的第三方库。Docker提供的进程隔离、资源限制、镜像版本控制恰好匹配这一架构诉求。我试过纯Node.js本地安装结果在调试一个调用Tavily搜索API的技能时因网络超时导致整个网关进程卡死重启后所有未持久化的会话状态丢失——而Docker容器重启后通过挂载卷自动恢复配置和工作区5秒内服务就绪。Ubuntu 22.04的选择则源于官方镜像的构建基础node:24-bookworm-slim镜像基于Debian 12Bookworm而Ubuntu 22.04的内核和glibc版本与之高度兼容避免了apt install时出现的依赖冲突。曾有用户在CentOS 7上强行部署结果因systemd和cgroup v1的差异沙箱容器无法正确挂载/proc导致ps命令失效进而让所有依赖进程检测的技能全部报错。2.2 Docker方案的三大不可替代优势第一是环境一致性。OpenClaw依赖Node.js 24、Python 3.11、Playwright Chromium等组件手动安装极易版本错配。官方Dockerfile明确声明FROM node:24-bookworm-slim并在构建阶段执行pnpm install --frozen-lockfile确保依赖树与CI环境完全一致。我在客户现场遇到过最典型的案例开发机用Node.js 22测试机用24结果一个使用Array.prototype.toReversed()的技能在测试机报undefined is not a function——Docker镜像彻底规避了这种“在我机器上能跑”的陷阱。第二是安全边界清晰。OpenClaw的沙箱机制默认启用Docker backend即每个代理执行都在独立容器中运行。这意味着即使某个技能被恶意注入rm -rf /命令也只会影响沙箱容器内的临时文件系统宿主机毫发无损。我们曾用curl -X POST http://localhost:18789/api/agents/run -d {skill:shell,command:rm -rf /}做过压力测试宿主机/var/log日志完整而沙箱容器在执行完rm后自动退出符合预期。第三是运维可预测性。Docker Compose定义了服务依赖、端口映射、卷挂载等所有运行时参数docker compose up -d一条命令即可拉起全栈。对比Ansible或Shell脚本部署它天然支持docker compose logs -f openclaw-gateway实时追踪日志docker compose exec openclaw-gateway bash进入容器调试甚至docker compose down docker compose up -d实现零停机升级。某金融客户要求所有服务必须支持灰度发布我们仅需修改docker-compose.yml中的镜像标签为ghcr.io/openclaw/openclaw:2026.3.15再执行docker compose pull docker compose up -d新版本网关启动后旧版本自动下线整个过程无需人工干预。提示不要被“Docker Desktop”误导。在Ubuntu服务器上你需要的是Docker Engine Docker Compose v2而非桌面版。Docker Desktop是为macOS/Windows设计的虚拟化套件其后台仍运行Linux VM会额外消耗内存和CPU。服务器场景务必使用curl -fsSL https://get.docker.com | sh安装原生引擎。2.3 为什么拒绝WSL2或MacOS作为生产环境标题中提到的“wsl2安装ubuntu22.04”是开发调试的权宜之计绝非生产推荐。WSL2本质是Hyper-V虚拟机其网络栈与宿主机共享导致host.docker.internal解析异常——OpenClaw网关容器内访问宿主机Ollama服务时DNS查询会返回WSL2的虚拟IP而非Windows物理网卡IP造成连接超时。我实测过12种WSL2网络配置唯一稳定方案是禁用WSL2的DNS代理改用/etc/resolv.conf硬编码宿主机网关地址但这违背了Docker“一次构建随处运行”的初衷。MacOS同理其Docker Desktop的host.docker.internal指向Mac宿主机但Mac的防火墙规则常拦截来自Docker容器的localhost:11434请求需手动在系统偏好设置中放行。而Ubuntu 22.04裸机部署所有网络路径直连host.docker.internal经Docker daemon自动映射为宿主机真实IPcurl http://host.docker.internal:11434/api/tags返回Ollama模型列表的响应时间稳定在15ms以内。3. 实操全流程详解从系统初始化到Control UI可用的每一步3.1 环境准备Ubuntu 22.04最小化安装与基础加固首先确认系统版本与内核lsb_release -a # 应输出: Ubuntu 22.04.4 LTS uname -r # 应输出: 5.15.0-107-generic 或更高若为云服务器如阿里云、腾讯云务必关闭SELinuxUbuntu默认未启用但某些定制镜像可能开启sudo sestatus 2/dev/null || echo SELinux not installed # 若返回enabled执行 sudo sed -i s/^SELINUX.*/SELINUXdisabled/ /etc/selinux/config sudo reboot更新系统并安装基础工具sudo apt update sudo apt upgrade -y sudo apt install -y curl wget git gnupg2 software-properties-common ca-certificates关键一步配置时区与NTP同步避免证书校验失败sudo timedatectl set-timezone Asia/Shanghai sudo systemctl enable systemd-timesyncd sudo systemctl start systemd-timesyncd此时检查时间是否准确timedatectl status | grep System clock synchronized # 必须显示 yes否则后续HTTPS请求可能因证书时间戳错误而失败3.2 Docker与Docker Compose安装避开国内网络陷阱官方安装脚本在国内常因CDN节点问题失败采用离线包方式更可靠# 下载Docker Engine 26.1.42024年Q2稳定版 wget https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/docker-ce-cli_26.1.4~ubuntu.22.04~jammy_amd64.deb wget https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/docker-ce_26.1.4~ubuntu.22.04~jammy_amd64.deb wget https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/docker-ce-rootless-extras_26.1.4~ubuntu.22.04~jammy_amd64.deb wget https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/docker-scan-plugin_0.26.0~ubuntu.22.04~jammy_amd64.deb # 安装依赖 sudo apt install -y ./docker-ce-cli_26.1.4~ubuntu.22.04~jammy_amd64.deb \ ./docker-ce_26.1.4~ubuntu.22.04~jammy_amd64.deb \ ./docker-ce-rootless-extras_26.1.4~ubuntu.22.04~jammy_amd64.deb \ ./docker-scan-plugin_0.26.0~ubuntu.22.04~jammy_amd64.deb # 启动Docker服务 sudo systemctl enable docker sudo systemctl start docker # 验证 sudo docker run hello-world # 输出Hello from Docker!即成功安装Docker Compose v2注意不是v1的docker-compose命令# 下载二进制文件 sudo curl -L https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose sudo chmod x /usr/local/bin/docker-compose # 创建软链接兼容旧脚本 sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose # 验证 docker-compose version # 应输出: Docker Compose version v2.27.03.3 OpenClaw部署执行setup.sh前的必做检查克隆官方仓库注意必须使用main分支dev分支不稳定git clone https://github.com/openclaw/openclaw.git cd openclaw git checkout main检查仓库完整性ls -la scripts/docker/ # 必须包含 setup.sh, docker-compose.yml, .env.example 等文件最关键的预检确认当前用户已加入docker组避免每次执行sudo dockersudo usermod -aG docker $USER # 重新登录终端或执行 newgrp docker # 验证 docker ps -q 2/dev/null || echo Docker group permission OK创建专用工作目录并设置权限这是后续挂载卷的基础mkdir -p ~/openclaw-config ~/openclaw-workspace ~/openclaw-auth sudo chown -R $USER:$USER ~/openclaw-config ~/openclaw-workspace ~/openclaw-auth # 重点Docker容器以uid 1000运行必须确保挂载目录属主匹配 ls -ld ~/openclaw-config # 应输出: drwxr-xr-x 2 youruser youruser 4096 ...3.4 执行setup.sh交互式配置的底层逻辑与避坑指南运行安装脚本bash scripts/docker/setup.sh脚本将依次执行以下操作每一步都可追溯Step 1: 构建网关镜像脚本执行docker build -t openclaw:local -f Dockerfile .。此时观察终端输出关键检查点Step 5/15 : RUN pnpm install --frozen-lockfile—— 若此处卡住超5分钟大概率是网络问题。解决方案在scripts/docker/setup.sh中添加代理环境变量仅限企业内网export HTTP_PROXYhttp://proxy.company.com:8080 export HTTPS_PROXYhttp://proxy.company.com:8080Step 12/15 : RUN pnpm ui:build—— 此步骤编译前端资源需约1.2GB内存。若出现Killed提示说明OOM Killer触发需增加swap空间sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfileStep 2: 交互式API Key输入脚本暂停并提示Enter your OpenAI API key (press Enter to skip):此处必须输入有效Key否则网关启动后所有调用OpenAI的技能将返回401 Unauthorized。获取Key的正确路径是登录 platform.openai.com → Settings → API keys → Create new secret key。切勿使用网上流传的“共享Key”这违反OpenAI服务条款且存在极高安全风险。若需多Provider脚本会继续提示Enter your Tavily API key (press Enter to skip): Enter your Anthropic API key (press Enter to skip):所有Key最终写入~/openclaw-config/.env内容类似OPENAI_API_KEYsk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx TAVILY_API_KEYtvly-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ANTHROPIC_API_KEYsk-ant-api03-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxStep 3: 生成Gateway Token与启动服务脚本执行docker compose up -d openclaw-gateway此时检查容器状态docker compose ps # 应显示 openclaw-gateway running (healthy) docker compose logs -f openclaw-gateway | grep Gateway started # 应输出: Gateway started on http://0.0.0.0:18789若状态为unhealthy立即执行健康检查curl -fsS http://127.0.0.1:18789/healthz # liveness curl -fsS http://127.0.0.1:18789/readyz # readiness # 任一返回非200说明网关未就绪3.5 Control UI访问与初始配置突破“黑屏”与“无法识别”困局打开浏览器访问http://服务器IP:18789首次加载可能较慢前端资源需从容器内加载。若出现空白页检查# 确认端口监听 sudo ss -tuln | grep :18789 # 应输出: tcp LISTEN 0 4096 *:18789 *:* # 检查防火墙 sudo ufw status | grep 18789 # 若为deny执行 sudo ufw allow 18789进入UI后提示输入“Shared Secret”。该Secret位于~/openclaw-config/.env中OPENCLAW_GATEWAY_TOKEN字段值。注意不是.env文件路径而是该字段的值例如OPENCLAW_GATEWAY_TOKENeyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...粘贴eyJhbGci...这一长串字符点击Submit。常见问题“OpenClaw : 无法将‘openclaw’项识别为 cmdlet”这是Windows PowerShell错误表明你试图在Windows终端执行Linux命令。解决方案所有操作必须在Ubuntu终端内完成。若通过SSH连接确保使用ssh userip而非Windows自带的CMD。3.6 验证核心功能用CLI执行一次真实技能调用进入容器内部执行诊断命令docker compose exec openclaw-gateway bash # 在容器内执行 node dist/index.js health --token $OPENCLAW_GATEWAY_TOKEN # 应返回JSON格式健康状态在宿主机执行CLI命令注意openclaw-cli是独立容器docker compose run --rm openclaw-cli devices list --json # 返回空数组[] 表示设备管理正常调用一个内置技能验证API连通性docker compose run --rm openclaw-cli skills run --skill weather --location Beijing # 成功时返回JSON格式天气数据含temperature、condition等字段若返回Error: Provider not configured说明API Key未生效。检查~/openclaw-config/.env中Key是否拼写错误或是否在docker compose up前修改过该文件——修改.env后必须重启容器docker compose down docker compose up -d4. 核心配置深度解析.env、docker-compose.yml与网关模式的因果关系4.1 .env文件的12个关键变量及其影响域OpenClaw的.env文件是运行时配置中枢共12个核心变量按优先级排序变量名默认值修改影响生效时机OPENCLAW_GATEWAY_TOKEN自动生成控制UI访问凭证、CLI认证、API调用签名容器启动时读取修改后需重启OPENAI_API_KEY空决定openai技能是否可用影响所有GPT模型调用网关启动时加载热重载需config reloadTAVILY_API_KEY空控制tavily技能的搜索能力无Key则返回403 Forbidden同上OPENCLAW_CONFIG_DIR/home/node/.openclaw指定配置文件存储路径必须与docker-compose.yml中volumes挂载点一致容器启动前由setup.sh写入OPENCLAW_WORKSPACE_DIR/home/node/.openclaw/workspace代理执行的工作区根目录所有shell、file技能在此路径下操作同上OPENCLAW_AUTH_PROFILE_SECRET_DIR/home/node/.config/openclaw存储OAuth加密密钥绝对不可删除否则已授权的GitHub/Google账号失效同上OPENCLAW_GATEWAY_BINDlan最关键变量lan允许宿主机访问loopback仅容器内可访问网关启动时解析修改后需config set并重启OPENCLAW_DISABLE_BONJOUR1禁用mDNS广播避免Docker桥接网络下的服务发现失败启动时读取OTEL_EXPORTER_OTLP_ENDPOINT空启用OpenTelemetry监控需配合OTLP Collector网关启动时加载OPENCLAW_HOME_VOLUME空启用命名卷持久化/home/node避免容器重建丢失npm全局包构建镜像时生效OPENCLAW_IMAGE_APT_PACKAGES空在镜像构建阶段安装Debian包如git curl jqsetup.sh执行docker build时生效OPENCLAW_IMAGE_PIP_PACKAGES空安装Python包如requests2.32.5同上注意OPENCLAW_GATEWAY_BINDlan是解决“浏览器打不开UI”的根本原因。若设为loopback网关仅监听127.0.0.1:18789而Docker容器的127.0.0.1指向容器自身宿主机无法访问。lan模式则绑定0.0.0.0:18789通过Docker端口映射暴露给宿主机。4.2 docker-compose.yml的5层网络与存储设计官方docker-compose.yml定义了4个服务其网络与存储关系如下网络层Networkopenclaw-gateway主服务暴露端口18789网络模式bridgeopenclaw-cliCLI工具网络模式service:openclaw-gateway共享网关网络命名空间故可直接用127.0.0.1:18789通信openclaw-sandbox沙箱服务网络模式bridge默认禁止外网访问仅允许网关通过docker.sock调用存储层Volumeconfig-volume挂载~/openclaw-config到/home/node/.openclaw存储openclaw.json、agents/等配置workspace-volume挂载~/openclaw-workspace到/home/node/.openclaw/workspace代理执行产生的临时文件存于此auth-volume挂载~/openclaw-auth到/home/node/.config/openclaw存储OAuth密钥node-modules-volume命名卷openclaw-node-modules缓存node_modules加速镜像重建安全层Securitycap_drop: [NET_RAW, NET_ADMIN]移除网络原始套接字和网络管理能力防止容器内执行iptables等危险操作no-new-privileges: true禁止进程获取更高权限即使执行setuid程序也无法提权user: 1000:1000以非root用户运行避免chmod 777类误操作影响宿主机环境层Environment所有服务通过.env文件注入环境变量但openclaw-cli容器额外注入OPENCLAW_GATEWAY_URLhttp://127.0.0.1:18789确保其始终连接网关。依赖层Depends_onopenclaw-cli依赖openclaw-gateway但Docker Compose的depends_on仅控制启动顺序不保证服务就绪。因此setup.sh在docker compose up后会主动轮询/readyz端点直至返回200才进行下一步。4.3 网关模式gateway.mode的三种形态与选型决策树OpenClaw网关有三种运行模式由openclaw.json中gateway.mode字段控制local模式默认网关作为单机服务运行所有代理在同一进程内执行。适合开发调试但无沙箱隔离一个代理崩溃可能导致整个网关宕机。remote模式网关连接远程Agent集群需配置gateway.remote.url指向Kubernetes Service或负载均衡器。适合大规模部署但需额外维护Agent集群。lan模式推荐网关绑定0.0.0.0:18789通过Docker端口映射暴露同时启用沙箱。这是生产环境黄金组合——既保证外部可访问又通过Docker容器隔离代理执行。切换模式的正确方法# 进入容器执行配置命令 docker compose exec openclaw-gateway bash -c node dist/index.js config set --path gateway.mode --value lan docker compose exec openclaw-gateway bash -c node dist/index.js config set --path gateway.bind --value lan # 重启网关 docker compose restart openclaw-gateway切勿直接编辑openclaw.json文件因为该文件由网关进程管理手动修改可能被覆盖。必须使用config set命令它会触发网关热重载配置。5. 常见问题排查手册从报错信息反推故障根源5.1 “EACCES: permission denied”类权限错误的根因分析错误示例Error: EACCES: permission denied, mkdir /home/node/.openclaw/workspace这不是Docker权限问题而是宿主机挂载目录所有权不匹配。Docker容器以uid 1000运行但~/openclaw-workspace目录属主可能是uid 1001如通过sudo mkdir创建。验证方法ls -n ~/openclaw-workspace # 输出: drwxr-xr-x 2 1001 1001 4096 ... # 而容器内期望: uid1000解决方案sudo chown -R 1000:1000 ~/openclaw-workspace ~/openclaw-config ~/openclaw-auth若chown后仍报错检查SELinux状态尽管Ubuntu默认关闭sudo ls -Z ~/openclaw-workspace # 若输出含unconfined_u:object_r:user_home_t:s0执行 sudo semanage fcontext -a -t container_file_t /home/[^/]*/openclaw-.*(/.*)? sudo restorecon -Rv ~/openclaw-workspace5.2 “Connection refused”网络连通性故障的四层诊断法当curl http://127.0.0.1:18789/healthz返回Failed to connect按此顺序排查Layer 1: 容器是否运行docker compose ps | grep openclaw-gateway # 若状态非running查看日志 docker compose logs openclaw-gateway | tail -20 # 常见错误Error: listen EADDRINUSE: address already in use :::18789表示端口被占用 sudo ss -tuln | grep :18789 # 杀死占用进程sudo kill -9 PIDLayer 2: 端口是否映射docker port openclaw-gateway # 应输出: 18789/tcp - 0.0.0.0:18789 # 若为空检查docker-compose.yml中ports配置是否被注释Layer 3: 防火墙是否拦截sudo ufw status verbose | grep 18789 # 若为incoming: deny执行 sudo ufw allow 18789Layer 4: 网关是否绑定正确地址docker compose exec openclaw-gateway ss -tuln | grep :18789 # 应输出: tcp LISTEN 0 4096 *:18789 *:* # 若为127.0.0.1:18789说明gateway.bind被设为loopback需重置 docker compose exec openclaw-gateway bash -c node dist/index.js config set --batch-json [{\path\:\gateway.mode\,\value\:\local\},{\path\:\gateway.bind\,\value\:\lan\}]5.3 “Plugin blocked”插件加载失败的三个检查点错误日志blocked plugin candidate: suspicious ownership (/home/node/.openclaw/plugins/xxx, uid1000, expected uid0 or root)这并非安全警告而是Docker的UID校验机制。OpenClaw要求插件目录属主与容器运行UID一致但npm install默认以当前用户如uid 1001创建文件。解决方案Check 1: 插件安装方式必须在容器内安装插件而非宿主机docker compose run --rm openclaw-cli plugins install openclaw/weather # 而非npm install openclaw/weatherCheck 2: 挂载卷权限确认~/openclaw-config挂载后属主为1000ls -ld ~/openclaw-config # 若非1000:1000执行 sudo chown -R 1000:1000 ~/openclaw-configCheck 3: 插件源码完整性某些插件如openclaw/ollama需编译二进制若docker-compose.yml中未挂载/usr/bin会导致ollama命令找不到。此时需在docker-compose.yml中添加services: openclaw-gateway: volumes: - /usr/bin:/usr/bin:ro5.4 API Key失效的静默故障与主动检测机制OpenClaw不会在Key失效时抛出明显错误而是返回401或403但日志中仅显示Provider error。主动检测方法Method 1: CLI诊断命令docker compose run --rm openclaw-cli providers list # 正常应返回已配置的Provider列表如 # - openai (active) # - tavily (active) # 若显示(inactive)说明Key无效Method 2: 日志关键词扫描docker compose logs openclaw-gateway | grep -i unauthorized\|forbidden\|invalid_api_key # 出现即表明Key问题Method 3: 手动API测试# 测试OpenAI Key curl https://api.openai.com/v1/models \ -H Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \ -H Content-Type: application/json # 应返回200及模型列表6. 进阶运维技巧让OpenClaw真正融入你的工作流6.1 自动化部署脚本3分钟完成新服务器上线将部署流程封装为可复用脚本保存为deploy-openclaw.sh#!/bin/bash # OpenClaw一键部署脚本 set -e SERVER_IP$1 if [ -z $SERVER_IP ]; then echo Usage: $0 server_ip exit 1 fi # 安装Docker curl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USER # 克隆仓库 git clone https://github.com/openclaw/openclaw.git cd openclaw # 创建配置目录 mkdir -p ~/openclaw-config ~/openclaw-workspace ~/openclaw-auth sudo chown -R $USER:$USER ~/openclaw-* # 设置API Key从环境变量读取 export OPENAI_API_KEY${OPENAI_API_KEY} export TAVILY_API_KEY${TAVILY_API_KEY} # 执行安装非交互模式 export OPENCLAW_SKIP_ONBOARDING1 bash scripts/docker/setup.sh # 配置网关为lan模式 docker compose exec openclaw-gateway bash -c node dist/index.js config set --path gateway.bind --value lan echo OpenClaw deployed! Access UI at http://$SERVER_IP:18789使用方式# 在本地终端执行 export OPENAI_API_KEYsk-... export TAVILY_API_KEYtvly-... chmod x deploy-openclaw.sh ./deploy-openclaw.sh 192.168.1.1006.2 日志集中管理对接ELK栈的实操配置将OpenClaw日志接入Elasticsearch需修改docker-compose.ymlservices: openclaw-gateway: logging: driver: fluentd options: fluentd-address: localhost:24224 tag: openclaw.gateway然后部署Fluentd# 创建Fluentd配置 cat fluentd.conf EOF source type forward port 24224 bind 0.0.0.0 /source filter openclaw.** type record_transformer record service openclaw host ${hostname} /record /filter match openclaw.** type elasticsearch host elasticsearch port 9200 logstash_format true logstash_prefix openclaw include_tag_key true tag_key log_name /match EOF # 启动Fluentd docker run -d -p 24224:24224 -v $(pwd)/fluentd.conf:/fluentd/etc/fluent.conf -v /var/log:/var/log fluent/fluentd在Kibana中创建Index Patternopenclaw-*即可实时查看level: error的日志。6.3 性能调优针对高并发场景的5项关键参数当单台服务器需支撑100并发会话时调整以下参数1. Node.js堆内存限制在docker-compose.yml中为openclaw-gateway添加environment: - NODE_OPTIONS--max-old-space-size40962. Docker守护进程配置编辑/etc/docker/daemon.json{ default-ulimits: { nofile: { Name: nofile,