nkds

导航

 

MonkeyCode私有化部署实战:企业内网环境下的完整搭建指南

🏢 为什么需要私有化部署?

对于企业用户而言,数据安全合规要求是首要考虑因素。MonkeyCode开源后,企业可以完全自主地将AI编程助手部署在内网环境中,确保代码资产不外泄。

私有化部署的核心优势

优势 说明 适用场景
🔒 数据安全 代码不离开内网 金融、军工、政府
⚡ 低延迟 本地推理,响应更快 大规模团队协作
💰 成本可控 无API调用费用 长期使用
🎯 定制自由 可深度定制功能 特殊业务需求
✅ 合规满足 满足等保/信创要求 国企/事业单位

📋 部署前准备

硬件要求

最低配置(1-5人团队)

组件 配置
CPU 4核 (推荐Intel Xeon或AMD EPYC)
内存 16GB RAM
存储 100GB SSD
GPU 可选(如使用本地模型需NVIDIA GPU ≥8GB显存)
网络 内网千兆

推荐配置(10-50人团队)

组件 配置
CPU 16核
内存 64GB RAM
存储 500GB NVMe SSD
GPU NVIDIA T4/A10(24GB显存)×1
网络 万兆内网

企业级配置(50+人)

组件 配置
CPU 32核+
内存 128GB+ RAM
存储 2TB NVMe SSD RAID
GPU NVIDIA A100(80GB)×2-4
网络 万兆 + 负载均衡

软件依赖

# 操作系统要求
- Ubuntu 22.04 LTS / CentOS 8+ / Debian 12
- Windows Server 2022(实验性支持)
- 麒麟V10 / 统信UOS(信创环境)

# 必装软件
- Docker 24.0+
- Docker Compose v2.20+
- Git 2.40+
- OpenSSL 3.0+

# 可选(GPU加速)
- NVIDIA Driver 535+
- CUDA Toolkit 12.0+
- nvidia-container-toolkit

🚀 方式一:Docker Compose一键部署(推荐)

这是最简单、最快速的部署方式,适合大多数场景。

Step 1: 克隆仓库

git clone https://github.com/monkeycode-ai/monkeycode.git
cd monkeycode

Step 2: 配置环境变量

cp .env.example .env
vim .env

.env 文件关键配置:

# ===== 基础配置 =====
MONKEYCODE_HOST=0.0.0.0
MONKEYCODE_PORT=8080
MONKEYCODE_SECRET_KEY=your-random-secret-key-here-change-this

# ===== 数据库配置 =====
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_USER=monkeycode
POSTGRES_PASSWORD=your-secure-password
POSTGRES_DB=monkeycode_db

# ===== Redis配置 =====
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=your-redis-password

# ===== AI模型配置 =====
# 选项A: 使用OpenAI API(需外网或代理)
AI_PROVIDER=openai
OPENAI_API_KEY=sk-your-api-key-here
OPENAI_BASE_URL=https://api.openai.com/v1  # 或你的代理地址

# 选项B: 使用本地模型(完全离线)
# AI_PROVIDER=local
# LOCAL_MODEL_PATH=/models/qwen2.5-coder-7b

# ===== 对象存储配置 =====
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minio-secret-key
MINIO_BUCKET_NAME=monkeycode-files

⚠️ 安全提醒:生产环境务必修改所有默认密码!

Step 3: 启动服务

# 创建必要目录
mkdir -p ./data/postgres ./data/redis ./data/minio ./data/models

# 一键启动所有服务
docker-compose up -d

# 查看启动状态
docker-compose ps

# 查看日志(首次启动可能需要下载镜像)
docker-compose logs -f

Step 4: 初始化数据库

# 执行数据库迁移
docker-compose exec backend dotnet ef database update

# 或使用CLI工具
docker-compose exec backend monkeycode-cli db migrate

Step 5: 访问验证

# 健康检查
curl http://localhost:8080/api/health

# 应返回:
# {"status":"healthy","version":"x.y.z","timestamp":"..."}

打开浏览器访问 http://<服务器IP>:8080,你应该能看到MonkeyCode的登录页面。


🐳 方式二:Kubernetes部署(大规模场景)

对于需要高可用、弹性伸缩的企业环境,推荐使用Kubernetes部署。

Step 1: 准备Kubernetes集群

# 确认集群状态
kubectl get nodes

# 创建命名空间
kubectl create namespace monkeycode

Step 2: 配置密钥

# 创建Secret(敏感信息)
kubectl create secret generic monkeycode-secrets \
  --from-literal=postgres-password='your-db-password' \
  --from-literal=redis-password='your-redis-password' \
  --from-literal=secret-key='your-secret-key' \
  --from-literal=openai-api-key='sk-your-key' \
  -n monkeycode

Step 3: 部署存储

# PVC for PostgreSQL
kubectl apply -f k8s/storage/postgres-pvc.yaml -n monkeycode

# PVC for MinIO
kubectl apply -f k8s/storage/minio-pvc.yaml -n monkeycode

Step 4: 部署核心服务

# 部署顺序很重要!
kubectl apply -f k8s/postgres.yaml -n monkeycode      # 1. 数据库
kubectl apply -f k8s/redis.yaml -n monkeycode          # 2. 缓存
kubectl apply -f k8s/minio.yaml -n monkeycode          # 3. 对象存储
kubectl apply -f k8s/backend.yaml -n monkeycode        # 4. 后端服务
kubectl apply -f k8s/frontend.yaml -n monkeycode       # 5. 前端服务
kubectl apply -f k8s/ingress.yaml -n monkeycode        # 6. 入口网关

Step 5: 验证部署

# 检查所有Pod状态
kubectl get pods -n monkeycode -w

# 查看服务端点
kubectl get svc -n monkeycode

# 测试访问
curl http://monkeycode.yourcompany.com/api/health

Kubernetes架构图

                    ┌─────────────┐
                    │   Ingress   │
                    │  (Nginx)    │
                    └──────┬──────┘
                           │
              ┌────────────┼────────────┐
              ↓            ↓            ↓
        ┌──────────┐ ┌──────────┐ ┌──────────┐
        │ Frontend │ │ Frontend │ │ Frontend │
        │ Pod ×3   │ │ Pod ×3   │ │ Pod ×3   │
        └────┬─────┘ └────┬─────┘ └────┬─────┘
             └────────────┼────────────┘
                          ↓
                   ┌──────────────┐
                   │   Backend    │
                   │  Service     │
                   └──────┬───────┘
           ┌───────────────┼───────────────┐
               ↓           ↓           ↓
         ┌────────┐  ┌────────┐  ┌────────┐
         │Postgres│  │ Redis  │  │ MinIO  │
         │(主从)  │  │Cluster │  │(分布式)│
         └────────┘  └────────┘  └────────┘

🔧 方式三:源码编译部署(深度定制)

如果需要对MonkeyCode进行深度定制,可以从源码编译部署。

Step 1: 安装开发依赖

# Go 1.21+ (后端)
wget https://go.dev/dl/go1.21.6.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.21.6.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin

# Node.js 18+ (前端)
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs

# .NET 8.0 (部分组件)
wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh
chmod +x dotnet-install.sh
./dotnet-install.sh --channel 8.0

Step 2: 编译后端

cd monkeycode/server

# 还原依赖
go mod download

# 编译
go build -o bin/monkeycode-server ./cmd/server

# 或交叉编译
GOOS=linux GOARCH=amd64 go build -o bin/monkeycode-server-linux ./cmd/server

Step 3: 编译前端

cd monkeycode/web

npm install
npm run build

# 输出目录: dist/

Step 4: 配置与启动

# 复制配置文件
cp config/config.example.yaml config/config.yaml

# 编辑配置
vim config/config.yaml

config.yaml 核心配置:

server:
  host: "0.0.0.0"
  port: 8080
  mode: "production"  # development / production

database:
  driver: "postgres"
  dsn: "postgres://user:pass@localhost:5432/monkeycode?sslmode=disable"
  max_connections: 100

redis:
  addr: "localhost:6379"
  password: ""
  db: 0

ai:
  provider: "openai"  # openai / claude / local
  models:
    code_generation: "gpt-4o"
    code_explanation: "gpt-4o"
    test_generation: "gpt-4o"
  
security:
  jwt_secret: "your-jwt-secret"
  rate_limit: 1000  # requests per minute
  
logging:
  level: "info"  # debug / info / warn / error
  format: "json"

Step 5: 使用Systemd管理服务

sudo tee /etc/systemd/system/monkeycode.service << 'EOF'
[Unit]
Description=MonkeyCode AI Programming Assistant
After=network.target postgresql.service redis.service

[Service]
Type=simple
User=monkeycode
WorkingDirectory=/opt/monkeycode
ExecStart=/opt/monkeycode/bin/monkeycode-server --config /opt/monkeycode/config/config.yaml
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

# 启用开机自启
sudo systemctl daemon-reload
sudo systemctl enable monkeycode
sudo systemctl start monkeycode

# 查看状态
sudo systemctl status monkeycode

🛡️ 安全加固指南

1. 网络隔离

# 防火墙规则示例(仅允许内网访问)
sudo ufw allow from 10.0.0.0/8 to any port 8080
sudo ufw deny in on eth0 to any port 8080

2. HTTPS配置

# Nginx反向代理 + SSL
server {
    listen 443 ssl http2;
    server_name monkeycode.internal.yourcompany.com;

    ssl_certificate /etc/letsencrypt/live/monkeycode/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/monkeycode/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1: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;
        
        # WebSocket支持
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        
        # 上传大小限制
        client_max_body_size 100m;
    }
}

3. 认证配置

# 支持多种认证方式
auth:
  method: "ldap"  # local / ldap / oidc / saml
  
  # LDAP集成(企业AD域)
  ldap:
    url: "ldap://ad.yourcompany.com:389"
    base_dn: "DC=yourcompany,DC=com"
    bind_user: "cn=admin,dc=yourcompany,dc=com"
    bind_password: "xxx"
    user_filter: "(sAMAccountName={username})"
    
  # OIDC集成
  oidc:
    issuer: "https://sso.yourcompany.com"
    client_id: "monkeycode-client"
    client_secret: "xxx"
    redirect_uri: "https://monkeycode.internal/auth/callback"

4. 审计日志

audit:
  enabled: true
  log_file: "/var/log/monkeycode/audit.log"
  events:
    - user_login
    - user_logout
    - code_generate
    - code_upload
    - settings_change
  retention_days: 180

📊 监控与运维

Prometheus监控

# prometheus.yml
scrape_configs:
  - job_name: 'monkeycode'
    static_configs:
      - targets: ['localhost:8080']
    metrics_path: '/metrics'
    scrape_interval: 15s

关键监控指标

指标 含义 告警阈值
monkeycode_requests_total 总请求数 -
monkeycode_request_duration_seconds 请求延迟 P99 > 10s
monkeycode_ai_tokens_used AI Token消耗量 日用量超配额
monkeycode_active_users 在线用户数 > 并发上限
monkeycode_error_rate 错误率 > 1%

Grafana Dashboard

推荐配置以下Dashboard:

  • 系统资源监控:CPU/内存/GPU/磁盘
  • 业务指标监控:请求量/延迟/错误率
  • AI模型监控:Token消耗/模型调用次数/成本

🔧 故障排查

常见问题及解决方案

问题1:服务启动失败

# 检查端口占用
netstat -tlnp | grep 8080

# 检查日志
docker-compose logs backend
journalctl -u monkeycode -f

# 常见原因:
# 1. 端口被占用 → 修改 MONKEYCODE_PORT
# 2. 数据库连接失败 → 检查 POSTGRES_* 配置
# 3. 内存不足 → 增加服务器内存或限制并发

问题2:AI模型调用失败

# 检查网络连通性(如使用外部API)
curl https://api.openai.com/v1/models -H "Authorization: Bearer sk-xxx"

# 检查本地模型状态
docker exec -it monkeycode-model nvidia-smi

# 常见原因:
# 1. API Key无效 → 更新 OPENAI_API_KEY
# 2. 网络不通 → 配置代理 OPENAI_BASE_URL
# 3. GPU内存不足 → 减小 batch_size 或换更小模型

问题3:性能缓慢

# 性能分析步骤:
# 1. 检查服务器资源
top -bn1 | head -20
nvidia-smi

# 2. 检查数据库慢查询
docker-compose exec postgres psql -U monkeycode -d monkeycode_db -c "\s"

# 3. 检查Redis命中率
docker-compose exec redis redis-cli info stats | grep hits

# 优化建议:
# - 启用Redis缓存
# - 增加Worker数量
# - 使用GPU加速
# - 升级硬件配置

🔄 升级维护

版本升级流程

# 1. 备份数据
./scripts/backup.sh

# 2. 拉取新版本
git pull origin main
git checkout v2.x.x

# 3. 更新镜像/重新编译
docker-compose pull
docker-compose build

# 4. 数据库迁移
docker-compose exec backend dotnet ef database update

# 5. 重启服务
docker-compose up -d

# 6. 验证升级
curl http://localhost:8080/api/health

定期维护任务

任务 频率 命令
数据库备份 每日 pg_dump + cron
日志清理 每周 logrotate
系统更新 每月 apt upgrade
安全扫描 每季 trivy image
容量评估 每月 df -h + du -sh

📞 技术支持

如果在部署过程中遇到问题:

  1. 查看文档: https://docs.monkeycode.ai/deployment
  2. 搜索Issue: https://github.com/monkeycode-ai/monkeycode/issues
  3. 提交新Issue: https://github.com/monkeycode-ai/monkeycode/issues/new
  4. 社区讨论: https://github.com/monkeycode-ai/monkeycode/discussions
  5. 企业版支持: enterprise@monkeycode.ai

🎯 总结

MonkeyCode的私有化部署并不复杂,选择合适的部署方式即可快速搭建:

场景 推荐方式 时间
快速体验/小团队 Docker Compose 30分钟
生产环境/中大型团队 Kubernetes 2小时
深度定制/特殊需求 源码编译 半天

现在就开始部署吧!遇到任何问题都可以在GitHub提交Issue,我们会尽快帮你解决。

👉 GitHub Issue地址:https://github.com/monkeycode-ai/monkeycode/issues 👈


本文由MonkeyCode团队编写 · 开源 · 自由 · 共赢

posted on 2026-06-24 12:32  MonkeyCode  阅读(54)  评论(0)    收藏  举报