当前位置: 首页 > news >正文

Docker安装部署OpenClaw

软件环境描述说明:

  • OS:openEuler 24.03 LTS SP3
  • dockers:29.2.1
  • openclaw:2026.2.2
  • node:25.5.0-bookworm
  • nginx:1.28.1 1

1. 下载OpenClaw

tar -zvf openclaw-2026.2.2.tar.gz
cd openclaw-2026.2.2

2. 构建openclaw镜像

# mv Dockerfile Dockerfile-ols
# echo '' > Dockerfile
# vi Dockerfile
FROM node:25.5.0-bookwormRUN curl -fsSL https://bun.sh/install | bash
ENV PATH="/root/.bun/bin:${PATH}"
RUN npm install -g pnpm
WORKDIR /appARG OPENCLAW_DOCKER_APT_PACKAGES=""
RUN if [ -n "$OPENCLAW_DOCKER_APT_PACKAGES" ]; then \apt-get update && \DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends $OPENCLAW_DOCKER_APT_PACKAGES && \apt-get clean && \rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/*; \fiCOPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc ./
COPY ui/package.json ./ui/package.json
COPY patches ./patches
COPY scripts ./scriptsRUN pnpm install --frozen-lockfileCOPY . .
RUN OPENCLAW_A2UI_SKIP_MISSING=1 pnpm build
ENV OPENCLAW_PREFER_PNPM=1
RUN pnpm ui:build
ENV NODE_ENV=production
RUN chown -R node:node /app
USER nodeENTRYPOINT ["node", "dist/index.js"]
CMD ["gateway", "--allow-unconfigured", "--bind", "lan"]
# docker build -t openclaw:2026.2.2 -f Dockerfile .

3. 创建OpenClaw持久化目录

mkdir -p /opt/openclaw/{config,workspace,certs,logs} && chown -R 1000:1000 /opt/openclaw/{config,workspace}

4. 创建OpenClaw网关容器

# docker network create openclaw-net
# openssl rand -hex 32 > /opt/openclaw/.env
# docker run -it \--name openclaw-gateway \--restart unless-stopped \--network openclaw-net \-v /etc/localtime:/etc/localtime:ro \-v /opt/openclaw/config:/home/node/.openclaw \-v /opt/openclaw/workspace:/home/node/.openclaw/workspace \-e OPENCLAW_GATEWAY_TOKEN="$(cat /opt/openclaw/.env)" \-d openclaw:2026.2.2

5. 生成自签名证书(也直接使用合法SSL证书)

openssl req -x509 -nodes -days 3650 \-newkey rsa:2048 \-keyout /opt/openclaw/certs/openclaw.key \-out /opt/openclaw/certs/openclaw.crt \-subj "/C=CN/ST=Beijing/L=Beijing/O=person/CN=openclaw.local"

6. 创建Nginx容器

# vi /opt/openclaw/config/nginx.conf
worker_processes auto;events {worker_connections 10;
}http {log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /opt/openclaw/logs/access.log main;error_log /opt/openclaw/logs/error.log;server {listen 443 ssl;server_name _;ssl_certificate /etc/nginx/certs/openclaw.crt;ssl_certificate_key /etc/nginx/certs/openclaw.key;ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';ssl_prefer_server_ciphers on;location / {proxy_pass http://openclaw-gateway:18789;proxy_http_version 1.1;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection 'upgrade';proxy_set_header Host $host;proxy_cache_bypass $http_upgrade;}}
}
docker run -it \--name openclaw-nginx \--restart unless-stopped \--network openclaw-net \-p 443:443 \-v /etc/localtime:/etc/localtime:ro \-v /opt/openclaw/config/nginx.conf:/etc/nginx/nginx.conf \-v /opt/openclaw/certs:/etc/nginx/certs:ro \-v /opt/openclaw/logs:/opt/openclaw/logs \-d nginx:1.28.1

 7. 创建OpenClaw控制器容器并配置OpenClaw

docker run -it \--name openclaw-cli \--restart unless-stopped \--network openclaw-net \-v /etc/localtime:/etc/localtime:ro \-v /opt/openclaw/config:/home/node/.openclaw \-v /opt/openclaw/workspace:/home/node/.openclaw/workspace \-e OPENCLAW_GATEWAY_TOKEN="$(cat /opt/openclaw/.env)" \openclaw:2026.2.2 onboard --no-install-daemon

附录:

1. 创建OpenClaw项目docker-compose

cat > docker-compose.yaml <<EOF
version: "3.8"services:openclaw-gateway:image: openclaw:2026.2.2container_name: openclaw-gatewayrestart: unless-stoppednetworks:- openclaw-netvolumes:- /etc/localtime:/etc/localtime:ro- /opt/openclaw/config:/home/node/.openclaw- /opt/openclaw/workspace:/home/node/.openclaw/workspaceenvironment:- OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}command: tail -f /dev/null  # Keeps the container running in the backgrounddepends_on:- openclaw-cli- openclaw-nginxopenclaw-nginx:image: nginx:1.28.1container_name: openclaw-nginxrestart: unless-stoppednetworks:- openclaw-netports:- "443:443"volumes:- /etc/localtime:/etc/localtime:ro- /opt/openclaw/config/nginx.conf:/etc/nginx/nginx.conf- /opt/openclaw/certs:/etc/nginx/certs:ro- /opt/openclaw/logs:/opt/openclaw/logsdepends_on:- openclaw-gatewayopenclaw-cli:image: openclaw:2026.2.2container_name: openclaw-clirestart: unless-stoppednetworks:- openclaw-netvolumes:- /etc/localtime:/etc/localtime:ro- /opt/openclaw/config:/home/node/.openclaw- /opt/openclaw/workspace:/home/node/.openclaw/workspaceenvironment:- OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}command: onboard --no-install-daemondepends_on:- openclaw-gatewaynetworks:openclaw-net:driver: bridge
EOF

2. OpenClaw项目一键安装脚本

#!/bin/bash
set -e
# 1. 检查并创建 openclaw-setup 目录
echo "Checking if /opt/openclaw-setup directory exists..."
if [ ! -d "/opt/openclaw-setup" ]; thenecho "/opt/openclaw-setup directory does not exist, creating it..."mkdir -p /opt/openclaw-setup
fi# 切换到 openclaw-setup 目录
cd /opt/openclaw-setup || exit# 2. 下载 OpenClaw
echo "Downloading OpenClaw..."
git clone https://github.com/openclaw/openclaw.git# 3. 构建 OpenClaw 镜像
echo "Building OpenClaw Docker image..."
cd openclaw 
mv Dockerfile Dockerfile-oldcat << 'EOF' > Dockerfile
FROM node:25.5.0-bookwormRUN curl -fsSL https://bun.sh/install | bash
ENV PATH="/root/.bun/bin:${PATH}"RUN npm install -g pnpmWORKDIR /appARG OPENCLAW_DOCKER_APT_PACKAGES=""
RUN if [ -n "$OPENCLAW_DOCKER_APT_PACKAGES" ]; then \apt-get update && \DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends $OPENCLAW_DOCKER_APT_PACKAGES && \apt-get clean && \rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/*; \fiCOPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc ./ 
COPY ui/package.json ./ui/package.json 
COPY patches ./patches 
COPY scripts ./scriptsRUN pnpm install --frozen-lockfileCOPY . . 
RUN OPENCLAW_A2UI_SKIP_MISSING=1 pnpm build
ENV OPENCLAW_PREFER_PNPM=1
RUN pnpm ui:buildENV NODE_ENV=productionRUN chown -R node:node /appUSER nodeENTRYPOINT ["node", "dist/index.js"]
CMD ["gateway", "--allow-unconfigured", "--bind", "lan"]
EOF# 构建镜像
docker build -t openclaw:2026.2.2 -f Dockerfile .# 4. 创建持久化目录
echo "Creating persistent directories..."
mkdir -p /opt/openclaw/{config,workspace,certs,logs} && chown -R 1000:1000 /opt/openclaw/{config,workspace}# 5. 创建 .env 文件
echo "Generating environment token..."
openssl rand -hex 32 > /opt/openclaw/.env# 6. 生成自签名证书
echo "Generating self-signed certificates..."
openssl req -x509 -nodes -days 3650 \-newkey rsa:2048 \-keyout /opt/openclaw/certs/openclaw.key \-out /opt/openclaw/certs/openclaw.crt \-subj "/C=CN/ST=Beijing/L=Beijing/O=person/CN=openclaw.local"# 7. 配置 Nginx
echo "Creating Nginx configuration..."
cat << 'EOF' > /opt/openclaw/config/nginx.conf
worker_processes auto;events {worker_connections 10;
}http {log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /opt/openclaw/logs/access.log main;error_log /opt/openclaw/logs/error.log;server {listen 443 ssl;server_name _;ssl_certificate /etc/nginx/certs/openclaw.crt;ssl_certificate_key /etc/nginx/certs/openclaw.key;ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';ssl_prefer_server_ciphers on;location / {proxy_pass http://openclaw-gateway:18789;proxy_http_version 1.1;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection 'upgrade';proxy_set_header Host $host;proxy_cache_bypass $http_upgrade;}}
}
EOF# 8. 配置 Docker Compose
echo "Creating docker-compose.yaml file..."
cat << 'EOF' > /opt/openclaw/docker-compose.yaml
version: "3.8"services:openclaw-gateway:image: openclaw:2026.2.2container_name: openclaw-gatewayrestart: unless-stoppednetworks:- openclaw-netvolumes:- /etc/localtime:/etc/localtime:ro- /opt/openclaw/config:/home/node/.openclaw- /opt/openclaw/workspace:/home/node/.openclaw/workspaceenvironment:- OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}command: tail -f /dev/nulldepends_on:- openclaw-cli- openclaw-nginxopenclaw-nginx:image: nginx:1.28.1container_name: openclaw-nginxrestart: unless-stoppednetworks:- openclaw-netports:- "443:443"volumes:- /etc/localtime:/etc/localtime:ro- /opt/openclaw/config/nginx.conf:/etc/nginx/nginx.conf- /opt/openclaw/certs:/etc/nginx/certs:ro- /opt/openclaw/logs:/opt/openclaw/logsdepends_on:- openclaw-gatewayopenclaw-cli:image: openclaw:2026.2.2container_name: openclaw-clirestart: unless-stoppednetworks:- openclaw-netvolumes:- /etc/localtime:/etc/localtime:ro- /opt/openclaw/config:/home/node/.openclaw- /opt/openclaw/workspace:/home/node/.openclaw/workspaceenvironment:- OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}command: onboard --no-install-daemondepends_on:- openclaw-gatewaynetworks:openclaw-net:driver: bridge
EOF# 9. 启动 Docker Compose
echo "Starting OpenClaw with Docker Compose..."
cd /opt/openclaw && docker-compose up -decho "OpenClaw setup complete!"

 

http://www.jsqmd.com/news/343143/

相关文章:

  • 大数据毕设项目:基于Python+Echart的学生心理健康数据可视化系统设计与实现(源码+文档,讲解、调试运行,定制等)
  • 【无线充电车辆路线和速度预测】使用随机搜索优化方法同时具有路由和速度分配的模型研究附Matlab代码
  • 2026年休闲食品品牌推荐榜单:基于健康指标的选购指南 - Top品牌推荐
  • MAF快速入门(14)快速集成A2A Agent
  • 腾讯二面:1亿玩家实时排名,我答“Redis分桶”被挂!面试官:钻石局5000万人,你那个桶早炸了!
  • 【无线传感器网络】LEACH和LEACH-C协议研究附Matlab代码
  • 基于PageIndex的文档问答
  • P1941 [NOIP 2014 提高组] 飞扬的小鸟
  • Git与GitHub:深度解析与实用指南
  • TCP三次握手和四次断开 - 指南
  • 大数据计算机毕设之基于Python+Echart的学生心理健康数据可视化系统设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • OpenClaw/Memu/Nanobot
  • 【报告】东鹏饮料印尼落子:2亿美元携手华商巨头,共筑出海桥头堡
  • 在Docker中运行OpenClaw
  • GJ504b 的 React 进阶之路:Day 4
  • 【无线传感器网络】多级动态优化智能LEACH与成本效益深度信念网络附Matlab代码
  • 任何东西都可以转成 Base64!?
  • spring6-注解式开发
  • CodeChef - TREEQUER
  • AI应用开发从入门到精通:打破“调接口”误区,收藏这一篇就够了!
  • 【无人机协同路径规划】基于六种最新优化算法(TOC、MSO、AE、DOA、GOA、OX)求解多个无人机协同路径规划研究(可以自定义无人机数量及起始点)附Matlab代码
  • 大模型Agent应用开发教程(非常详细),手把手教你从零构建智能体!
  • 从 synchronized 到 ConcurrentHashMap:一个小小的并发控制策略升级优化,证明我还是初级程序员
  • Claude Code生成UI的3个技巧
  • 【无人水面艇】USV路径跟踪LOS控制算法仿真附Matlab代码
  • Java面试早就不问八股文了!都是面试场景题,没做过根本回答不上来!
  • SQL性能优化秘籍:速度与简洁兼得
  • 汉中装修风格怎么选?汉府人家装饰本地业主实测好看风格盘点 - 一个呆呆
  • 大数据毕设项目推荐-基于Python+Echart的学生心理健康数据可视化系统设计与实现【附源码+文档,调试定制服务】
  • CSSCI期刊官宣:同一个作者一年内只能在核心期刊上发表一篇论文,你怎么看?