226d6724bd7f4c942253f2a0d33f18261767e75f
- 修复日志按钮点击无反应(类型匹配和错误处理) - 修复定时任务到时间不执行(时间格式标准化) - 增强所有检查点的调试日志输出 - 改进今日执行检查逻辑(支持同一天不同时间执行) Bug 1: 日志按钮完全没反应 - 将严格相等(===)改为宽松相等(==)避免类型不匹配 - 添加详细的错误日志和用户提示 - 添加容器元素存在性检查 Bug 2: 定时任务到时间不会被执行 - 标准化时间格式(8:00 -> 08:00) - 增强所有检查点的日志输出(时间、星期、账号) - 改进今日执行检查(同一天不同时间可再次执行) - 前端添加时间格式验证和标准化 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
知识管理平台自动化工具 - Docker部署版
这是一个基于 Docker 的知识管理平台自动化工具,支持多用户、定时任务、代理IP、VIP管理等功能。
项目简介
本项目是一个 Docker 容器化应用,使用 Flask + Playwright + SQLite 构建,提供:
- 多用户注册登录系统
- 浏览器自动化任务
- 定时任务调度
- 截图管理
- VIP用户管理
- 代理IP支持
- 后台管理系统
技术栈
- 后端: Python 3.8+, Flask
- 数据库: SQLite
- 自动化: Playwright (Chromium)
- 容器化: Docker + Docker Compose
- 前端: HTML + JavaScript + Socket.IO
项目结构
zsgpt2/
├── app.py # 主应用程序
├── database.py # 数据库模块
├── playwright_automation.py # 浏览器自动化
├── browser_installer.py # 浏览器安装检查
├── app_config.py # 配置管理
├── app_logger.py # 日志系统
├── app_security.py # 安全模块
├── app_state.py # 状态管理
├── app_utils.py # 工具函数
├── db_pool.py # 数据库连接池
├── password_utils.py # 密码工具
├── requirements.txt # Python依赖
├── Dockerfile # Docker镜像构建文件
├── docker-compose.yml # Docker编排文件
├── templates/ # HTML模板
│ ├── index.html # 主页面
│ ├── login.html # 登录页
│ ├── register.html # 注册页
│ ├── admin.html # 后台管理
│ └── ...
└── static/ # 静态资源
└── js/ # JavaScript文件
部署前准备
1. 环境要求
- 服务器: Linux (Ubuntu 20.04+ / CentOS 7+)
- Docker: 20.10+
- Docker Compose: 1.29+
- 内存: 4GB+ (推荐8GB)
- 磁盘: 20GB+
2. SSH连接
注意: 本文档假设你已经有服务器的SSH访问权限。
你需要准备:
- 服务器IP地址
- SSH用户名和密码(或SSH密钥)
- SSH端口(默认22)
SSH连接示例:
ssh root@your-server-ip
# 或使用密钥
ssh -i /path/to/key root@your-server-ip
快速部署
步骤1: 上传项目文件
将整个 zsgpt2 文件夹上传到服务器的 /www/wwwroot/ 目录:
# 在本地执行(Windows PowerShell 或 Git Bash)
scp -r C:\Users\Administrator\Desktop\zsgpt2 root@your-server-ip:/www/wwwroot/
# 或者使用 FileZilla、WinSCP 等工具上传
上传后,服务器上的路径应该是:/www/wwwroot/zsgpt2/
步骤2: SSH登录服务器
ssh root@your-server-ip
步骤3: 进入项目目录
cd /www/wwwroot/zsgpt2
步骤4: 创建必要的目录
mkdir -p data logs 截图 playwright
chmod 777 data logs 截图 playwright
步骤5: 构建并启动Docker容器
# 构建镜像
docker build -t knowledge-automation .
# 启动容器
docker-compose up -d
# 查看容器状态
docker ps | grep knowledge-automation
步骤6: 检查容器日志
docker logs -f knowledge-automation-multiuser
如果看到以下信息,说明启动成功:
服务器启动中...
用户访问地址: http://0.0.0.0:5000
后台管理地址: http://0.0.0.0:5000/yuyx
配置Nginx反向代理(可选但推荐)
如果你想通过域名访问,需要配置Nginx反向代理。
1. 安装Nginx
# Ubuntu/Debian
apt update && apt install nginx -y
# CentOS/RHEL
yum install nginx -y
2. 创建Nginx配置文件
创建文件 /etc/nginx/conf.d/zsgpt.conf:
server {
listen 80;
server_name your-domain.com; # 替换为你的域名
# 日志
access_log /var/log/nginx/zsgpt_access.log;
error_log /var/log/nginx/zsgpt_error.log;
# 反向代理
location / {
proxy_pass http://127.0.0.1:5001;
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;
client_max_body_size 50M;
# WebSocket支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
}
3. 重启Nginx
nginx -t # 测试配置
nginx -s reload # 重新加载配置
4. 配置SSL(推荐)
# 安装certbot
apt install certbot python3-certbot-nginx -y
# 申请证书
certbot --nginx -d your-domain.com
# 自动续期
certbot renew --dry-run
访问系统
用户端
- HTTP:
http://your-server-ip:5001 - 域名:
http://your-domain.com(配置Nginx后) - HTTPS:
https://your-domain.com(配置SSL后)
后台管理
- 路径:
/yuyx - 默认账号:
admin - 默认密码:
admin
首次登录后请立即修改密码!
系统配置
登录后台后,在"系统配置"页面可以设置:
1. 并发控制
- 全局最大并发: 2 (根据服务器配置调整)
- 单用户并发: 1
2. 定时任务
- 启用定时浏览: 是/否
- 执行时间: 02:00 (CST时间)
- 浏览类型: 应读/注册前未读/未读
- 执行日期: 周一到周日
3. 代理配置
- 启用代理: 是/否
- API地址: http://your-proxy-api.com
- IP有效期: 3分钟
Docker常用命令
容器管理
# 启动容器
docker start knowledge-automation-multiuser
# 停止容器
docker stop knowledge-automation-multiuser
# 重启容器
docker restart knowledge-automation-multiuser
# 删除容器
docker rm -f knowledge-automation-multiuser
# 查看容器状态
docker ps -a | grep knowledge-automation
日志查看
# 查看实时日志
docker logs -f knowledge-automation-multiuser
# 查看最近100行日志
docker logs --tail 100 knowledge-automation-multiuser
# 查看应用日志文件
tail -f /www/wwwroot/zsgpt2/logs/app.log
进入容器
# 进入容器Shell
docker exec -it knowledge-automation-multiuser bash
# 在容器内执行命令
docker exec knowledge-automation-multiuser python -c "print('Hello')"
重新构建
如果修改了代码,需要重新构建:
cd /www/wwwroot/zsgpt2
# 停止并删除旧容器
docker-compose down
# 重新构建并启动
docker-compose build
docker-compose up -d
数据备份与恢复
1. 备份数据
cd /www/wwwroot
# 备份整个项目
tar -czf zsgpt2_backup_$(date +%Y%m%d).tar.gz zsgpt2/
# 仅备份数据库
cp /www/wwwroot/zsgpt2/data/app_data.db /backup/app_data_$(date +%Y%m%d).db
# 备份截图
tar -czf screenshots_$(date +%Y%m%d).tar.gz /www/wwwroot/zsgpt2/截图/
2. 恢复数据
# 停止容器
docker stop knowledge-automation-multiuser
# 恢复整个项目
cd /www/wwwroot
tar -xzf zsgpt2_backup_20251027.tar.gz
# 恢复数据库
cp /backup/app_data_20251027.db /www/wwwroot/zsgpt2/data/app_data.db
# 重启容器
docker start knowledge-automation-multiuser
3. 定时备份
添加cron任务自动备份:
crontab -e
添加以下内容:
# 每天凌晨3点备份
0 3 * * * tar -czf /backup/zsgpt2_$(date +\%Y\%m\%d).tar.gz /www/wwwroot/zsgpt2/data
常见问题
1. 容器启动失败
问题: docker-compose up -d 失败
解决方案:
# 查看详细错误
docker-compose logs
# 检查端口占用
netstat -tlnp | grep 5001
# 重新构建
docker-compose build --no-cache
docker-compose up -d
2. 502 Bad Gateway
问题: Nginx返回502错误
解决方案:
# 检查容器是否运行
docker ps | grep knowledge-automation
# 检查端口是否监听
netstat -tlnp | grep 5001
# 测试直接访问
curl http://127.0.0.1:5001
# 检查Nginx配置
nginx -t
3. 数据库锁定
问题: "database is locked"
解决方案:
# 重启容器
docker restart knowledge-automation-multiuser
# 如果问题持续,优化数据库
cd /www/wwwroot/zsgpt2
cp data/app_data.db data/app_data.db.backup
sqlite3 data/app_data.db "VACUUM;"
4. 内存不足
问题: 容器OOM (Out of Memory)
解决方案:
修改 docker-compose.yml:
services:
knowledge-automation:
mem_limit: 2g
memswap_limit: 2g
然后重启:
docker-compose down
docker-compose up -d
5. 浏览器下载失败
问题: Playwright浏览器下载失败
解决方案:
# 进入容器手动安装
docker exec -it knowledge-automation-multiuser bash
playwright install chromium
# 或使用国内镜像
export PLAYWRIGHT_DOWNLOAD_HOST=https://npmmirror.com/mirrors/playwright/
playwright install chromium
性能优化
1. 调整并发参数
根据服务器配置调整:
- 2核4GB: 全局并发=1, 单用户并发=1
- 4核8GB: 全局并发=2, 单用户并发=1
- 8核16GB: 全局并发=4, 单用户并发=2
2. 启用代理IP
避免IP被封,提高成功率:
- 选择稳定的代理服务商
- 设置合适的IP有效期(3-5分钟)
- 启用自动重试机制
3. 定期清理数据
系统会自动清理7天前的数据,也可以手动清理:
# 清理7天前的截图
find /www/wwwroot/zsgpt2/截图 -name "*.jpg" -mtime +7 -delete
# 清理旧日志
find /www/wwwroot/zsgpt2/logs -name "*.log" -mtime +30 -delete
# 优化数据库
sqlite3 /www/wwwroot/zsgpt2/data/app_data.db "VACUUM;"
安全建议
1. 修改默认密码
首次登录后立即修改:
- 管理员密码
- 用户密码
2. 配置防火墙
# 只开放必要端口
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload
# 禁止直接访问5001端口(仅Nginx可访问)
iptables -A INPUT -p tcp --dport 5001 -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -p tcp --dport 5001 -j DROP
3. 启用HTTPS
强烈建议使用HTTPS加密传输:
certbot --nginx -d your-domain.com
4. 限制SSH访问
# 修改SSH端口(可选)
vi /etc/ssh/sshd_config
# Port 22222
# 禁止root密码登录(使用密钥)
PermitRootLogin prohibit-password
PasswordAuthentication no
# 重启SSH服务
systemctl restart sshd
监控与维护
1. 系统监控
推荐使用以下工具:
- Docker Stats:
docker stats knowledge-automation-multiuser - Grafana + Prometheus: 可视化监控
- Uptime Kuma: 服务可用性监控
2. 日志分析
# 统计今日任务数
grep "浏览完成" /www/wwwroot/zsgpt2/logs/app.log | grep $(date +%Y-%m-%d) | wc -l
# 查看错误日志
grep "ERROR" /www/wwwroot/zsgpt2/logs/app.log | tail -20
# 查看最近的登录
grep "登录成功" /www/wwwroot/zsgpt2/logs/app.log | tail -10
3. 数据库维护
# 定期优化数据库(每月一次)
docker exec knowledge-automation-multiuser python3 << 'EOF'
import sqlite3
conn = sqlite3.connect('/app/data/app_data.db')
conn.execute('VACUUM')
conn.close()
print("数据库优化完成")
EOF
更新升级
1. 更新代码
# 停止容器
docker-compose down
# 备份数据
cp -r data data.backup
cp -r 截图 截图.backup
# 上传新代码(覆盖旧文件)
# 使用 scp 或 FTP 工具上传
# 重新构建并启动
docker-compose build
docker-compose up -d
2. 数据库迁移
如果数据库结构有变化,应用会自动迁移。
查看迁移日志:
docker logs knowledge-automation-multiuser | grep "数据库"
端口说明
| 端口 | 说明 | 映射 |
|---|---|---|
| 5000 | 容器内应用端口 | - |
| 5001 | 主机映射端口 | 容器5000 → 主机5001 |
| 80 | HTTP端口 | Nginx |
| 443 | HTTPS端口 | Nginx |
环境变量
可以在 docker-compose.yml 中设置的环境变量:
| 变量名 | 说明 | 默认值 |
|---|---|---|
| TZ | 时区 | Asia/Shanghai |
| PYTHONUNBUFFERED | Python输出缓冲 | 1 |
| PLAYWRIGHT_BROWSERS_PATH | 浏览器路径 | /ms-playwright |
技术支持
项目信息
- 项目名称: 知识管理平台自动化工具
- 版本: Docker 多用户版
- 技术栈: Python + Flask + Playwright + SQLite + Docker
常用文档链接
故障排查
遇到问题时,请按以下顺序检查:
- 容器日志:
docker logs knowledge-automation-multiuser - 应用日志:
cat /www/wwwroot/zsgpt2/logs/app.log - Nginx日志:
cat /var/log/nginx/zsgpt_error.log - 系统资源:
docker stats,htop,df -h
许可证
本项目仅供学习和研究使用。
文档版本: v1.0 更新日期: 2025-10-29 适用版本: Docker多用户版
快速上手命令清单
# 1. 上传文件
scp -r zsgpt2 root@your-ip:/www/wwwroot/
# 2. SSH登录
ssh root@your-ip
# 3. 进入目录并创建必要目录
cd /www/wwwroot/zsgpt2
mkdir -p data logs 截图 playwright
chmod 777 data logs 截图 playwright
# 4. 启动容器
docker-compose up -d
# 5. 查看日志
docker logs -f knowledge-automation-multiuser
# 6. 访问系统
# 浏览器打开: http://your-ip:5001
# 后台管理: http://your-ip:5001/yuyx
# 默认账号: admin / admin
完成!🎉
Description
Languages
Python
60.8%
HTML
37.9%
Shell
1.1%
Dockerfile
0.2%