docs: add enterprise deployment documentation
Add comprehensive enterprise deployment setup including: - Docker Compose configuration - Environment setup examples - Quickstart guide - Enterprise configuration reference - Security checklist - Automated setup script Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
5f4715acfc
commit
166106089c
36
docs/deployment/.env.example
Normal file
36
docs/deployment/.env.example
Normal file
@ -0,0 +1,36 @@
|
||||
# Moltbot 企业部署环境变量配置
|
||||
# 复制此文件为 .env 并填写实际值
|
||||
|
||||
# ===== 必填配置 =====
|
||||
|
||||
# Anthropic API 密钥 (从 https://console.anthropic.com 获取)
|
||||
ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxx
|
||||
|
||||
# Gateway 认证 Token (建议使用 32 字符以上的强密码)
|
||||
# 生成方法: openssl rand -base64 32
|
||||
CLAWDBOT_GATEWAY_TOKEN=your-secure-gateway-token-here
|
||||
|
||||
# ===== 可选配置 =====
|
||||
|
||||
# 自定义 API 端点 (如果使用代理)
|
||||
# ANTHROPIC_BASE_URL=https://your-proxy.com/api/anthropic
|
||||
|
||||
# Gateway 端口 (默认 18789)
|
||||
# MOLTBOT_PORT=18789
|
||||
|
||||
# 日志级别 (debug|info|warn|error)
|
||||
# LOG_LEVEL=info
|
||||
|
||||
# 最大并发数 (默认 8)
|
||||
# MAX_CONCURRENT=8
|
||||
|
||||
# 会话隔离模式 (main|per-peer|per-channel-peer|per-account-channel-peer)
|
||||
# DM_SCOPE=per-channel-peer
|
||||
|
||||
# ===== 高可用配置 (可选) =====
|
||||
|
||||
# Redis 连接字符串 (用于多实例部署)
|
||||
# REDIS_URL=redis://redis:6379
|
||||
|
||||
# 实例 ID (用于多实例识别)
|
||||
# INSTANCE_ID=gateway-1
|
||||
511
docs/deployment/ENTERPRISE.md
Normal file
511
docs/deployment/ENTERPRISE.md
Normal file
@ -0,0 +1,511 @@
|
||||
# Moltbot 企业级部署指南
|
||||
|
||||
## 目录
|
||||
- [架构概览](#架构概览)
|
||||
- [部署方案](#部署方案)
|
||||
- [安全最佳实践](#安全最佳实践)
|
||||
- [运维管理](#运维管理)
|
||||
- [监控和告警](#监控和告警)
|
||||
- [故障排查](#故障排查)
|
||||
|
||||
---
|
||||
|
||||
## 架构概览
|
||||
|
||||
### 推荐架构
|
||||
|
||||
```
|
||||
┌─────────────────┐
|
||||
│ 员工浏览器 │
|
||||
└────────┬────────┘
|
||||
│ HTTPS
|
||||
┌────────▼────────┐
|
||||
│ Nginx/Caddy │ ← SSL 终止、访问日志
|
||||
│ 反向代理 │
|
||||
└────────┬────────┘
|
||||
│ HTTP
|
||||
┌────────▼────────┐
|
||||
│ Moltbot Gateway │ ← 端口 18789
|
||||
│ - Token 认证 │
|
||||
│ - 会话隔离 │
|
||||
└────────┬────────┘
|
||||
│
|
||||
┌────────▼────────┐
|
||||
│ LLM API │
|
||||
│ (BigModel) │
|
||||
└─────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 部署方案
|
||||
|
||||
### 方案 A: 单服务器部署 (适合 <50 用户)
|
||||
|
||||
**硬件要求:**
|
||||
- CPU: 4 核心以上
|
||||
- 内存: 8GB 以上
|
||||
- 磁盘: 50GB SSD
|
||||
|
||||
**优点:**
|
||||
- 部署简单
|
||||
- 维护成本低
|
||||
- 适合小型团队
|
||||
|
||||
**缺点:**
|
||||
- 单点故障
|
||||
- 扩展性有限
|
||||
|
||||
### 方案 B: 高可用部署 (适合 50+ 用户)
|
||||
|
||||
**架构:**
|
||||
- 负载均衡器 (Nginx/HAProxy)
|
||||
- 2+ 个 Moltbot Gateway 实例
|
||||
- 共享存储 (NFS/云存储)
|
||||
- Redis (可选,用于会话共享)
|
||||
|
||||
**优点:**
|
||||
- 高可用性
|
||||
- 水平扩展
|
||||
- 负载分散
|
||||
|
||||
---
|
||||
|
||||
## 安全最佳实践
|
||||
|
||||
### 1. 认证和授权
|
||||
|
||||
#### Gateway Token 认证
|
||||
```json5
|
||||
{
|
||||
"gateway": {
|
||||
"auth": {
|
||||
"mode": "token",
|
||||
"token": "${CLAWDBOT_GATEWAY_TOKEN}" // 从环境变量读取
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**安全建议:**
|
||||
- Token 长度至少 32 字符
|
||||
- 定期轮换 Token (每月/季度)
|
||||
- 不要在代码中硬编码
|
||||
- 使用环境变量或密钥管理系统
|
||||
|
||||
### 2. 网络安全
|
||||
|
||||
#### 反向代理配置
|
||||
```nginx
|
||||
# /etc/nginx/sites-available/moltbot
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
server_name moltbot.company.com;
|
||||
|
||||
# SSL 配置
|
||||
ssl_certificate /etc/letsencrypt/live/moltbot.company.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/moltbot.company.com/privkey.pem;
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
|
||||
# 代理到 Moltbot
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:18789;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_to;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 防火墙规则
|
||||
```bash
|
||||
# 只允许特定网络访问
|
||||
ufw allow from 10.0.0.0/8 to any port 18789
|
||||
ufw allow from 172.16.0.0/12 to any port 18789
|
||||
```
|
||||
|
||||
### 3. API 密钥管理
|
||||
|
||||
#### 使用环境变量
|
||||
```bash
|
||||
# /etc/moltbot/environment
|
||||
export ANTHROPIC_API_KEY="sk-ant-..."
|
||||
export CLAWDBOT_GATEWAY_TOKEN="your-secure-token-here"
|
||||
```
|
||||
|
||||
#### 文件权限
|
||||
```bash
|
||||
chmod 600 /etc/moltbot/environment
|
||||
chmod 640 /etc/moltbot/moltbot.json
|
||||
chown root:moltbot /etc/moltbot/*
|
||||
```
|
||||
|
||||
### 4. 会话隔离
|
||||
|
||||
#### 多用户会话隔离配置
|
||||
```json5
|
||||
{
|
||||
"session": {
|
||||
"dmScope": "per-channel-peer", // 每个用户独立会话
|
||||
"reset": {
|
||||
"mode": "idle",
|
||||
"idleMinutes": 120
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**说明:**
|
||||
- `per-channel-peer`: 按频道+用户隔离
|
||||
- `per-peer`: 按用户隔离(跨频道共享)
|
||||
- `main`: 所有用户共享(不推荐多用户场景)
|
||||
|
||||
### 5. 文件系统安全
|
||||
|
||||
```bash
|
||||
# 设置严格的文件权限
|
||||
chmod 700 /var/lib/moltbot
|
||||
chmod 700 /var/lib/moltbot/sessions
|
||||
chmod 600 /var/lib/moltbot/sessions/*.jsonl
|
||||
|
||||
# 确保 Moltbot 运行在专用用户下
|
||||
useradd -r moltbot
|
||||
```
|
||||
|
||||
### 6. 日志和审计
|
||||
|
||||
#### 敏感信息脱敏
|
||||
```json5
|
||||
{
|
||||
"logging": {
|
||||
"redactSensitive": "tools", // 过滤工具调用中的敏感信息
|
||||
"file": {
|
||||
"enabled": true,
|
||||
"path": "/var/log/moltbot/gateway.log"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 审计日志
|
||||
```bash
|
||||
# 定期运行安全审计
|
||||
moltbot security audit --deep
|
||||
|
||||
# 查看异常访问
|
||||
grep -i "unauthorized\|forbidden" /var/log/moltbot/gateway.log
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 运维管理
|
||||
|
||||
### 1. 服务管理
|
||||
|
||||
#### 启动和停止
|
||||
```bash
|
||||
# 启动服务
|
||||
systemctl start moltbot-gateway.service
|
||||
|
||||
# 停止服务
|
||||
systemctl stop moltbot-gateway.service
|
||||
|
||||
# 重启服务
|
||||
systemctl restart moltbot-gateway.service
|
||||
|
||||
# 查看状态
|
||||
systemctl status moltbot-gateway.service
|
||||
```
|
||||
|
||||
#### 查看日志
|
||||
```bash
|
||||
# 实时日志
|
||||
journalctl -u moltbot-gateway.service -f
|
||||
|
||||
# 最近 100 行
|
||||
journalctl -u moltbot-gateway.service -n 100
|
||||
|
||||
# 按时间过滤
|
||||
journalctl -u moltbot-gateway.service --since "1 hour ago"
|
||||
```
|
||||
|
||||
### 2. 配置更新
|
||||
|
||||
#### 热更新配置
|
||||
```bash
|
||||
# 通过 RPC 更新配置
|
||||
moltbot gateway call config.get --params '{}'
|
||||
moltbot gateway call config.patch --params '{
|
||||
"raw": "{ agents: { defaults: { maxConcurrent: 16 } } }",
|
||||
"baseHash": "<hash-from-config.get>"
|
||||
}'
|
||||
```
|
||||
|
||||
#### 手动更新
|
||||
```bash
|
||||
# 编辑配置文件
|
||||
vim /etc/moltbot/moltbot.json
|
||||
|
||||
# 重启服务
|
||||
systemctl restart moltbot-gateway.service
|
||||
```
|
||||
|
||||
### 3. 证书管理
|
||||
|
||||
#### Let's Encrypt 自动续期
|
||||
```bash
|
||||
# 安装 certbot
|
||||
apt install certbot python3-certbot-nginx
|
||||
|
||||
# 获取证书
|
||||
certbot --nginx -d moltbot.company.com
|
||||
|
||||
# 自动续期已通过 cron 配置
|
||||
certbot renew --dry-run
|
||||
```
|
||||
|
||||
### 4. 备份策略
|
||||
|
||||
#### 需要备份的内容
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# backup-moltbot.sh
|
||||
|
||||
BACKUP_DIR="/backup/moltbot/$(date +%Y%m%d)"
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
|
||||
# 备份配置
|
||||
cp /etc/moltbot/moltbot.json "$BACKUP_DIR/"
|
||||
cp /etc/moltbot/environment "$BACKUP_DIR/"
|
||||
|
||||
# 备份会话
|
||||
tar -czf "$BACKUP_DIR/sessions.tar.gz" /var/lib/moltbot/sessions/
|
||||
|
||||
# 备份凭证
|
||||
tar -czf "$BACKUP_DIR/credentials.tar.gz" /var/lib/moltbot/credentials/
|
||||
|
||||
# 清理 30 天前的备份
|
||||
find /backup/moltbot -type d -mtime +30 -exec rm -rf {} \;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 监控和告警
|
||||
|
||||
### 1. 健康检查
|
||||
|
||||
#### 内置健康检查
|
||||
```bash
|
||||
# 检查服务健康
|
||||
curl http://127.0.0.1:18789/health
|
||||
|
||||
# 检查模型状态
|
||||
moltbot models status
|
||||
```
|
||||
|
||||
### 2. 监控指标
|
||||
|
||||
#### 关键指标
|
||||
- 服务运行时间
|
||||
- 内存使用率
|
||||
- CPU 使用率
|
||||
- 活跃会话数
|
||||
- API 调用延迟
|
||||
- 错误率
|
||||
|
||||
#### Prometheus 监控示例
|
||||
```yaml
|
||||
# prometheus.yml
|
||||
scrape_configs:
|
||||
- job_name: 'moltbot'
|
||||
static_configs:
|
||||
- targets: ['localhost:18789']
|
||||
metrics_path: '/metrics'
|
||||
```
|
||||
|
||||
### 3. 告警配置
|
||||
|
||||
#### 常见告警规则
|
||||
```yaml
|
||||
# alerting.yml
|
||||
groups:
|
||||
- name: moltbot
|
||||
rules:
|
||||
- alert: MoltbotServiceDown
|
||||
expr: up{job="moltbot"} == 0
|
||||
for: 1m
|
||||
labels:
|
||||
severity: critical
|
||||
annotations:
|
||||
summary: "Moltbot service is down"
|
||||
|
||||
- alert: MoltbotHighMemory
|
||||
expr: process_resident_memory_bytes{job="moltbot"} > 2GB
|
||||
for: 5m
|
||||
labels:
|
||||
severity: warning
|
||||
annotations:
|
||||
summary: "Moltbot memory usage is high"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 故障排查
|
||||
|
||||
### 常见问题
|
||||
|
||||
#### 1. 服务无法启动
|
||||
|
||||
**检查步骤:**
|
||||
```bash
|
||||
# 查看服务状态
|
||||
systemctl status moltbot-gateway.service
|
||||
|
||||
# 查看详细日志
|
||||
journalctl -u moltbot-gateway.service -n 100 --no-pager
|
||||
|
||||
# 检查配置文件
|
||||
moltbot doctor --fix
|
||||
```
|
||||
|
||||
**常见原因:**
|
||||
- 配置文件语法错误
|
||||
- 端口被占用
|
||||
- 环境变量未设置
|
||||
- 权限问题
|
||||
|
||||
#### 2. 认证失败
|
||||
|
||||
**检查:**
|
||||
```bash
|
||||
# 验证 Token
|
||||
grep "CLAWDBOT_GATEWAY_TOKEN" /etc/moltbot/environment
|
||||
|
||||
# 检查日志
|
||||
grep "unauthorized\|auth" /var/log/moltbot/gateway.log
|
||||
```
|
||||
|
||||
#### 3. API 调用失败
|
||||
|
||||
**检查:**
|
||||
```bash
|
||||
# 验证 API 密钥
|
||||
grep "ANTHROPIC_API_KEY" /etc/moltbot/environment
|
||||
|
||||
# 测试 API 连接
|
||||
curl -X POST https://open.bigmodel.cn/api/anthropic/v1/messages \
|
||||
-H "x-api-key: $ANTHROPIC_API_KEY" \
|
||||
-H "anthropic-version: 2023-06-01" \
|
||||
-d '{"model":"claude-opus-4-5","max_tokens":100,"messages":[{"role":"user","content":"hello"}]}'
|
||||
```
|
||||
|
||||
#### 4. 性能问题
|
||||
|
||||
**排查:**
|
||||
```bash
|
||||
# 检查资源使用
|
||||
top -p $(pgrep moltbot-gateway)
|
||||
|
||||
# 查看活跃会话
|
||||
moltbot sessions list
|
||||
|
||||
# 检查并发配置
|
||||
grep "maxConcurrent" /etc/moltbot/moltbot.json
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 性能优化
|
||||
|
||||
### 1. 并发调优
|
||||
|
||||
```json5
|
||||
{
|
||||
"agents": {
|
||||
"defaults": {
|
||||
"maxConcurrent": 16, // 根据 CPU 核心数调整
|
||||
"subagents": {
|
||||
"maxConcurrent": 32
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 2. 缓存优化
|
||||
|
||||
```json5
|
||||
{
|
||||
"agents": {
|
||||
"defaults": {
|
||||
"models": {
|
||||
"anthropic/claude-opus-4-5": {
|
||||
"params": {
|
||||
"cacheControlTtl": "1h" // 启用缓存
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 3. 资源限制
|
||||
|
||||
```ini
|
||||
# /etc/systemd/system/moltbot-gateway.service
|
||||
[Service]
|
||||
MemoryMax=4G
|
||||
CPUQuota=300%
|
||||
LimitNOFILE=65536
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 成本控制
|
||||
|
||||
### 1. 使用量监控
|
||||
|
||||
```bash
|
||||
# 查看模型使用统计
|
||||
moltbot models usage
|
||||
|
||||
# 按用户统计
|
||||
awk '/user:/ {print}' /var/log/moltbot/gateway.log | sort | uniq -c
|
||||
```
|
||||
|
||||
### 2. 预算告警
|
||||
|
||||
配置预算限制并设置告警:
|
||||
```json5
|
||||
{
|
||||
"models": {
|
||||
"providers": {
|
||||
"anthropic": {
|
||||
"budget": {
|
||||
"daily": 100, // 每日限额 (美元)
|
||||
"alert": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 附录
|
||||
|
||||
### A. 配置文件模板
|
||||
|
||||
参见 [enterprise-config.json5](enterprise-config.json5)
|
||||
|
||||
### B. 部署脚本
|
||||
|
||||
参见 [setup-enterprise.sh](setup-enterprise.sh)
|
||||
|
||||
### C. 相关文档
|
||||
|
||||
- [Moltbot 官方文档](https://docs.molt.bot)
|
||||
- [安全最佳实践](https://docs.molt.bot/gateway/security)
|
||||
- [配置参考](https://docs.molt.bot/gateway/configuration)
|
||||
223
docs/deployment/QUICKSTART.md
Normal file
223
docs/deployment/QUICKSTART.md
Normal file
@ -0,0 +1,223 @@
|
||||
# Moltbot 企业部署快速参考
|
||||
|
||||
## 🚀 5 分钟快速部署
|
||||
|
||||
```bash
|
||||
# 1. 运行安装脚本
|
||||
cd /root/moltbot/docs/deployment
|
||||
chmod +x setup-enterprise.sh
|
||||
sudo ./setup-enterprise.sh
|
||||
|
||||
# 2. 配置环境变量
|
||||
sudo vim /etc/moltbot/environment
|
||||
# 设置 ANTHROPIC_API_KEY 和 CLAWDBOT_GATEWAY_TOKEN
|
||||
|
||||
# 3. 复制配置文件
|
||||
sudo cp enterprise-config.json5 /etc/moltbot/moltbot.json
|
||||
|
||||
# 4. 启动服务
|
||||
sudo systemctl enable --now moltbot-gateway.service
|
||||
|
||||
# 5. 验证
|
||||
sudo systemctl status moltbot-gateway.service
|
||||
curl http://127.0.0.1:18789/health
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔑 关键配置
|
||||
|
||||
### 环境变量 (必须)
|
||||
```bash
|
||||
# /etc/moltbot/environment
|
||||
export ANTHROPIC_API_KEY="sk-ant-..."
|
||||
export CLAWDBOT_GATEWAY_TOKEN="secure-token-32chars-min"
|
||||
```
|
||||
|
||||
### 多用户会话隔离 (必须)
|
||||
```json5
|
||||
{
|
||||
"session": {
|
||||
"dmScope": "per-channel-peer" // 每个用户独立会话
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Gateway 认证 (必须)
|
||||
```json5
|
||||
{
|
||||
"gateway": {
|
||||
"bind": "lan", // 或 "127.0.0.1" 用于本地
|
||||
"auth": {
|
||||
"mode": "token",
|
||||
"token": "${CLAWDBOT_GATEWAY_TOKEN}"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 规模指南
|
||||
|
||||
| 用户数 | 配置 |
|
||||
|--------|------|
|
||||
| < 20 | 单服务器, 4核/8GB RAM |
|
||||
| 20-50 | 单服务器, 8核/16GB RAM |
|
||||
| 50-200 | 负载均衡 + 2个实例 |
|
||||
| 200+ | 集群 + Redis 共享会话 |
|
||||
|
||||
---
|
||||
|
||||
## 🛡️ 安全检查 (部署前)
|
||||
|
||||
```bash
|
||||
# 运行安全审计
|
||||
moltbot security audit --deep
|
||||
|
||||
# 检查文件权限
|
||||
ls -la /etc/moltbot/
|
||||
# 应该是: -rw-r----- (640)
|
||||
|
||||
# 检查服务用户
|
||||
ps aux | grep moltbot
|
||||
# 应该运行在 moltbot 用户下,非 root
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📋 日常运维命令
|
||||
|
||||
```bash
|
||||
# 查看服务状态
|
||||
systemctl status moltbot-gateway.service
|
||||
|
||||
# 查看实时日志
|
||||
journalctl -u moltbot-gateway.service -f
|
||||
|
||||
# 重启服务
|
||||
systemctl restart moltbot-gateway.service
|
||||
|
||||
# 查看模型状态
|
||||
moltbot models status
|
||||
|
||||
# 查看活跃会话
|
||||
moltbot sessions list
|
||||
|
||||
# 安全审计
|
||||
moltbot security audit
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 故障排查
|
||||
|
||||
### 服务无法启动
|
||||
```bash
|
||||
# 检查配置
|
||||
moltbot doctor --fix
|
||||
|
||||
# 查看错误日志
|
||||
journalctl -u moltbot-gateway.service -n 100 --no-pager
|
||||
```
|
||||
|
||||
### 认证失败
|
||||
```bash
|
||||
# 检查 token
|
||||
grep CLAWDBOT_GATEWAY_TOKEN /etc/moltbot/environment
|
||||
|
||||
# 检查日志
|
||||
grep "unauthorized\|auth" /var/log/moltbot/gateway.log
|
||||
```
|
||||
|
||||
### 性能问题
|
||||
```bash
|
||||
# 检查资源使用
|
||||
top -p $(pgrep moltbot-gateway)
|
||||
|
||||
# 查看并发数
|
||||
grep "maxConcurrent" /etc/moltbot/moltbot.json
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📱 客户端连接
|
||||
|
||||
### Web UI
|
||||
```
|
||||
https://moltbot.company.com/?token=YOUR_GATEWAY_TOKEN
|
||||
```
|
||||
|
||||
### WebSocket
|
||||
```javascript
|
||||
const ws = new WebSocket('wss://moltbot.company.com');
|
||||
ws.send(JSON.stringify({
|
||||
type: 'auth',
|
||||
token: 'YOUR_GATEWAY_TOKEN'
|
||||
}));
|
||||
```
|
||||
|
||||
### HTTP API
|
||||
```bash
|
||||
curl -H "Authorization: Bearer YOUR_GATEWAY_TOKEN" \
|
||||
https://moltbot.company.com/v1/chat/completions
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔄 配置热更新
|
||||
|
||||
```bash
|
||||
# 获取当前配置哈希
|
||||
moltbot gateway call config.get --param '{}'
|
||||
|
||||
# 更新配置
|
||||
moltbot gateway call config.patch --param '{
|
||||
"raw": "{ agents: { defaults: { maxConcurrent: 16 } } }",
|
||||
"baseHash": "<hash-from-get>"
|
||||
}'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 💰 成本控制
|
||||
|
||||
```bash
|
||||
# 查看使用统计
|
||||
moltbot models usage
|
||||
|
||||
# 设置每日限额
|
||||
# 在配置文件中:
|
||||
{
|
||||
"models": {
|
||||
"providers": {
|
||||
"anthropic": {
|
||||
"budget": {
|
||||
"daily": 100 // 美元
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📞 获取帮助
|
||||
|
||||
- 📖 [完整文档](ENTERPRISE.md)
|
||||
- 🔒 [安全清单](security-checklist.md)
|
||||
- 🐛 [问题反馈](https://github.com/m1heng/moltbot/issues)
|
||||
- 💬 [社区讨论](https://github.com/m1heng/moltbot/discussions)
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 重要提醒
|
||||
|
||||
1. **永远不要**将 API 密钥提交到版本控制
|
||||
2. **定期轮换** Gateway token (建议每月)
|
||||
3. **启用 HTTPS** 生产环境
|
||||
4. **配置会话隔离** 多用户场景
|
||||
5. **定期备份** 配置和会话数据
|
||||
6. **监控资源** 内存和 CPU 使用
|
||||
7. **更新软件** 保持最新版本
|
||||
183
docs/deployment/README.md
Normal file
183
docs/deployment/README.md
Normal file
@ -0,0 +1,183 @@
|
||||
# Moltbot 企业部署文件
|
||||
|
||||
本目录包含 Moltbot 企业级部署所需的所有文件和文档。
|
||||
|
||||
## 📁 文件说明
|
||||
|
||||
### 配置文件
|
||||
- **[enterprise-config.json5](enterprise-config.json5)** - 生产级配置模板
|
||||
- **[.env.example](.env.example)** - Docker 环境变量模板
|
||||
- **[docker-compose.yml](docker-compose.yml)** - Docker Compose 配置
|
||||
|
||||
### 脚本
|
||||
- **[setup-enterprise.sh](setup-enterprise.sh)** - 自动化部署脚本 (Linux/Ubuntu)
|
||||
|
||||
### 文档
|
||||
- **[ENTERPRISE.md](ENTERPRISE.md)** - 完整企业部署指南
|
||||
- **[QUICKSTART.md](QUICKSTART.md)** - 5分钟快速部署指南
|
||||
- **[security-checklist.md](security-checklist.md)** - 安全检查清单
|
||||
|
||||
## 🚀 快速开始
|
||||
|
||||
### 方案 1: 自动化脚本部署 (推荐用于 Ubuntu/Debian)
|
||||
|
||||
```bash
|
||||
# 1. 运行安装脚本
|
||||
chmod +x setup-enterprise.sh
|
||||
sudo ./setup-enterprise.sh
|
||||
|
||||
# 2. 配置环境变量
|
||||
sudo vim /etc/moltbot/environment
|
||||
|
||||
# 3. 启动服务
|
||||
sudo systemctl enable --now moltbot-gateway.service
|
||||
```
|
||||
|
||||
### 方案 2: Docker 部署
|
||||
|
||||
```bash
|
||||
# 1. 复制环境变量文件
|
||||
cp .env.example .env
|
||||
|
||||
# 2. 编辑 .env 文件,填写 API 密钥和 Token
|
||||
vim .env
|
||||
|
||||
# 3. 启动服务
|
||||
docker-compose up -d
|
||||
|
||||
# 4. 查看日志
|
||||
docker-compose logs -f
|
||||
```
|
||||
|
||||
### 方案 3: 手动部署
|
||||
|
||||
参见 [ENTERPRISE.md](ENTERPRISE.md) 中的详细步骤。
|
||||
|
||||
## 📋 部署前检查清单
|
||||
|
||||
在部署到生产环境前,请确认以下项目:
|
||||
|
||||
- [ ] 已设置强密码的 Gateway Token
|
||||
- [ ] API 密钥已通过环境变量配置
|
||||
- [ ] 配置了会话隔离 (`per-channel-peer`)
|
||||
- [ ] 启用了 Gateway 认证
|
||||
- [ ] 配置了 HTTPS/SSL
|
||||
- [ ] 设置了防火墙规则
|
||||
- [ ] 配置了日志轮转
|
||||
- [ ] 设置了定期备份
|
||||
- [ ] 运行了安全审计 (`moltbot security audit`)
|
||||
|
||||
完整检查清单请参考 [security-checklist.md](security-checklist.md)。
|
||||
|
||||
## 🔧 配置说明
|
||||
|
||||
### 必需配置
|
||||
|
||||
1. **环境变量** (必须)
|
||||
```bash
|
||||
export ANTHROPIC_API_KEY="sk-ant-..."
|
||||
export CLAWDBOT_GATEWAY_TOKEN="secure-token-32chars"
|
||||
```
|
||||
|
||||
2. **会话隔离** (多用户场景必须)
|
||||
```json5
|
||||
{
|
||||
"session": {
|
||||
"dmScope": "per-channel-peer"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
3. **Gateway 认证** (必须)
|
||||
```json5
|
||||
{
|
||||
"gateway": {
|
||||
"auth": {
|
||||
"mode": "token",
|
||||
"token": "${CLAWDBOT_GATEWAY_TOKEN}"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 推荐配置
|
||||
|
||||
- HTTPS 反向代理 (Nginx/Caddy)
|
||||
- 日志轮转 (logrotate)
|
||||
- 系统服务管理 (systemd)
|
||||
- 资源限制 (Memory/CPU)
|
||||
- 健康检查监控
|
||||
|
||||
## 📊 规模建议
|
||||
|
||||
| 用户规模 | 服务器配置 | 部署方案 |
|
||||
|---------|----------|---------|
|
||||
| < 20 | 4核/8GB | 单服务器 |
|
||||
| 20-50 | 8核/16GB | 单服务器 |
|
||||
| 50-200 | 16核/32GB | 负载均衡 + 2实例 |
|
||||
| 200+ | 集群 | 负载均衡 + 多实例 + Redis |
|
||||
|
||||
## 🛡️ 安全建议
|
||||
|
||||
1. **永远不要**将 API 密钥提交到版本控制
|
||||
2. **使用环境变量**存储敏感信息
|
||||
3. **定期轮换**密钥和 Token (建议每月)
|
||||
4. **启用 HTTPS** 生产环境
|
||||
5. **配置会话隔离** 多用户场景
|
||||
6. **定期备份** 配置和数据
|
||||
7. **运行安全审计** 定期检查
|
||||
|
||||
## 📞 获取帮助
|
||||
|
||||
- 📖 [完整部署指南](ENTERPRISE.md)
|
||||
- ⚡ [快速开始](QUICKSTART.md)
|
||||
- 🔒 [安全检查清单](security-checklist.md)
|
||||
- 🐛 [问题反馈](https://github.com/m1heng/moltbot/issues)
|
||||
|
||||
## 📝 维护说明
|
||||
|
||||
### 日常维护
|
||||
|
||||
```bash
|
||||
# 查看服务状态
|
||||
systemctl status moltbot-gateway.service
|
||||
|
||||
# 查看日志
|
||||
journalctl -u moltbot-gateway.service -f
|
||||
|
||||
# 安全审计
|
||||
moltbot security audit
|
||||
|
||||
# 查看模型状态
|
||||
moltbot models status
|
||||
```
|
||||
|
||||
### 更新配置
|
||||
|
||||
```bash
|
||||
# 编辑配置
|
||||
sudo vim /etc/moltbot/moltbot.json
|
||||
|
||||
# 重启服务
|
||||
sudo systemctl restart moltbot-gateway.service
|
||||
```
|
||||
|
||||
### 备份
|
||||
|
||||
```bash
|
||||
# 备份配置和数据
|
||||
tar -czf moltbot-backup-$(date +%Y%m%d).tar.gz \
|
||||
/etc/moltbot \
|
||||
/var/lib/moltbot
|
||||
```
|
||||
|
||||
## ⚠️ 重要提示
|
||||
|
||||
1. 本目录中的配置文件仅供参考,实际部署时请根据您的环境调整
|
||||
2. 请务必修改所有默认值和示例值(密码、Token、域名等)
|
||||
3. 生产环境部署前请先在测试环境验证
|
||||
4. 定期检查并更新到最新版本以获取安全补丁
|
||||
|
||||
## 📄 许可证
|
||||
|
||||
本部署脚本和配置遵循 Moltbot 项目的开源许可证。
|
||||
92
docs/deployment/docker-compose.yml
Normal file
92
docs/deployment/docker-compose.yml
Normal file
@ -0,0 +1,92 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
moltbot:
|
||||
image: moltbot:latest
|
||||
container_name: moltbot-gateway
|
||||
restart: unless-stopped
|
||||
|
||||
# 环境变量
|
||||
environment:
|
||||
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
|
||||
- CLAWDBOT_GATEWAY_TOKEN=${CLAWDBOT_GATEWAY_TOKEN}
|
||||
- CLAWDBOT_STATE_DIR=/app/data
|
||||
- NODE_ENV=production
|
||||
|
||||
# 端口映射
|
||||
ports:
|
||||
- "18789:18789"
|
||||
|
||||
# 卷挂载
|
||||
volumes:
|
||||
- ./config:/app/config:ro
|
||||
- moltbot-data:/app/data
|
||||
- moltbot-logs:/app/logs
|
||||
|
||||
# 健康检查
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:18789/health"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 40s
|
||||
|
||||
# 资源限制
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '2.0'
|
||||
memory: 4G
|
||||
reservations:
|
||||
cpus: '0.5'
|
||||
memory: 1G
|
||||
|
||||
# 日志配置
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "100m"
|
||||
max-file: "5"
|
||||
|
||||
# 网络模式
|
||||
network_mode: "bridge"
|
||||
|
||||
# Nginx 反向代理 (可选)
|
||||
nginx:
|
||||
image: nginx:alpine
|
||||
container_name: moltbot-nginx
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
volumes:
|
||||
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
|
||||
- ./nginx/ssl:/etc/nginx/ssl:ro
|
||||
- ./nginx/logs:/var/log/nginx
|
||||
depends_on:
|
||||
- moltbot
|
||||
networks:
|
||||
- moltbot-network
|
||||
|
||||
# Redis (可选,用于高可用部署)
|
||||
redis:
|
||||
image: redis:alpine
|
||||
container_name: moltbot-redis
|
||||
restart: unless-stopped
|
||||
command: redis-server --appendonly yes
|
||||
volumes:
|
||||
- redis-data:/data
|
||||
networks:
|
||||
- moltbot-network
|
||||
|
||||
networks:
|
||||
moltbot-network:
|
||||
driver: bridge
|
||||
|
||||
volumes:
|
||||
moltbot-data:
|
||||
driver: local
|
||||
moltbot-logs:
|
||||
driver: local
|
||||
redis-data:
|
||||
driver: local
|
||||
110
docs/deployment/enterprise-config.json5
Normal file
110
docs/deployment/enterprise-config.json5
Normal file
@ -0,0 +1,110 @@
|
||||
{
|
||||
// ===== 网关配置 =====
|
||||
"gateway": {
|
||||
"mode": "local",
|
||||
"bind": "lan", // 绑定到所有网络接口
|
||||
"port": 18789,
|
||||
"auth": {
|
||||
"mode": "token", // 推荐: token 认证
|
||||
"token": "${CLAWDBOT_GATEWAY_TOKEN}" // 从环境变量读取
|
||||
},
|
||||
"trustedProxies": ["10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"] // 公司内网
|
||||
},
|
||||
|
||||
// ===== 模型配置 =====
|
||||
"models": {
|
||||
"mode": "merge", // 合并内置模型
|
||||
"providers": {
|
||||
"anthropic": {
|
||||
"baseUrl": "https://open.bigmodel.cn/api/anthropic",
|
||||
"apiKey": "${ANTHROPIC_API_KEY}", // 必须使用环境变量
|
||||
"api": "anthropic-messages",
|
||||
"models": [
|
||||
{
|
||||
"id": "claude-opus-4-5",
|
||||
"name": "Claude Opus 4.5",
|
||||
"reasoning": false,
|
||||
"input": ["text", "image"],
|
||||
"cost": {
|
||||
"input": 15,
|
||||
"output": 75,
|
||||
"cacheRead": 1.5,
|
||||
"cacheWrite": 3.75
|
||||
},
|
||||
"contextWindow": 200000,
|
||||
"maxTokens": 8192
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// ===== Agent 配置 =====
|
||||
"agents": {
|
||||
"defaults": {
|
||||
"workspace": "/var/lib/moltbot/workspace",
|
||||
"model": {
|
||||
"primary": "anthropic/claude-opus-4-5"
|
||||
},
|
||||
"maxConcurrent": 8, // 根据服务器资源调整
|
||||
"subagents": {
|
||||
"maxConcurrent": 16
|
||||
},
|
||||
"contextPruning": {
|
||||
"mode": "cache-ttl",
|
||||
"ttl": "1h"
|
||||
},
|
||||
"heartbeat": {
|
||||
"every": "30m"
|
||||
},
|
||||
"models": {
|
||||
"anthropic/claude-opus-4-5": {
|
||||
"params": {
|
||||
"cacheControlTtl": "1h"
|
||||
},
|
||||
"alias": "opus"
|
||||
}
|
||||
},
|
||||
"compaction": {
|
||||
"mode": "safeguard"
|
||||
},
|
||||
// 生产环境:禁用自动引导文件,使用 Git 管理的工作区
|
||||
"skipBootstrap": true
|
||||
}
|
||||
},
|
||||
|
||||
// ===== 会话隔离 (多用户关键配置) =====
|
||||
"session": {
|
||||
"dmScope": "per-channel-peer", // 每个用户独立会话
|
||||
"reset": {
|
||||
"mode": "idle", // 空闲时重置,而非固定时间
|
||||
"idleMinutes": 120
|
||||
}
|
||||
},
|
||||
|
||||
// ===== 日志配置 =====
|
||||
"logging": {
|
||||
"level": "info",
|
||||
"redactSensitive": "tools", // 过滤敏感信息
|
||||
"file": {
|
||||
"enabled": true,
|
||||
"path": "/var/log/moltbot/gateway.log",
|
||||
"maxSize": "100M",
|
||||
"maxFiles": 10
|
||||
}
|
||||
},
|
||||
|
||||
// ===== 安全配置 =====
|
||||
"commands": {
|
||||
"native": "auto",
|
||||
"nativeSkills": "auto",
|
||||
"useAccessGroups": ["operators"] // 只有操作员可以执行命令
|
||||
},
|
||||
|
||||
// ===== 消息配置 =====
|
||||
"messages": {
|
||||
"responsePrefix": "[{model}] ",
|
||||
"ackReaction": "👀",
|
||||
"ackReactionScope": "group-mentions"
|
||||
}
|
||||
}
|
||||
242
docs/deployment/security-checklist.md
Normal file
242
docs/deployment/security-checklist.md
Normal file
@ -0,0 +1,242 @@
|
||||
# Moltbot 安全检查清单
|
||||
|
||||
## 部署前安全检查
|
||||
|
||||
### ✅ 基础配置
|
||||
|
||||
- [ ] 使用专用系统用户运行 Moltbot (非 root)
|
||||
- [ ] 配置文件权限设置为 640 或更严格
|
||||
- [ ] 会话目录权限设置为 700
|
||||
- [ ] API 密钥使用环境变量存储,不硬编码
|
||||
- [ ] Gateway token 长度至少 32 字符
|
||||
- [ ] 启用 Gateway 认证 (token 或 password)
|
||||
- [ ] 配置会话隔离 (`session.dmScope: per-channel-peer`)
|
||||
|
||||
### ✅ 网络安全
|
||||
|
||||
- [ ] 使用 HTTPS (SSL/TLS)
|
||||
- [ ] 配置防火墙规则,限制访问来源
|
||||
- [ ] 配置反向代理 (Nginx/Caddy)
|
||||
- [ ] 设置 `trustedProxies` (如果使用反向代理)
|
||||
- [ ] 禁用公网绑定 (bind: loopback 或配置防火墙)
|
||||
|
||||
### ✅ 访问控制
|
||||
|
||||
- [ ] 配置用户白名单/配对机制
|
||||
- [ ] 限制可执行命令的用户组
|
||||
- [ ] 禁用不必要的工具/功能
|
||||
- [ ] 配置沙箱模式 (如果需要文件/Shell 访问)
|
||||
|
||||
### ✅ 日志和监控
|
||||
|
||||
- [ ] 启用敏感信息脱敏 (`redactSensitive: tools`)
|
||||
- [ ] 配置日志轮转
|
||||
- [ ] 设置日志监控和告警
|
||||
- [ ] 定期运行安全审计 (`moltbot security audit`)
|
||||
|
||||
### ✅ 数据保护
|
||||
|
||||
- [ ] 定期备份配置和会话数据
|
||||
- [ ] 加密备份文件
|
||||
- [ ] 限制备份文件访问权限
|
||||
- [ ] 制定数据保留策略
|
||||
|
||||
### ✅ 证书和密钥
|
||||
|
||||
- [ ] 使用 Let's Encrypt 或其他可信 CA 证书
|
||||
- [ ] 配置自动证书续期
|
||||
- [ ] 定期轮换 API 密钥和 token
|
||||
- [ ] 使用强密码策略
|
||||
|
||||
### ✅ 更新和维护
|
||||
|
||||
- [ ] 定期更新 Moltbot 到最新版本
|
||||
- [ ] 定期更新依赖包
|
||||
- [ ] 订阅安全公告
|
||||
- [ ] 制定应急响应计划
|
||||
|
||||
---
|
||||
|
||||
## 运行时安全检查
|
||||
|
||||
### 每日检查
|
||||
|
||||
```bash
|
||||
# 1. 服务状态
|
||||
systemctl status moltbot-gateway.service
|
||||
|
||||
# 2. 错误日志
|
||||
journalctl -u moltbot-gateway.service --since "1 day ago" | grep -i error
|
||||
|
||||
# 3. 异常访问
|
||||
grep -i "unauthorized\|forbidden" /var/log/moltbot/gateway.log
|
||||
|
||||
# 4. 资源使用
|
||||
ps aux | grep moltbot-gateway
|
||||
```
|
||||
|
||||
### 每周检查
|
||||
|
||||
```bash
|
||||
# 1. 完整安全审计
|
||||
moltbot security audit --deep
|
||||
|
||||
# 2. 磁盘使用
|
||||
du -sh /var/lib/moltbot
|
||||
|
||||
# 3. 日志大小
|
||||
du -sh /var/log/moltbot
|
||||
|
||||
# 4. 证书有效期
|
||||
openssl x509 -in /etc/letsencrypt/live/moltbot.company.com/cert.pem -noout -dates
|
||||
```
|
||||
|
||||
### 每月检查
|
||||
|
||||
```bash
|
||||
# 1. 备份验证
|
||||
test -f /backup/moltbot/$(date +%Y%m%d)/moltbot.json
|
||||
|
||||
# 2. API 使用统计
|
||||
moltbot models usage
|
||||
|
||||
# 3. 性能分析
|
||||
moltbot health
|
||||
|
||||
# 4. 密钥轮换检查
|
||||
# 检查密钥是否超过 90 天未更换
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 安全事件响应
|
||||
|
||||
### 检测到异常访问
|
||||
|
||||
1. **立即行动**
|
||||
```bash
|
||||
# 停止服务
|
||||
systemctl stop moltbot-gateway.service
|
||||
|
||||
# 检查日志
|
||||
journalctl -u moltbot-gateway.service -n 1000 > /tmp/security-incident.log
|
||||
|
||||
# 保存会话数据作为证据
|
||||
cp -r /var/lib/moltbot/sessions /tmp/evidence/
|
||||
```
|
||||
|
||||
2. **调查分析**
|
||||
- 检查访问日志中的异常 IP
|
||||
- 检查执行的命令
|
||||
- 检查文件访问记录
|
||||
|
||||
3. **恢复服务**
|
||||
- 轮换所有密钥和 token
|
||||
- 审查访问控制配置
|
||||
- 更新防火墙规则
|
||||
- 从备份恢复配置
|
||||
|
||||
4. **加固措施**
|
||||
- 限制访问来源
|
||||
- 启用更严格的认证
|
||||
- 增加监控频率
|
||||
- 通知相关用户
|
||||
|
||||
### API 密钥泄露
|
||||
|
||||
1. **立即撤销泄露的密钥**
|
||||
2. **生成新的 API 密钥**
|
||||
3. **更新环境变量**
|
||||
4. **重启服务**
|
||||
5. **检查使用记录,确认损失范围**
|
||||
|
||||
---
|
||||
|
||||
## 合规性检查
|
||||
|
||||
### GDPR (欧盟)
|
||||
|
||||
- [ ] 用户有权查看和删除其数据
|
||||
- [ ] 会话数据加密存储
|
||||
- [ ] 数据处理记录
|
||||
- [ ] 隐私政策告知用户数据使用
|
||||
|
||||
### SOC 2
|
||||
|
||||
- [ ] 访问控制文档化
|
||||
- [ ] 变更管理流程
|
||||
- [ ] 事件响应程序
|
||||
- [ ] 定期安全审计
|
||||
|
||||
### ISO 27001
|
||||
|
||||
- [ ] 信息安全策略
|
||||
- [ ] 资产管理
|
||||
- [ ] 访问控制
|
||||
- [ ] 密码学控制
|
||||
- [ ] 操作安全
|
||||
|
||||
---
|
||||
|
||||
## 安全配置示例
|
||||
|
||||
### 最小权限配置
|
||||
|
||||
```json5
|
||||
{
|
||||
"gateway": {
|
||||
"bind": "127.0.0.1", // 仅本地
|
||||
"auth": {
|
||||
"mode": "token",
|
||||
"token": "${CLAWDBOT_GATEWAY_TOKEN}"
|
||||
}
|
||||
},
|
||||
"session": {
|
||||
"dmScope": "per-channel-peer"
|
||||
},
|
||||
"commands": {
|
||||
"useAccessGroups": ["operators"]
|
||||
},
|
||||
"logging": {
|
||||
"redactSensitive": "tools"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 企业级配置
|
||||
|
||||
```json5
|
||||
{
|
||||
"gateway": {
|
||||
"bind": "lan",
|
||||
"auth": {
|
||||
"mode": "token",
|
||||
"token": "${CLAWDBOT_GATEWAY_TOKEN}"
|
||||
},
|
||||
"trustedProxies": ["10.0.0.0/8"]
|
||||
},
|
||||
"session": {
|
||||
"dmScope": "per-channel-peer",
|
||||
"reset": {
|
||||
"mode": "idle",
|
||||
"idleMinutes": 60
|
||||
}
|
||||
},
|
||||
"agents": {
|
||||
"defaults": {
|
||||
"maxConcurrent": 8,
|
||||
"sandbox": {
|
||||
"mode": "docker" // 沙箱隔离
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 联系和支持
|
||||
|
||||
- 官方文档: https://docs.molt.bot
|
||||
- 安全问题: security@molt.bot
|
||||
- GitHub Issues: https://github.com/m1heng/moltbot/issues
|
||||
309
docs/deployment/setup-enterprise.sh
Normal file
309
docs/deployment/setup-enterprise.sh
Normal file
@ -0,0 +1,309 @@
|
||||
#!/bin/bash
|
||||
# Moltbot 企业部署脚本
|
||||
# 适用于 Ubuntu/Debian Linux
|
||||
|
||||
set -e
|
||||
|
||||
# ===== 配置变量 =====
|
||||
MOLTBOT_USER="moltbot"
|
||||
MOLTBOT_HOME="/var/lib/moltbot"
|
||||
MOLTBOT_LOG_DIR="/var/log/moltbot"
|
||||
MOLTBOT_CONFIG_DIR="/etc/moltbot"
|
||||
INSTALL_DIR="/opt/moltbot"
|
||||
|
||||
# 颜色输出
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m'
|
||||
|
||||
log_info() {
|
||||
echo -e "${GREEN}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
log_warn() {
|
||||
echo -e "${YELLOW}[WARN]${NC} $1"
|
||||
}
|
||||
|
||||
log_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
# ===== 检查 root 权限 =====
|
||||
check_root() {
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
log_error "此脚本需要 root 权限运行"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# ===== 创建系统用户 =====
|
||||
create_user() {
|
||||
log_info "创建 Moltbot 系统用户..."
|
||||
if ! id "$MOLTBOT_USER" &>/dev/null; then
|
||||
useradd -r -s /bin/bash -d "$MOLTBOT_HOME" "$MOLTBOT_USER"
|
||||
log_info "用户 $MOLTBOT_USER 创建成功"
|
||||
else
|
||||
log_warn "用户 $MOLTBOT_USER 已存在"
|
||||
fi
|
||||
}
|
||||
|
||||
# ===== 创建目录结构 =====
|
||||
create_directories() {
|
||||
log_info "创建目录结构..."
|
||||
mkdir -p "$MOLTBOT_HOME"/{workspace,sessions,credentials}
|
||||
mkdir -p "$MOLTBOT_LOG_DIR"
|
||||
mkdir -p "$MOLTBOT_CONFIG_DIR"
|
||||
mkdir -p "$INSTALL_DIR"
|
||||
|
||||
# 设置权限
|
||||
chown -R "$MOLTBOT_USER:$MOLTBOT_USER" "$MOLTBOT_HOME"
|
||||
chown -R "$MOLTBOT_USER:$MOLTBOT_USER" "$MOLTBOT_LOG_DIR"
|
||||
chmod 750 "$MOLTBOT_HOME"
|
||||
chmod 750 "$MOLTBOT_LOG_DIR"
|
||||
|
||||
log_info "目录创建完成"
|
||||
}
|
||||
|
||||
# ===== 安装 Moltbot =====
|
||||
install_moltbot() {
|
||||
log_info "安装 Moltbot..."
|
||||
|
||||
# 检查是否已安装
|
||||
if [ -d "$INSTALL_DIR/moltbot" ]; then
|
||||
log_warn "Moltbot 似乎已安装在 $INSTALL_DIR/moltbot"
|
||||
read -p "是否重新安装? (y/N): " -n 1 -r
|
||||
echo
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
return
|
||||
fi
|
||||
rm -rf "$INSTALL_DIR/moltbot"
|
||||
fi
|
||||
|
||||
# 这里假设从现有目录复制或从 git 克隆
|
||||
if [ -d "/root/moltbot" ]; then
|
||||
cp -r /root/moltbot "$INSTALL_DIR/"
|
||||
chown -R "$MOLTBOT_USER:$MOLTBOT_USER" "$INSTALL_DIR/moltbot"
|
||||
log_info "Moltbot 安装完成"
|
||||
else
|
||||
log_error "请先在 /root/moltbot 准备 Moltbot 源码"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# ===== 配置环境变量 =====
|
||||
setup_environment() {
|
||||
log_info "配置环境变量..."
|
||||
|
||||
cat > "$MOLTBOT_CONFIG_DIR/environment" <<EOF
|
||||
# Moltbot 环境变量
|
||||
# 注意:不要在版本控制中提交实际密钥
|
||||
|
||||
# Anthropic API 密钥 (必填)
|
||||
export ANTHROPIC_API_KEY="your-api-key-here"
|
||||
|
||||
# Gateway Token (必填,建议使用强密码)
|
||||
export CLAWDBOT_GATEWAY_TOKEN="your-gateway-token-here"
|
||||
|
||||
# 可选:自定义配置文件路径
|
||||
export CLAWDBOT_STATE_DIR="$MOLTBOT_HOME"
|
||||
export CLAWDBOT_CONFIG_FILE="$MOLTBOT_CONFIG_DIR/moltbot.json"
|
||||
EOF
|
||||
|
||||
chmod 600 "$MOLTBOT_CONFIG_DIR/environment"
|
||||
chown "$MOLTBOT_USER:$MOLTBOT_USER" "$MOLTBOT_CONFIG_DIR/environment"
|
||||
|
||||
log_warn "请编辑 $MOLTBOT_CONFIG_DIR/environment 并设置您的 API 密钥"
|
||||
}
|
||||
|
||||
# ===== 安装 systemd 服务 =====
|
||||
install_service() {
|
||||
log_info "安装 systemd 服务..."
|
||||
|
||||
cat > /etc/systemd/system/moltbot-gateway.service <<EOF
|
||||
[Unit]
|
||||
Description=Moltbot Gateway
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=$MOLTBOT_USER
|
||||
Group=$MOLTBOT_USER
|
||||
WorkingDirectory=$INSTALL_DIR/moltbot
|
||||
EnvironmentFile=$MOLTBOT_CONFIG_DIR/environment
|
||||
ExecStart=/usr/bin/node $INSTALL_DIR/moltbot/dist/index.js gateway
|
||||
Restart=on-failure
|
||||
RestartSec=10
|
||||
StandardOutput=append:$MOLTBOT_LOG_DIR/gateway.log
|
||||
StandardError=append:$MOLTBOT_LOG_DIR/gateway-error.log
|
||||
|
||||
# 安全加固
|
||||
NoNewPrivileges=true
|
||||
PrivateTmp=true
|
||||
ProtectSystem=strict
|
||||
ProtectHome=true
|
||||
ReadWritePaths=$MOLTBOT_HOME $MOLTBOT_LOG_DIR $MOLTBOT_CONFIG_DIR
|
||||
|
||||
# 资源限制
|
||||
LimitNOFILE=65536
|
||||
MemoryMax=2G
|
||||
CPUQuota=200%
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
systemctl daemon-reload
|
||||
log_info "systemd 服务安装完成"
|
||||
}
|
||||
|
||||
# ===== 配置 logrotate =====
|
||||
setup_logrotate() {
|
||||
log_info "配置日志轮转..."
|
||||
|
||||
cat > /etc/logrotate.d/moltbot <<EOF
|
||||
$MOLTBOT_LOG_DIR/*.log {
|
||||
daily
|
||||
rotate 30
|
||||
compress
|
||||
delaycompress
|
||||
notifempty
|
||||
create 0640 $MOLTBOT_USER $MOLTBOT_USER
|
||||
sharedscripts
|
||||
postrotate
|
||||
systemctl reload moltbot-gateway.service >/dev/null 2>&1 || true
|
||||
endscript
|
||||
}
|
||||
EOF
|
||||
|
||||
log_info "日志轮转配置完成"
|
||||
}
|
||||
|
||||
# ===== 配置防火墙 =====
|
||||
setup_firewall() {
|
||||
log_info "配置防火墙..."
|
||||
|
||||
if command -v ufw &> /dev/null; then
|
||||
ufw allow 18789/tcp comment 'Moltbot Gateway'
|
||||
log_info "UFW 防火墙规则已添加"
|
||||
elif command -v firewall-cmd &> /dev/null; then
|
||||
firewall-cmd --permanent --add-port=18789/tcp
|
||||
firewall-cmd --reload
|
||||
log_info "firewalld 防火墙规则已添加"
|
||||
else
|
||||
log_warn "未检测到防火墙,请手动开放端口 18789"
|
||||
fi
|
||||
}
|
||||
|
||||
# ===== 安装 Nginx 反向代理 =====
|
||||
install_nginx() {
|
||||
log_info "配置 Nginx 反向代理..."
|
||||
|
||||
if ! command -v nginx &> /dev/null; then
|
||||
log_warn "Nginx 未安装,跳过反向代理配置"
|
||||
return
|
||||
fi
|
||||
|
||||
cat > /etc/nginx/sites-available/moltbot <<'EOF'
|
||||
# Moltbot Gateway 反向代理配置
|
||||
server {
|
||||
listen 80;
|
||||
server_name moltbot.yourcompany.com;
|
||||
|
||||
# 强制 HTTPS
|
||||
return 301 https://$server_name$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
server_name moltbot.yourcompany.com;
|
||||
|
||||
# SSL 证书配置 (使用 Let's Encrypt)
|
||||
ssl_certificate /etc/letsencrypt/live/moltbot.yourcompany.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/moltbot.yourcompany.com/privkey.pem;
|
||||
|
||||
# SSL 安全配置
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
ssl_ciphers HIGH:!aNULL:!MD5;
|
||||
ssl_prefer_server_ciphers on;
|
||||
|
||||
# 日志
|
||||
access_log /var/log/nginx/moltbot-access.log;
|
||||
error_log /var/log/nginx/moltbot-error.log;
|
||||
|
||||
# 反向代理到 Moltbot Gateway
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:18789;
|
||||
proxy_http_version 1.1;
|
||||
|
||||
# WebSocket 支持
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
|
||||
# 代理头
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_to;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
|
||||
# 超时设置
|
||||
proxy_connect_timeout 60s;
|
||||
proxy_send_timeout 60s;
|
||||
proxy_read_timeout 300s;
|
||||
|
||||
# 缓冲禁用 (流式响应需要)
|
||||
proxy_buffering off;
|
||||
}
|
||||
|
||||
# 健康检查端点
|
||||
location /health {
|
||||
proxy_pass http://127.0.0.1:18789/health;
|
||||
access_log off;
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
log_info "Nginx 配置文件已创建: /etc/nginx/sites-available/moltbot"
|
||||
log_warn "请修改 server_name 并启用配置: ln -s /etc/nginx/sites-available/moltbot /etc/nginx/sites-enabled/"
|
||||
}
|
||||
|
||||
# ===== 主函数 =====
|
||||
main() {
|
||||
log_info "开始安装 Moltbot 企业版..."
|
||||
|
||||
check_root
|
||||
create_user
|
||||
create_directories
|
||||
install_moltbot
|
||||
setup_environment
|
||||
install_service
|
||||
setup_logrotate
|
||||
setup_firewall
|
||||
install_nginx
|
||||
|
||||
echo ""
|
||||
log_info "安装完成!"
|
||||
echo ""
|
||||
echo "后续步骤:"
|
||||
echo "1. 编辑环境变量文件:"
|
||||
echo " vim $MOLTBOT_CONFIG_DIR/environment"
|
||||
echo ""
|
||||
echo "2. 复制企业配置文件:"
|
||||
echo " cp enterprise-config.json5 $MOLTBOT_CONFIG_DIR/moltbot.json"
|
||||
echo ""
|
||||
echo "3. 配置 Nginx(如果使用):"
|
||||
echo " vim /etc/nginx/sites-available/moltbot"
|
||||
echo " ln -s /etc/nginx/sites-available/moltbot /etc/nginx/sites-enabled/"
|
||||
echo " nginx -t && systemctl reload nginx"
|
||||
echo ""
|
||||
echo "4. 启动服务:"
|
||||
echo " systemctl enable --now moltbot-gateway.service"
|
||||
echo ""
|
||||
echo "5. 查看状态:"
|
||||
echo " systemctl status moltbot-gateway.service"
|
||||
echo " journalctl -u moltbot-gateway.service -f"
|
||||
}
|
||||
|
||||
# 运行主函数
|
||||
main "$@"
|
||||
Loading…
Reference in New Issue
Block a user