用老 Mac 跑本地 AI:OpenClaw 环境一键搭建
摘要:老款 Mac 本地 AI 部署指南 本文详细介绍了如何利用老款 Mac 设备搭建 OpenClaw 本地 AI 环境。主要内容包括: 硬件要求:明确列出了最低配置(i3 CPU/4GB内存/128GB SSD)和推荐配置,并提供了支持的 Mac 型号清单(2012-2019年款) 系统准备: 安装 Ubuntu 22.04 LTS 进行系统优化(更新、工具安装、时区配置等) 一键部署方案:
·
用老 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 环境搭建的流程图:
五、高级配置
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)