本教程将指导您在 Ubuntu 系统上部署 CodeAgent 程序。
- Ubuntu 18.04 或更高版本
- 至少 2GB RAM
- 至少 10GB 可用磁盘空间
- 网络连接
首先更新系统包:
sudo apt update
sudo apt upgrade -y# 安装 Git
sudo apt install git -y
# 验证安装
git --version
# 配置 Git(可选)
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"sudo apt remove docker docker-engine docker.io containerd runcsudo apt install apt-transport-https ca-certificates curl gnupg lsb-release -ycurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpgecho "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io -ysudo systemctl start docker
sudo systemctl enable dockersudo usermod -aG docker $USER
# 重新登录或执行以下命令使更改生效
newgrp dockerdocker --version
docker run hello-world# 下载最新版本的 Go(请根据最新版本号调整)
wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz# 删除旧版本(如果存在)
sudo rm -rf /usr/local/go
# 解压到 /usr/local
sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz# 添加到 ~/.bashrc
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrcgo version# 克隆项目
git clone https://github.com/your-username/codeagent.git
cd codeagent
# 或者如果项目在私有仓库
git clone git@github.com:your-username/codeagent.git
cd codeagentdocker build -f Dockerfile.claude -t codeagent-claude:latest .docker build -f Dockerfile.gemini -t codeagent-gemini:latest .cp config.example.yaml config.yamlnano config.yaml配置示例:
# CodeAgent 配置文件
server:
port: 8080
host: "0.0.0.0"
# GitHub 配置
github:
token: "your-github-token"
webhook_secret: "your-webhook-secret"
# AI 服务配置
ai:
# Claude 配置
claude:
enabled: true
api_key: "your-claude-api-key"
model: "claude-3-sonnet-20240229"
# Gemini 配置
gemini:
enabled: true
api_key: "your-gemini-api-key"
model: "gemini-pro"
# 工作目录配置
workspace:
# 重要:在macOS上避免使用 /tmp 目录,可能导致Docker挂载问题
# 推荐路径:
# - macOS: /private/tmp/codeagent-workspace
# - Linux: /var/tmp/codeagent-workspace
# - 跨平台: ~/tmp/codeagent-workspace
base_path: "/private/tmp/codeagent-workspace" # 推荐用于macOS
cleanup_after_hours: 24cp env.example .env
nano .env# 编译项目
go build -o codeagent ./cmd/codeagent
# 运行程序
./codeagent# 运行 Claude 版本
docker run -d \
--name codeagent-claude \
-p 8080:8080 \
-v $(pwd)/config.yaml:/app/config.yaml \
-v $(pwd)/workspace:/app/workspace \
codeagent-claude:latest
# 运行 Gemini 版本
docker run -d \
--name codeagent-gemini \
-p 8080:8080 \
-v $(pwd)/config.yaml:/app/config.yaml \
-v $(pwd)/workspace:/app/workspace \
codeagent-gemini:latest# 检查程序是否运行
ps aux | grep codeagent
# 检查端口是否监听
netstat -tlnp | grep 8080
# 如果使用 Docker
docker ps# 测试健康检查端点
curl http://localhost:8080/health
# 测试 GitHub webhook 端点
curl -X POST http://localhost:8080/webhook/github \
-H "Content-Type: application/json" \
-d '{"test": "data"}'sudo nano /etc/systemd/system/codeagent.service服务文件内容:
[Unit]
Description=CodeAgent Service
After=network.target
[Service]
Type=simple
User=your-username
WorkingDirectory=/path/to/codeagent
ExecStart=/path/to/codeagent/codeagent
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable codeagent
sudo systemctl start codeagent
sudo systemctl status codeagentsudo apt install nginx -ysudo nano /etc/nginx/sites-available/codeagent配置内容:
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:8080;
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;
}
}sudo ln -s /etc/nginx/sites-available/codeagent /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx# 允许 SSH
sudo ufw allow ssh
# 允许 HTTP/HTTPS
sudo ufw allow 80
sudo ufw allow 443
# 如果直接暴露 CodeAgent 端口
sudo ufw allow 8080
# 启用防火墙
sudo ufw enable# 如果使用 systemd
sudo journalctl -u codeagent -f
# 如果直接运行
tail -f /path/to/codeagent/logs/codeagent.log
# 如果使用 Docker
docker logs -f codeagent-claudesudo nano /etc/logrotate.d/codeagent配置内容:
/path/to/codeagent/logs/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 644 your-username your-username
}
-
Docker 权限问题
sudo chmod 666 /var/run/docker.sock
-
macOS /tmp 目录挂载问题
# 问题:容器内 /workspace 目录为空 # 原因:macOS的 /tmp 是符号链接,Docker挂载可能有问题 # 解决:使用 /private/tmp 或 ~/tmp 目录 # 修改配置文件 workspace: base_path: "/private/tmp/codeagent-workspace" # 推荐 # 或者 base_path: "~/tmp/codeagent-workspace" # 跨平台
-
端口被占用
sudo netstat -tlnp | grep 8080 sudo kill -9 <PID>
-
GitHub Token 权限问题
- 确保 GitHub Token 有足够的权限
- 检查 Token 是否过期
-
AI API 连接问题
- 检查网络连接
- 验证 API Key 是否正确
- 检查 API 配额是否用完
# 启用调试日志
export LOG_LEVEL=debug
./codeagent
# 或者使用 Docker
docker run -it --rm \
-e LOG_LEVEL=debug \
-v $(pwd)/config.yaml:/app/config.yaml \
codeagent-claude:latest# 备份配置文件
cp config.yaml config.yaml.backup
# 备份工作目录
tar -czf workspace-backup-$(date +%Y%m%d).tar.gz workspace/# 恢复配置文件
cp config.yaml.backup config.yaml
# 恢复工作目录
tar -xzf workspace-backup-20231201.tar.gzcd codeagent
git pull origin main
go build -o codeagent ./cmd/codeagent
sudo systemctl restart codeagentdocker build -f Dockerfile.claude -t codeagent-claude:latest .
docker stop codeagent-claude
docker rm codeagent-claude
docker run -d --name codeagent-claude -p 8080:8080 codeagent-claude:latest现在您的 CodeAgent 已经成功部署并运行。您可以通过以下方式访问:
- 本地访问:http://localhost:8080
- 远程访问:http://your-server-ip:8080
- 域名访问:http://your-domain.com(如果配置了 Nginx)
记得定期检查日志和监控系统状态,确保服务正常运行。