用老 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 环境搭建的流程图:

配置错误

资源不足

其他错误

开始一键搭建

检查系统要求

系统要求满足?

提示升级硬件

安装 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 主要优势

  1. 快速部署:一键安装,无需复杂配置
  2. 自动化:自动完成所有配置步骤
  3. 监控告警:自动监控服务状态
  4. 自动恢复:服务异常自动重启
  5. 性能优化:自动优化系统性能

8.2 使用场景

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

8.3 后续优化

可以进一步优化:

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

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

在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐