欢迎光临
我们一直在努力

用老 Mac 跑本地 AI:OpenClaw 环境一键搭建

用老 Mac 跑本地 AI:OpenClaw 环境一键搭建

老款 Mac 可以通过一键搭建 OpenClaw 环境,快速部署本地 AI 服务。本文将详细介绍如何使用自动化脚本一键搭建 OpenClaw 环境,让老 Mac 发挥余热,成为强大的本地 AI 工作站。

一、硬件要求

1.1 最低配置

组件最低配置推荐配置说明
CPU Intel i3 第 3 代 Intel i5 第 4 代及以上 支持 VT-x/VT-d
内存 4GB 8GB 或更高 DDR3
存储 128GB SSD 256GB SSD 或更高 SATA 或 NVMe
网络 Wi-Fi Wi-Fi + 有线 有线网络优先

1.2 支持的 Mac 型号

型号年份CPU内存存储
MacBook Pro 13" 2012-2015 i5/i7 4-16GB 128-512GB
MacBook Air 13" 2013-2017 i5/i7 4-8GB 128-512GB
MacBook 12" 2015-2019 m3/m5/m7 8-16GB 256-512GB
iMac 21.5" 2013-2017 i5/i7 8-32GB 1TB Fusion
Mac mini 2012-2014 i5/i7 4-16GB 500GB-1TB

二、系统准备

2.1 安装 Ubuntu

# 下载 Ubuntu 22.04 LTS
wget https://releases.ubuntu.com/22.04/ubuntu-22.04.3-desktop-amd64.iso

# 制作启动盘
sudo dd if=ubuntu-22.04.3-desktop-amd64.iso of=/dev/sdX bs=4M

# 安装 Ubuntu Server
# 按照安装向导完成安装

2.2 系统优化

# 更新系统
sudo apt update && sudo apt upgrade -y

# 安装常用工具
sudo apt install -y vim git curl wget htop net-tools tmux

# 配置时区
sudo timedatectl set-timezone Asia/Shanghai

# 配置主机名
sudo hostnamectl set-hostname macbook-ai

三、一键搭建脚本

3.1 创建主脚本

#!/bin/bash

LOG_FILE="/var/log/openclaw-install.log"
ALERT_EMAIL="admin@example.com"

log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a $LOG_FILE
}

send_alert() {
local subject=$1
local message=$2
echo "$message" | mail -s "$subject" $ALERT_EMAIL
}

check_system() {
log "=== Checking System Requirements ==="

# 检查 CPU
local cpu_model=$(cat /proc/cpuinfo | grep 'model name' | head -1 | cut -d':' -f2 | xargs)
log "CPU Model: $cpu_model"

# 检查内存
local total_mem=$(free -h | grep Mem | awk '{print $2}')
log "Total Memory: $total_mem"

# 检查磁盘
local disk_size=$(df -h / | tail -1 | awk '{print $2}')
log "Disk Size: $disk_size"

# 检查网络
ping -c 4 8.8.8.8 > /dev/null 2>&1
if [ $? -eq 0 ]; then
log "Network connection is normal"
else
log "Network connection failed"
return 1
fi

log "=== System Requirements Check Completed ==="
return 0
}

install_docker() {
log "=== Installing Docker ==="

# 安装 Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# 启动 Docker 服务
sudo systemctl start docker
sudo systemctl enable docker

# 将当前用户添加到 docker 组
sudo usermod -aG docker $USER

# 验证 Docker 安装
docker –version
docker-compose –version

log "=== Docker Installation Completed ==="
}

install_openclaw() {
log "=== Installing OpenClaw ==="

# 创建工作目录
mkdir -p /opt/openclaw
cd /opt/openclaw

# 克隆 OpenClaw 仓库
git clone https://github.com/openclaw/openclaw.git

# 进入项目目录
cd openclaw

# 复制配置文件
cp .env.example .env

# 编辑配置文件
cat << 'EOF' > .env
# OpenClaw 配置
OPENCLAW_PORT=8080
OPENCLAW_HOST=0.0.0.0

# 数据库配置
DB_HOST=postgres
DB_PORT=5432
DB_NAME=openclaw
DB_USER=openclaw
DB_PASSWORD=openclaw123

# Redis 配置
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=

# 数据存储
DATA_PATH=/data/openclaw

# AI 模型配置
AI_MODEL_PATH=/data/openclaw/models
AI_MODEL_TYPE=llama

# 日志配置
LOG_LEVEL=info
LOG_PATH=/var/log/openclaw
EOF

log "=== OpenClaw Installation Completed ==="
}

create_docker_compose() {
log "=== Creating Docker Compose Configuration ==="

cat << 'EOF' > /opt/openclaw/openclaw/docker-compose.yml
version: '3'

services:
openclaw:
image: openclaw/openclaw:latest
container_name: openclaw
restart: always
ports:
– "8080:8080"
volumes:
– /data/openclaw:/data
– ./.env:/app/.env
environment:
– DB_HOST=postgres
– REDIS_HOST=redis
depends_on:
– postgres
– redis
networks:
– openclaw-net

postgres:
image: postgres:14
container_name: openclaw-postgres
restart: always
volumes:
– /data/openclaw/postgres:/var/lib/postgresql/data
environment:
– POSTGRES_DB=openclaw
– POSTGRES_USER=openclaw
– POSTGRES_PASSWORD=openclaw123
networks:
– openclaw-net

redis:
image: redis:7-alpine
container_name: openclaw-redis
restart: always
volumes:
– /data/openclaw/redis:/data
networks:
– openclaw-net

networks:
openclaw-net:
driver: bridge
EOF

log "=== Docker Compose Configuration Created ==="
}

start_openclaw() {
log "=== Starting OpenClaw ==="

# 创建数据目录
sudo mkdir -p /data/openclaw

# 启动所有服务
cd /opt/openclaw/openclaw
docker-compose up -d

# 等待服务启动
sleep 30

# 查看服务状态
docker-compose ps

# 查看日志
docker-compose logs –tail=50

log "=== OpenClaw Started ==="
}

test_openclaw() {
log "=== Testing OpenClaw ==="

# 等待服务完全启动
sleep 30

# 测试 API
local health_check=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/api/health)
log "OpenClaw health check: $health_check"

if [ "$health_check" = "200" ]; then
log "OpenClaw is running normally"
return 0
else
log "OpenClaw is not running"
return 1
fi
}

configure_autostart() {
log "=== Configuring Autostart ==="

# 创建 systemd 服务文件
cat << 'EOF' | sudo tee /etc/systemd/system/openclaw.service > /dev/null
[Unit]
Description=OpenClaw AI Service
After=docker.service
Requires=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/opt/openclaw/openclaw
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0

[Install]
WantedBy=multi-user.target
EOF

# 启用服务
sudo systemctl daemon-reload
sudo systemctl enable openclaw
sudo systemctl start openclaw

log "=== Autostart Configuration Completed ==="
}

configure_ssh() {
log "=== Configuring SSH ==="

# 安装 SSH 服务器
sudo apt install -y openssh-server

# 启动 SSH 服务
sudo systemctl enable ssh
sudo systemctl start ssh

# 配置防火墙
sudo ufw allow 22/tcp
sudo ufw –force enable

log "=== SSH Configuration Completed ==="
}

configure_firewall() {
log "=== Configuring Firewall ==="

# 配置防火墙
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 8080/tcp
sudo ufw –force enable

log "=== Firewall Configuration Completed ==="
}

create_monitor_script() {
log "=== Creating Monitor Script ==="

cat << 'EOF' | sudo tee /usr/local/bin/openclaw-monitor.sh > /dev/null
#!/bin/bash

LOG_FILE="/var/log/openclaw-monitor.log"

log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE
}

check_openclaw() {
local health_check=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/api/health)
log "OpenClaw health check: $health_check"

if [ "$health_check" != "200" ]; then
log "OpenClaw service is not running, restarting…"
cd /opt/openclaw/openclaw
docker-compose restart
sleep 30
fi
}

check_system_resources() {
local cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)
log "CPU Usage: ${cpu_usage}%"

local mem_usage=$(free | grep Mem | awk '{printf("%.0f"), $3/$2 * 100.0}')
log "Memory Usage: ${mem_usage}%"

local disk_usage=$(df -h /data | tail -1 | awk '{print $5}' | cut -d'%' -f1)
log "Disk Usage: ${disk_usage}%"

if [ $mem_usage -gt 80 ]; then
log "High memory usage: ${mem_usage}%"
sync && echo 3 > /proc/sys/vm/drop_caches
fi

if [ $disk_usage -gt 80 ]; then
log "High disk usage: ${disk_usage}%"
docker system prune -f
fi
}

main() {
log "=== OpenClaw Monitor Started ==="

check_openclaw
check_system_resources

log "=== OpenClaw Monitor Completed ==="
}

main
EOF

sudo chmod +x /usr/local/bin/openclaw-monitor.sh

log "=== Monitor Script Created ==="
}

configure_cron() {
log "=== Configuring Cron Jobs ==="

# 配置定时任务
(crontab -l 2>/dev/null; echo "*/5 * * * * /usr/local/bin/openclaw-monitor.sh") | crontab

log "=== Cron Jobs Configuration Completed ==="
}

print_summary() {
log "=== Installation Summary ==="

echo ""
echo "OpenClaw has been successfully installed on your Mac!"
echo ""
echo "Access Information:"
echo " – OpenClaw Web UI: http://localhost:8080"
echo " – SSH Access: ssh user@$(hostname -I | awk '{print $1}')"
echo ""
echo "Service Status:"
echo " – OpenClaw: $(systemctl is-active openclaw)"
echo " – Docker: $(systemctl is-active docker)"
echo " – SSH: $(systemctl is-active ssh)"
echo ""
echo "Next Steps:"
echo " 1. Access OpenClaw Web UI at http://localhost:8080"
echo " 2. Configure your AI models and settings"
echo " 3. Start using OpenClaw for AI tasks"
echo ""
echo "For more information, visit: https://github.com/openclaw/openclaw"
echo ""
}

main() {
log "=== OpenClaw One-Click Installation Started ==="

# 检查系统要求
check_system
if [ $? -ne 0 ]; then
log "System requirements check failed"
exit 1
fi

# 安装 Docker
install_docker

# 安装 OpenClaw
install_openclaw

# 创建 Docker Compose 配置
create_docker_compose

# 启动 OpenClaw
start_openclaw

# 测试 OpenClaw
test_openclaw
if [ $? -ne 0 ]; then
log "OpenClaw test failed"
exit 1
fi

# 配置开机自启
configure_autostart

# 配置 SSH
configure_ssh

# 配置防火墙
configure_firewall

# 创建监控脚本
create_monitor_script

# 配置定时任务
configure_cron

# 打印安装摘要
print_summary

log "=== OpenClaw One-Click Installation Completed ==="
}

main

3.2 执行一键安装

# 下载一键安装脚本
wget https://raw.githubusercontent.com/openclaw/install-scripts/main/install-openclaw-mac.sh

# 添加执行权限
chmod +x install-openclaw-mac.sh

# 执行安装
sudo ./install-openclaw-mac.sh

四、OpenClaw 环境搭建流程

为了确保 OpenClaw 环境一键搭建成功,我们需要建立一套完整的搭建流程。以下是 OpenClaw 环境搭建的流程图:

#mermaid-svg-cL1XQ3KSBDeYDw44{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-cL1XQ3KSBDeYDw44 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-cL1XQ3KSBDeYDw44 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-cL1XQ3KSBDeYDw44 .error-icon{fill:#552222;}#mermaid-svg-cL1XQ3KSBDeYDw44 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-cL1XQ3KSBDeYDw44 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-cL1XQ3KSBDeYDw44 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-cL1XQ3KSBDeYDw44 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-cL1XQ3KSBDeYDw44 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-cL1XQ3KSBDeYDw44 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-cL1XQ3KSBDeYDw44 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-cL1XQ3KSBDeYDw44 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-cL1XQ3KSBDeYDw44 .marker.cross{stroke:#333333;}#mermaid-svg-cL1XQ3KSBDeYDw44 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-cL1XQ3KSBDeYDw44 p{margin:0;}#mermaid-svg-cL1XQ3KSBDeYDw44 .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-cL1XQ3KSBDeYDw44 .cluster-label text{fill:#333;}#mermaid-svg-cL1XQ3KSBDeYDw44 .cluster-label span{color:#333;}#mermaid-svg-cL1XQ3KSBDeYDw44 .cluster-label span p{background-color:transparent;}#mermaid-svg-cL1XQ3KSBDeYDw44 .label text,#mermaid-svg-cL1XQ3KSBDeYDw44 span{fill:#333;color:#333;}#mermaid-svg-cL1XQ3KSBDeYDw44 .node rect,#mermaid-svg-cL1XQ3KSBDeYDw44 .node circle,#mermaid-svg-cL1XQ3KSBDeYDw44 .node ellipse,#mermaid-svg-cL1XQ3KSBDeYDw44 .node polygon,#mermaid-svg-cL1XQ3KSBDeYDw44 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-cL1XQ3KSBDeYDw44 .rough-node .label text,#mermaid-svg-cL1XQ3KSBDeYDw44 .node .label text,#mermaid-svg-cL1XQ3KSBDeYDw44 .image-shape .label,#mermaid-svg-cL1XQ3KSBDeYDw44 .icon-shape .label{text-anchor:middle;}#mermaid-svg-cL1XQ3KSBDeYDw44 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-cL1XQ3KSBDeYDw44 .rough-node .label,#mermaid-svg-cL1XQ3KSBDeYDw44 .node .label,#mermaid-svg-cL1XQ3KSBDeYDw44 .image-shape .label,#mermaid-svg-cL1XQ3KSBDeYDw44 .icon-shape .label{text-align:center;}#mermaid-svg-cL1XQ3KSBDeYDw44 .node.clickable{cursor:pointer;}#mermaid-svg-cL1XQ3KSBDeYDw44 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-cL1XQ3KSBDeYDw44 .arrowheadPath{fill:#333333;}#mermaid-svg-cL1XQ3KSBDeYDw44 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-cL1XQ3KSBDeYDw44 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-cL1XQ3KSBDeYDw44 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-cL1XQ3KSBDeYDw44 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-cL1XQ3KSBDeYDw44 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-cL1XQ3KSBDeYDw44 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-cL1XQ3KSBDeYDw44 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-cL1XQ3KSBDeYDw44 .cluster text{fill:#333;}#mermaid-svg-cL1XQ3KSBDeYDw44 .cluster span{color:#333;}#mermaid-svg-cL1XQ3KSBDeYDw44 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-cL1XQ3KSBDeYDw44 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-cL1XQ3KSBDeYDw44 rect.text{fill:none;stroke-width:0;}#mermaid-svg-cL1XQ3KSBDeYDw44 .icon-shape,#mermaid-svg-cL1XQ3KSBDeYDw44 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-cL1XQ3KSBDeYDw44 .icon-shape p,#mermaid-svg-cL1XQ3KSBDeYDw44 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-cL1XQ3KSBDeYDw44 .icon-shape rect,#mermaid-svg-cL1XQ3KSBDeYDw44 .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-cL1XQ3KSBDeYDw44 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-cL1XQ3KSBDeYDw44 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-cL1XQ3KSBDeYDw44 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

配置错误

资源不足

其他错误

开始一键搭建

检查系统要求

系统要求满足?

提示升级硬件

安装 Docker

Docker 安装成功?

检查网络连接

网络正常?

配置网络

重试 Docker 安装

下载 OpenClaw

下载成功?

检查网络连接

网络正常?

重试下载

创建配置文件

创建 Docker Compose

启动 OpenClaw

启动成功?

检查 Docker 日志

错误信息?

修改配置

优化资源

查看详细日志

可解决?

修复错误

联系技术支持

测试 OpenClaw

测试通过?

检查服务状态

服务正常?

重启服务

检查网络连接

网络正常?

检查防火墙

防火墙配置正确?

配置防火墙

检查端口占用

端口被占用?

修改端口

查看详细日志

配置开机自启

配置 SSH

配置防火墙

创建监控脚本

配置定时任务

打印安装摘要

安装完成

五、高级配置

5.1 性能优化

# 创建性能优化脚本
cat << 'EOF' | sudo tee /usr/local/bin/openclaw-optimize.sh > /dev/null
#!/bin/bash

LOG_FILE="/var/log/openclaw-optimize.log"

log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE
}

optimize_cpu() {
log "Optimizing CPU settings…"

# 安装 CPU 频率调节工具
sudo apt install -y cpufrequtils

# 设置 CPU 调节器
echo 'GOVERNOR="ondemand"' | sudo tee -a /etc/default/cpufrequtils

# 重启服务
sudo systemctl restart cpufrequtils

log "CPU optimization completed"
}

optimize_memory() {
log "Optimizing memory settings…"

# 配置内存优化
cat << 'EOF' | sudo tee /etc/sysctl.d/99-memory-optimization.conf > /dev/null
# 内存优化
vm.swappiness=10
vm.vfs_cache_pressure=50
vm.dirty_ratio=15
vm.dirty_background_ratio=5
EOF

# 应用配置
sudo sysctl -p /etc/sysctl.d/99-memory-optimization.conf

log "Memory optimization completed"
}

optimize_disk() {
log "Optimizing disk settings…"

# 配置磁盘优化
cat << 'EOF' | sudo tee /etc/sysctl.d/99-disk-optimization.conf > /dev/null
# 磁盘优化
vm.swappiness=10
vm.vfs_cache_pressure=50
vm.dirty_ratio=15
vm.dirty_background_ratio=5
EOF

# 应用配置
sudo sysctl -p /etc/sysctl.d/99-disk-optimization.conf

log "Disk optimization completed"
}

optimize_network() {
log "Optimizing network settings…"

# 配置网络优化
cat << 'EOF' | sudo tee /etc/sysctl.d/99-network-optimization.conf > /dev/null
# 网络优化
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_window_scaling = 1
EOF

# 应用配置
sudo sysctl -p /etc/sysctl.d/99-network-optimization.conf

log "Network optimization completed"
}

main() {
log "=== OpenClaw Optimization Started ==="

optimize_cpu
optimize_memory
optimize_disk
optimize_network

log "=== OpenClaw Optimization Completed ==="
}

main
EOF

sudo chmod +x /usr/local/bin/openclaw-optimize.sh

5.2 配置备份

# 创建备份脚本
cat << 'EOF' | sudo tee /usr/local/bin/openclaw-backup.sh > /dev/null
#!/bin/bash

LOG_FILE="/var/log/openclaw-backup.log"
BACKUP_DIR="/backup/openclaw"

log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE
}

backup_data() {
log "Backing up OpenClaw data…"

# 创建备份目录
mkdir -p $BACKUP_DIR

# 备份数据
tar -czf $BACKUP_DIR/openclaw-data-$(date +%Y%m%d).tar.gz /data/openclaw

# 备份配置
tar -czf $BACKUP_DIR/openclaw-config-$(date +%Y%m%d).tar.gz /opt/openclaw/openclaw

# 清理旧备份(保留最近 7 天)
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete

log "Backup completed"
}

main() {
log "=== OpenClaw Backup Started ==="

backup_data

log "=== OpenClaw Backup Completed ==="
}

main
EOF

sudo chmod +x /usr/local/bin/openclaw-backup.sh

配置定时备份:

crontab -e

# 添加每天凌晨 2 点执行备份
0 2 * * * /usr/local/bin/openclaw-backup.sh

六、使用指南

6.1 访问 OpenClaw

# 本地访问
curl http://localhost:8080

# 远程访问
curl http://your-macbook-ip:8080

6.2 测试 AI 功能

# 测试简单对话
curl -X POST http://localhost:8080/api/chat \\
-H "Content-Type: application/json" \\
-d '{"message": "Hello, how are you?"}'

# 测试代码生成
curl -X POST http://localhost:8080/api/chat \\
-H "Content-Type: application/json" \\
-d '{"message": "Write a Python function to calculate Fibonacci numbers."}'

# 测试智能问答
curl -X POST http://localhost:8080/api/chat \\
-H "Content-Type: application/json" \\
-d '{"message": "What is machine learning?"}'

6.3 查看日志

# 查看 OpenClaw 日志
docker-compose logs -f openclaw

# 查看系统日志
tail -f /var/log/openclaw-install.log

# 查看监控日志
tail -f /var/log/openclaw-monitor.log

七、故障排查

7.1 常见问题

问题原因解决方案
Docker 安装失败 网络问题 检查网络连接,重试安装
OpenClaw 启动失败 配置错误 检查配置文件,修改错误
服务无法访问 防火墙阻止 配置防火墙规则
性能低下 资源不足 优化资源配置
内存不足 内存占用高 清理缓存,优化内存

7.2 故障排查脚本

# 创建故障排查脚本
cat << 'EOF' | sudo tee /usr/local/bin/openclaw-troubleshoot.sh > /dev/null
#!/bin/bash

LOG_FILE="/var/log/openclaw-troubleshoot.log"

log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a $LOG_FILE
}

check_docker() {
log "Checking Docker…"

if systemctl is-active –quiet docker; then
log "Docker service is running"
docker –version
else
log "Docker service is not running"
sudo systemctl start docker
fi
}

check_openclaw() {
log "Checking OpenClaw…"

cd /opt/openclaw/openclaw
docker-compose ps

local health_check=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/api/health)
log "OpenClaw health check: $health_check"
}

check_network() {
log "Checking network…"

ping -c 4 8.8.8.8 > /dev/null 2>&1
if [ $? -eq 0 ]; then
log "Network connection is normal"
else
log "Network connection failed"
fi
}

check_resources() {
log "Checking system resources…"

local cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)
log "CPU Usage: ${cpu_usage}%"

local mem_usage=$(free | grep Mem | awk '{printf("%.0f"), $3/$2 * 100.0}')
log "Memory Usage: ${mem_usage}%"

local disk_usage=$(df -h /data | tail -1 | awk '{print $5}' | cut -d'%' -f1)
log "Disk Usage: ${disk_usage}%"
}

check_logs() {
log "Checking logs…"

log "=== OpenClaw Logs ==="
docker-compose logs –tail=50 openclaw

log "=== System Logs ==="
tail -50 /var/log/syslog
}

main() {
log "=== OpenClaw Troubleshoot Started ==="

check_docker
check_openclaw
check_network
check_resources
check_logs

log "=== OpenClaw Troubleshoot Completed ==="
}

main
EOF

sudo chmod +x /usr/local/bin/openclaw-troubleshoot.sh

八、总结

通过一键搭建脚本,我们可以快速在老 Mac 上部署 OpenClaw 环境,实现本地 AI 服务。

8.1 主要优势

  • 快速部署:一键安装,无需复杂配置
  • 自动化:自动完成所有配置步骤
  • 监控告警:自动监控服务状态
  • 自动恢复:服务异常自动重启
  • 性能优化:自动优化系统性能
  • 8.2 使用场景

    场景适用性说明
    个人学习 优秀 快速搭建 AI 环境
    家庭服务器 优秀 长期稳定运行
    开发测试 优秀 快速部署测试环境
    商业应用 良好 需要额外优化
    教育演示 优秀 简单易用

    8.3 后续优化

    可以进一步优化:

    • 配置高可用
    • 添加更多 AI 模型
    • 集成更多服务
    • 优化性能配置
    • 增强安全防护

    希望这篇教程能帮助大家成功在老 Mac 上一键搭建 OpenClaw 环境!

    在这里插入图片描述

    赞(0)
    未经允许不得转载:171主机测评 » 用老 Mac 跑本地 AI:OpenClaw 环境一键搭建
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址