本文档提供QuickBot在各种环境下的详细部署指南。
- Python 3.8+
- Go 1.22+
- SQLite 3
- 4GB+ RAM
- 10GB+ 磁盘空间
git clone https://github.com/Chang-Augenweide/QuickBot.git
cd QuickBotpython3 -m pip install -r requirements.txt
python3 -m pip install -r requirements-dev.txt # 可选:开发工具cp config.example.yaml config.yaml
nano config.yaml # 编辑配置文件数据库会在第一次运行时自动创建。
# Python版本
python main.py
# Go版本
go run main.go --cmd run
# 或使用Makefile
make run- Python 3.8+ 或 Go 1.22+
- 8GB+ RAM
- 50GB+ SSD磁盘空间
- 稳定的网络连接
- API密钥(OpenAI/Anthropic等)
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装系统依赖
sudo apt install -y python3 python3-pip gcc git sqlite3
# 安装Python依赖
pip install -r requirements.txt创建config.yaml:
bot:
name: ProductionQuickBot
debug: false
timezone: Asia/Shanghai
ai:
provider: openai
api_key: YOUR_API_KEY_HERE
model: gpt-4o
platforms:
telegram:
enabled: true
token: YOUR_TELEGRAM_BOT_TOKEN
memory:
enabled: true
max_messages: 10000
storage: /var/lib/quickbot/memory.db
scheduler:
enabled: true
storage: /var/lib/quickbot/scheduler.db
logging:
level: INFO
file: /var/log/quickbot/quickbot.log创建systemd服务文件 /etc/systemd/system/quickbot.service:
[Unit]
Description=QuickBot Personal AI Assistant
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/quickbot
ExecStart=/usr/bin/python3 /opt/quickbot/main.py
Restart=always
RestartSec=10
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=multi-user.target启动服务:
sudo systemctl daemon-reload
sudo systemctl enable quickbot
sudo systemctl start quickbot
sudo systemctl status quickbot使用Nginx:
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;
}
}cp .env.example .env
nano .env # 填写实际值# 构建并启动所有服务
docker-compose up -d
# 查看日志
docker-compose logs -f quickbot
# 查看状态
docker-compose ps# 停止服务
docker-compose stop
# 重启服务
docker-compose restart quickbot
# 停止并删除容器
docker-compose down
# 重新构建镜像
docker-compose build --no-cache
docker-compose up -d# 构建镜像
docker build -t quickbot:latest .
# 运行容器
docker run -d \
--name quickbot \
-p 8080:8080 \
-v $(pwd)/config.yaml:/app/config.yaml:ro \
-v quickbot_data:/app/data \
quickbot:latest
# 查看日志
docker logs -f quickbotapiVersion: apps/v1
kind: Deployment
metadata:
name: quickbot
labels:
app: quickbot
spec:
replicas: 2
selector:
matchLabels:
app: quickbot
template:
metadata:
labels:
app: quickbot
spec:
containers:
- name: quickbot
image: quickbot:latest
ports:
- containerPort: 8080
env:
- name: QUICKBOT_AI_API_KEY
valueFrom:
secretKeyRef:
name: quickbot-secrets
key: ai-api-key
volumeMounts:
- name: config
mountPath: /app/config.yaml
subPath: config.yaml
- name: data
mountPath: /app/data
volumes:
- name: config
configMap:
name: quickbot-config
- name: data
persistentVolumeClaim:
claimName: quickbot-data
---
apiVersion: v1
kind: Service
metadata:
name: quickbot-service
spec:
selector:
app: quickbot
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: LoadBalancer# 应用配置
kubectl apply -f deployment.yaml
# 查看Pod状态
kubectl get pods
# 查看日志
kubectl logs -f deployment/quickbot
# 扩容
kubectl scale deployment quickbot --replicas=3查看实时日志:
# systemd
sudo journalctl -u quickbot -f
# Docker
docker logs -f quickbot
# Kubernetes
kubectl logs -f deployment/quickbot运行健康检查脚本:
python health_check.py
# 定期检查(cron)
0 * * * * /usr/bin/python3 /opt/quickbot/health_check.py >> /var/log/quickbot/health.log使用Prometheus + Grafana:
# 启动监控栈
docker-compose up -d prometheus grafana
# 访问Grafana
http://localhost:3000备份数据库:
#!/bin/bash
# backup.sh
DATE=$(date +%Y%m%d_%H%M%S)
cp /var/lib/quickbot/memory.db /backup/memory_${DATE}.db
cp /var/lib/quickbot/scheduler.db /backup/scheduler_${DATE}.db
# 保留最近7天的备份
find /backup -name "*.db" -mtime +7 -delete# 停止服务
sudo systemctl stop quickbot
# 备份数据
./backup.sh
# 拉取最新代码
git pull origin main
# 更新依赖
pip install -r requirements.txt --upgrade
# 更新Go模块
go mod download
# 启动服务
sudo systemctl start quickbot- 减少
max_messages配置值 - 定期清理旧消息
- 使用连接池
-- 创建索引
CREATE INDEX IF NOT EXISTS idx_messages_timestamp ON messages(timestamp);
CREATE INDEX IF NOT EXISTS idx_sessions_updated ON sessions(updated_at);
-- 定期VACUUM
VACUUM;使用Redis缓存常用查询:
import redis
r = redis.Redis(host='localhost', port=6379, decode_responses=True)
# 缓存内存查询
def get_cached_memory(key):
cached = r.get(f"memory:{key}")
if cached:
return cached
value = memory.get_long_term(key)
r.setex(f"memory:{key}", 3600, value) # 缓存1小时
return value使用Celery处理耗时任务:
from celery import Celery
app = Celery('quickbot', broker='redis://localhost:6379/0')
@app.task
def async_message_process(session_id, message):
# 异步处理消息
pass检查配置文件语法:
python -c "import yaml; yaml.safe_load(open('config.yaml'))"- 减少
memory.max_messages - 定期清理会话
- 重启服务
- 检查网络连接
- 增加AI请求超时时间
- 使用Redis缓存
# 尝试恢复
sqlite3 memory.db ".recover" | sqlite3 memory_recovered.db
# 从备份恢复
cp /backup/memory_YYYYMMDD_HHMMSS.db /var/lib/quickbot/memory.db-
API密钥安全
- 使用环境变量存储密钥
- 定期轮换密钥
- 使用密钥管理服务
-
访问控制
- 限制allowed_users
- 使用HTTPS
- 配置防火墙
-
日志审计
- 记录所有操作
- 定期审查日志
- 实施日志轮转
-
数据加密
- 加密敏感数据
- 使用TLS连接
- 定期备份
- 项目主页: https://github.com/Chang-Augenweide/QuickBot
- 问题反馈: https://github.com/Chang-Augenweide/QuickBot/issues
- 文档: https://docs.quickbot.ai
Happy Deployment! 🚀