在Linux服务器上部署OpenClaw是生产环境最常见的场景。这篇文章我把两种主流安装方式都写清楚:一种是通过宝塔面板(或者1Panel这类管理面板)的一键安装,适合不太熟悉命令行的同学;另一种是纯手动脚本安装,适合想掌控每个细节的开发者。两种方式我都实际跑过,下面直接上操作步骤。

OpenClaw最新版本一键部署包下载地址:https://top.wokk.cn/

方案一:面板安装(以宝塔为例)

前提是你已经装好了宝塔面板。没装的先装:

# 宝塔面板安装(Ubuntu/Debian)
wget -O install.sh https://download.bt.cn/install/install-ubuntu.sh && sudo bash install.sh ed8484bec

# CentOS安装
yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec

# 安装完成后会显示面板地址、用户名和密码
# 记下来!后面要用


登录面板后,在「软件商店」里搜索Node.js版本管理器(PM2),安装它。然后在终端里操作:

# 通过宝塔面板的终端执行以下命令

# 1. 创建专用用户(安全起见别用root跑服务)
sudo useradd -m -s /bin/bash openclaw
sudo su - openclaw

# 2. 安装nvm和Node.js
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
source ~/.bashrc
nvm install 22
nvm alias default 22

# 3. 下载并安装OpenClaw
mkdir -p ~/openclaw && cd ~/openclaw
curl -fsSL https://top.wokk.cn/install.sh -o install.sh
bash install.sh

# 4. 初始化配置
openclaw init

# 5. 创建systemd服务(通过PM2或直接systemd)
# 使用PM2管理进程
npm install -g pm2
pm2 start "$(which openclaw)" --name openclaw-gateway -- gateway start
pm2 save
pm2 startup   # 生成开机自启命令,按提示执行那条sudo命令


在宝塔里配置反向代理,让外网能通过域名访问:

# 宝塔面板操作:网站 → 添加站点 → 填你的域名
# 然后在站点设置 → 反向代理 → 添加反向代理

# 代理名称:openclaw
# 目标URL:http://127.0.0.1:8080
# 发送域名:$host

# Nginx配置(如果需要手动配)
# 在站点的nginx配置中添加:
location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_read_timeout 86400;
}

# 重载Nginx
nginx -t && nginx -s reload

方案二:纯手动脚本安装

这种方式适合没有面板、纯命令行的VPS服务器。脚本写得尽量通用,Ubuntu、Debian、CentOS都能跑。

# ========================================
# openclaw_install.sh - 手动安装脚本
# 用途:在Linux服务器上一键安装OpenClaw
# 用法:bash openclaw_install.sh
# ========================================
#!/bin/bash
set -euo pipefail

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

log_info()  { echo -e "${GREEN}[INFO]${NC} $1"; }
log_warn()  { echo -e "${YELLOW}[WARN]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }

# 检测系统
detect_os() {
    if [ -f /etc/os-release ]; then
        . /etc/os-release
        OS=$ID
        VERSION=$VERSION_ID
    elif [ -f /etc/redhat-release ]; then
        OS="centos"
        VERSION=$(cat /etc/redhat-release | grep -oP '(?<=release )\d+')
    else
        log_error "无法识别的操作系统"
        exit 1
    fi
    log_info "检测到系统: $OS $VERSION"
}

# 检查最低配置
check_requirements() {
    local cpu_cores=$(nproc)
    local mem_total=$(free -g | awk '/^Mem:/{print $2}')
    local disk_avail=$(df -BG / | awk 'NR==2{print $4}' | tr -d 'G')
    
    log_info "CPU核心数: $cpu_cores"
    log_info "内存: ${mem_total}GB"
    log_info "可用磁盘: ${disk_avail}GB"
    
    [ "$cpu_cores" -lt 2 ] && log_warn "CPU核心数少于2,性能可能不足"
    [ "$mem_total" -lt 4 ] && log_error "内存少于4GB,无法运行" && exit 1
    [ "$disk_avail" -lt 10 ] && log_error "可用磁盘少于10GB" && exit 1
}

# 安装依赖
install_deps() {
    log_info "正在安装系统依赖..."
    case $OS in
        ubuntu|debian)
            sudo apt-get update -qq
            sudo apt-get install -y -qq curl git build-essential
            ;;
        centos|rhel|rocky|almalinux)
            sudo yum install -y curl git gcc make
            ;;
        *)
            log_error "不支持的系统: $OS"
            exit 1
            ;;
    esac
    log_info "系统依赖安装完成"
}

# 安装Node.js
install_node() {
    if command -v node &> /dev/null && node --version | grep -q "v22"; then
        log_info "Node.js v22 已安装,跳过"
        return
    fi
    
    log_info "正在安装Node.js v22..."
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
    
    export NVM_DIR="$HOME/.nvm"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
    
    nvm install 22
    nvm alias default 22
    nvm use 22
    
    log_info "Node.js $(node --version) 安装完成"
}

# 安装OpenClaw
install_openclaw() {
    log_info "正在安装OpenClaw..."
    npm install -g @openclaw/cli
    log_info "OpenClaw $(openclaw --version) 安装完成"
}

# 创建服务
setup_service() {
    log_info "正在创建systemd服务..."
    
    local user=$(whoami)
    local nvm_dir="$HOME/.nvm"
    
    sudo tee /etc/systemd/system/openclaw.service > /dev/null << EOF
[Unit]
Description=OpenClaw Gateway Server
After=network.target

[Service]
Type=simple
User=$user
WorkingDirectory=$HOME
Environment=PATH=$nvm_dir/versions/node/$(nvm current)/bin:/usr/local/bin:/usr/bin
ExecStart=$nvm_dir/versions/node/$(nvm current)/bin/openclaw gateway start --foreground
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF
    
    sudo systemctl daemon-reload
    sudo systemctl enable openclaw
    log_info "systemd服务创建完成"
}

# 主流程
main() {
    echo "========================================"
    echo "    OpenClaw Linux 安装脚本"
    echo "========================================"
    
    detect_os
    check_requirements
    install_deps
    install_node
    install_openclaw
    
    echo ""
    log_info "OpenClaw安装完成!"
    log_info "接下来请执行: openclaw init"
    log_info "然后执行: setup_service 创建开机自启服务"
}

main "$@"


使用这个脚本:

# 下载脚本
wget https://top.wokk.cn/openclaw_install.sh -O openclaw_install.sh
# 或者把上面的内容保存为 openclaw_install.sh

# 执行
chmod +x openclaw_install.sh
bash openclaw_install.sh

# 安装完成后初始化配置
openclaw init

# 配置好之后创建服务
bash openclaw_install.sh setup_service

# 启动服务
sudo systemctl start openclaw
sudo systemctl status openclaw

# 查看日志
sudo journalctl -u openclaw -f

方案对比和选型建议
# 两种方案对比
# ┌─────────────────┬──────────────┬──────────────┐
# │       特性       │   面板安装    │   手动脚本    │
# ├─────────────────┼──────────────┼──────────────┤
# │ 难度            │    低         │    中         │
# │ 灵活度          │    中         │    高         │
# │ 适合人群        │  运维新手     │  开发者       │
# │ Web管理界面     │    有         │    无         │
# │ 反向代理配置    │   面板内操作   │  手动写Nginx  │
# │ SSL证书         │   一键申请    │  需配certbot  │
# │ 进程管理        │   PM2/面板    │  systemd      │
# │ 资源占用        │  稍高(面板)   │  较低         │
# └─────────────────┴──────────────┴──────────────┘

# 我个人建议:
# - 个人测试/学习:手动脚本就够了
# - 给别人用的正式服务:用面板省心
# - 企业生产环境:手动+CI/CD+监控

安装后的安全加固

不管哪种方案装好之后,安全加固不能省:

# 1. 配置防火墙(只开放必要端口)
sudo ufw allow 22/tcp      # SSH
sudo ufw allow 80/tcp      # HTTP
sudo ufw allow 443/tcp     # HTTPS
sudo ufw deny 8080/tcp     # 关闭直接访问(走Nginx反向代理)
sudo ufw enable

# 2. 配置HTTPS(用Let's Encrypt免费证书)
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your-domain.com
# 按提示操作,自动配置SSL

# 3. 修改默认配置,增强安全
cat >> ~/.openclaw/config.yaml << 'EOF'

# 安全加固配置
security:
  allowed_origins:
    - "https://your-domain.com"
  rate_limit:
    enabled: true
    max_requests: 100
    window: 60s
  cors:
    enabled: true
    origins:
      - "https://your-domain.com"
EOF

# 4. 定期更新
openclaw update
npm update -g @openclaw/cli


两种方案各有优势,看你的场景选就行。面板方案适合快速上手、不太想折腾底层的人;手动脚本方案适合想要完全掌控部署过程、需要定制化的场景。反正核心都是装Node.js然后跑OpenClaw CLI,区别只是管理方式不同。

更多推荐