OpenClaw一键安装,Linux面板与手动脚本双方案
在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,区别只是管理方式不同。
更多推荐


所有评论(0)