Compare commits
19 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 761edef6fe | |||
| 5f9439c8a9 | |||
| 0d0354ac4e | |||
| 47a38032a6 | |||
| b59931f357 | |||
| 1420b08a43 | |||
| cd5bdb5938 | |||
| 69ade8dcbb | |||
| 7926a5b51f | |||
| 26e0ed26e1 | |||
| edbaa9a257 | |||
| b2a0b66492 | |||
| 9202e4c202 | |||
| 38db7b0606 | |||
| 6e5b963b3f | |||
| a201b0356a | |||
| 71dd1d3aff | |||
| 55cc408881 | |||
| ca7527918d |
32
README.md
32
README.md
@@ -1,19 +1,43 @@
|
||||
# 项目服务管理面板
|
||||
# 项目服务管理面板 v3.0.0
|
||||
|
||||
统一管理所有 Web 服务项目,提供状态检测、启动/停止控制、日志查看等功能。
|
||||
统一管理所有 Web 服务项目,提供状态检测、启动/停止控制、日志查看、Docker 监控等功能。
|
||||
|
||||
## 端口
|
||||
|
||||
- **服务端口**: 19013
|
||||
- **访问地址**: http://localhost:19013
|
||||
- **服务端口**: 16022
|
||||
- **访问地址**: http://localhost:16022
|
||||
|
||||
## 功能
|
||||
|
||||
### 项目管理
|
||||
- 项目列表展示(状态、端口、版本)
|
||||
- 服务状态健康检测
|
||||
- 启动/停止/重启控制
|
||||
- 日志查看(实时滚动)
|
||||
- Git 仓库链接
|
||||
- 自定义链接入口
|
||||
- 新增外部服务
|
||||
|
||||
### Docker 监控(v3.0.0 新增)
|
||||
- **容器监控**:CPU、内存、网络 I/O、磁盘 I/O 使用情况
|
||||
- **容器控制**:启动、停止、重启容器
|
||||
- **容器日志**:实时查看容器日志
|
||||
- **镜像管理**:查看镜像列表、大小、悬空镜像
|
||||
- **系统信息**:Docker 版本、磁盘占用、运行状态统计
|
||||
- **资源清理**:一键清理未使用的容器、镜像、卷
|
||||
|
||||
### 系统资源监控
|
||||
- CPU、内存、磁盘使用率
|
||||
- 网络流量和实时网速
|
||||
- CPU 温度监控
|
||||
- 进程列表
|
||||
- 阈值告警(弹窗 + 桌面通知 + 邮件)
|
||||
|
||||
### Cron 管理
|
||||
- Cron 任务增删改查
|
||||
- 历史版本回退
|
||||
- 分类管理
|
||||
- 从系统同步
|
||||
|
||||
## 启动方式 ⭐
|
||||
|
||||
|
||||
BIN
__pycache__/app.cpython-310.pyc
Normal file
BIN
__pycache__/app.cpython-310.pyc
Normal file
Binary file not shown.
52
logs/app.log
52
logs/app.log
@@ -1,42 +1,16 @@
|
||||
[2026-04-23 17:27:44] ==================================================
|
||||
[2026-04-23 17:27:44] 项目服务管理面板 v2.0.0 启动
|
||||
[2026-04-23 17:27:44] 访问地址: http://localhost:19013
|
||||
[2026-04-23 17:27:44] 进程PID: 1130035
|
||||
[2026-04-23 17:27:44] ==================================================
|
||||
[2026-06-01 11:29:23] ==================================================
|
||||
[2026-06-01 11:29:23] 项目服务管理面板 v2.0.0 启动
|
||||
[2026-06-01 11:29:23] 访问地址: http://localhost:16022
|
||||
[2026-06-01 11:29:23] 进程PID: 772725
|
||||
[2026-06-01 11:29:23] ==================================================
|
||||
* Serving Flask app 'app'
|
||||
* Debug mode: off
|
||||
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
|
||||
[31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m
|
||||
* Running on all addresses (0.0.0.0)
|
||||
* Running on http://127.0.0.1:19013
|
||||
* Running on http://192.168.2.17:19013
|
||||
Press CTRL+C to quit
|
||||
127.0.0.1 - - [23/Apr/2026 17:27:49] "GET /api/system/stats HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [23/Apr/2026 17:27:51] "GET / HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [23/Apr/2026 17:27:52] "GET / HTTP/1.1" 200 -
|
||||
192.168.2.14 - - [23/Apr/2026 17:27:53] "GET /api/projects HTTP/1.1" 200 -
|
||||
192.168.2.8 - - [23/Apr/2026 17:27:54] "GET /api/projects HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [23/Apr/2026 17:28:02] "GET / HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [23/Apr/2026 17:28:02] "GET / HTTP/1.1" 200 -
|
||||
192.168.2.14 - - [23/Apr/2026 17:28:03] "GET /api/projects HTTP/1.1" 200 -
|
||||
192.168.2.8 - - [23/Apr/2026 17:28:04] "GET /api/projects HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [23/Apr/2026 17:28:10] "GET / HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [23/Apr/2026 17:28:12] "GET / HTTP/1.1" 200 -
|
||||
192.168.2.8 - - [23/Apr/2026 17:28:12] "GET /api/projects HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [23/Apr/2026 17:28:12] "GET / HTTP/1.1" 200 -
|
||||
192.168.2.14 - - [23/Apr/2026 17:28:13] "GET /api/projects HTTP/1.1" 200 -
|
||||
192.168.2.8 - - [23/Apr/2026 17:28:14] "GET /api/projects HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [23/Apr/2026 17:28:21] "GET / HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [23/Apr/2026 17:28:22] "GET / HTTP/1.1" 200 -
|
||||
192.168.2.14 - - [23/Apr/2026 17:28:23] "GET /api/projects HTTP/1.1" 200 -
|
||||
192.168.2.8 - - [23/Apr/2026 17:28:24] "GET /api/projects HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [23/Apr/2026 17:28:31] "GET / HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [23/Apr/2026 17:28:32] "GET / HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [23/Apr/2026 17:28:33] "GET /api/system/stats HTTP/1.1" 200 -
|
||||
192.168.2.14 - - [23/Apr/2026 17:28:33] "GET /api/projects HTTP/1.1" 200 -
|
||||
192.168.2.8 - - [23/Apr/2026 17:28:34] "GET /api/projects HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [23/Apr/2026 17:28:40] "GET / HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [23/Apr/2026 17:28:41] "GET / HTTP/1.1" 200 -
|
||||
192.168.2.8 - - [23/Apr/2026 17:28:42] "GET /api/projects HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [23/Apr/2026 17:28:43] "GET / HTTP/1.1" 200 -
|
||||
192.168.2.14 - - [23/Apr/2026 17:28:43] "GET /api/projects HTTP/1.1" 200 -
|
||||
192.168.2.8 - - [23/Apr/2026 17:28:44] "GET /api/projects HTTP/1.1" 200 -
|
||||
* Running on http://127.0.0.1:16022
|
||||
* Running on http://192.168.0.101:16022
|
||||
[33mPress CTRL+C to quit[0m
|
||||
127.0.0.1 - - [01/Jun/2026 11:29:31] "GET /api/docker/containers HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [01/Jun/2026 11:29:38] "GET /api/docker/container/641688a330c1/stats HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [01/Jun/2026 11:30:08] "GET / HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [01/Jun/2026 11:30:08] "GET /api/projects HTTP/1.1" 200 -
|
||||
|
||||
237
projects.json
237
projects.json
@@ -1,221 +1,48 @@
|
||||
{
|
||||
"server": {
|
||||
"name": "hz1-PowerEdge-R730xd",
|
||||
"description": "黄庄1号服务器 - PowerEdge R730xd",
|
||||
"python_path": "/home/hz1/miniconda3/envs/openclaw/bin/python3.12",
|
||||
"updated": "2026-06-01"
|
||||
},
|
||||
"projects": [
|
||||
{
|
||||
"id": "pdf-translate-v2",
|
||||
"name": "PDF翻译助手 V2",
|
||||
"id": "pdf-translate-web",
|
||||
"name": "PDF翻译助手",
|
||||
"type": "web",
|
||||
"ports": [19000],
|
||||
"directory": "works/pdf-translate-web-v2",
|
||||
"start_cmd": "mkdir -p logs && nohup python3 app.py > logs/app.log 2>&1 & disown",
|
||||
"health_url": "http://localhost:19000/api/health",
|
||||
"ports": [16021],
|
||||
"directory": "works/pdf-translate-web",
|
||||
"start_cmd": "mkdir -p logs && nohup /home/hz1/miniconda3/envs/openclaw/bin/python3.12 app.py > logs/app.log 2>&1 & disown",
|
||||
"stop_cmd": "pkill -f 'python.*pdf-translate-web.*app.py' || true",
|
||||
"health_url": "http://localhost:16021/",
|
||||
"description": "英文PDF翻译中文网站,支持用户系统、会员体系",
|
||||
"admin_url": "http://localhost:19000/admin",
|
||||
"git_repo": "http://192.168.2.8:12007/coder/pdf-translate-web",
|
||||
"version": "v2.1.0"
|
||||
},
|
||||
{
|
||||
"id": "llm-index-rag",
|
||||
"name": "LLM Index RAG",
|
||||
"type": "web",
|
||||
"ports": [19001],
|
||||
"directory": "works/llm-index-rag",
|
||||
"start_cmd": "mkdir -p logs && nohup python3 app.py > logs/app.log 2>&1 & disown",
|
||||
"health_url": "http://localhost:19001/api/stats",
|
||||
"description": "基于索引和搜索的知识检索系统",
|
||||
"admin_url": "http://localhost:19001/settings",
|
||||
"git_repo": "http://192.168.2.8:12007/coder/llm-index-rag",
|
||||
"version": "v1.1.2"
|
||||
},
|
||||
{
|
||||
"id": "snippet-notes",
|
||||
"name": "碎片信息记录",
|
||||
"type": "web",
|
||||
"ports": [19009],
|
||||
"directory": "works/snippet-notes",
|
||||
"start_cmd": "mkdir -p logs && nohup python3 app.py > logs/app.log 2>&1 & disown",
|
||||
"health_url": "http://localhost:19009/api/notes",
|
||||
"description": "碎片信息记录工具,AI自动生成标题",
|
||||
"git_repo": null,
|
||||
"version": "v1.0.0"
|
||||
},
|
||||
{
|
||||
"id": "param-hub",
|
||||
"name": "ParamHub Python",
|
||||
"type": "web",
|
||||
"ports": [19010],
|
||||
"directory": "works/param-hub-python",
|
||||
"start_cmd": "mkdir -p logs && nohup python3 app.py > logs/app.log 2>&1 & disown",
|
||||
"health_url": "http://localhost:19010/api/stats",
|
||||
"description": "AI大模型与硬件参数速查平台",
|
||||
"admin_url": "http://localhost:19010/admin",
|
||||
"git_repo": "http://192.168.2.8:12007/coder/param-hub-python",
|
||||
"version": "v1.2.0"
|
||||
},
|
||||
{
|
||||
"id": "ai-chat-system",
|
||||
"name": "AI对话系统",
|
||||
"type": "web",
|
||||
"ports": [19020],
|
||||
"directory": "works/ai-chat",
|
||||
"start_cmd": "mkdir -p logs && nohup python3 main_v2.py > logs/app.log 2>&1 & disown",
|
||||
"health_url": "http://localhost:19020/api/admin/stats",
|
||||
"description": "网页端和Matrix端实时同步的AI聊天系统",
|
||||
"admin_url": "http://localhost:19020/admin",
|
||||
"git_repo": "http://192.168.2.8:12007/coder/ai-chat-system",
|
||||
"version": "v2.5.4"
|
||||
},
|
||||
{
|
||||
"id": "product-crawler",
|
||||
"name": "产品参数爬取系统",
|
||||
"type": "web",
|
||||
"ports": [19011],
|
||||
"directory": "/home/xian/.openclaw/common/projects/product-crawler",
|
||||
"start_cmd": "mkdir -p logs && nohup python3 app.py > logs/app.log 2>&1 & disown",
|
||||
"health_url": "http://localhost:19011/api/products",
|
||||
"description": "自动从官网爬取产品参数信息",
|
||||
"admin_url": "http://localhost:19011/admin",
|
||||
"git_repo": "http://192.168.2.8:12007/coder/product-crawler",
|
||||
"version": "v2.0.0"
|
||||
},
|
||||
{
|
||||
"id": "llm-proxy",
|
||||
"name": "LLM Proxy",
|
||||
"type": "web",
|
||||
"ports": [19007],
|
||||
"directory": "/home/xian/.openclaw/common/projects/llm-proxy",
|
||||
"start_cmd": "mkdir -p logs && nohup python3 app.py > logs/app.log 2>&1 & disown",
|
||||
"health_url": "http://localhost:19007/health",
|
||||
"description": "大模型API中转系统,多提供商调度",
|
||||
"admin_url": "http://localhost:19007/admin",
|
||||
"git_repo": "http://192.168.2.8:12007/coder/llm-proxy",
|
||||
"admin_url": "http://localhost:16021/admin",
|
||||
"git_repo": "http://121.40.164.32:12007/coder/pdf-translate-web",
|
||||
"version": "v2.0.0"
|
||||
},
|
||||
{
|
||||
"id": "project-panel",
|
||||
"name": "项目服务管理面板",
|
||||
"type": "web",
|
||||
"ports": [19013],
|
||||
"ports": [16022],
|
||||
"directory": "works/project-panel",
|
||||
"start_cmd": "mkdir -p logs && nohup python3 app.py > logs/app.log 2>&1 & disown",
|
||||
"health_url": "http://localhost:19013/",
|
||||
"description": "统一管理所有Web服务项目",
|
||||
"admin_url": "http://localhost:19013",
|
||||
"git_repo": "http://192.168.2.8:12007/coder/project-panel",
|
||||
"version": "v1.0.1"
|
||||
},
|
||||
"start_cmd": "mkdir -p logs && nohup /home/hz1/miniconda3/envs/openclaw/bin/python3.12 app.py > logs/app.log 2>&1 & disown",
|
||||
"stop_cmd": "pkill -f 'python.*project-panel.*app.py' || true",
|
||||
"health_url": "http://localhost:16022/",
|
||||
"description": "统一管理所有 Web 服务项目,支持 Docker 监控、系统资源监控、Cron 管理",
|
||||
"admin_url": "http://localhost:16022",
|
||||
"git_repo": "http://121.40.164.32:12007/hz4th_coder/project-panel",
|
||||
"version": "v3.0.0"
|
||||
}
|
||||
],
|
||||
"external_services": [
|
||||
{
|
||||
"id": "web-context-extension",
|
||||
"name": "网页助手插件",
|
||||
"type": "extension",
|
||||
"directory": "works/web-context-extension",
|
||||
"description": "浏览器扩展,右键菜单支持收藏网页、AI总结",
|
||||
"git_repo": "http://192.168.2.8:12007/coder/web-context-extension",
|
||||
"version": "v0.1.0"
|
||||
},
|
||||
{
|
||||
"id": "service-monitor",
|
||||
"name": "Web服务监控",
|
||||
"type": "cron",
|
||||
"directory": "works/service-monitor",
|
||||
"cron": "*/20 * * * *",
|
||||
"cron_cmd": "/usr/bin/python3 /home/xian/.openclaw/workspace-coder/works/service-monitor/monitor.py",
|
||||
"description": "每20分钟检查服务状态,邮件通知",
|
||||
"git_repo": "http://192.168.2.8:12007/coder/service-monitor",
|
||||
"version": "v1.0.0"
|
||||
},
|
||||
{
|
||||
"id": "board-monitor",
|
||||
"name": "A股板块监控",
|
||||
"type": "cron",
|
||||
"directory": "works/board-monitor",
|
||||
"cron": "0 17 * * 1-5",
|
||||
"cron_cmd": "python3 board_monitor.py report",
|
||||
"description": "每个交易日17:00发送板块分析报告",
|
||||
"git_repo": "http://192.168.2.8:12007/coder/board-monitor",
|
||||
"version": "v1.3.0"
|
||||
},
|
||||
{
|
||||
"id": "stock-system",
|
||||
"name": "A股历史数据系统",
|
||||
"type": "cli",
|
||||
"directory": "/home/xian/.openclaw/common/stock_system",
|
||||
"run_cmd": "python3 fetch_history_v2.py",
|
||||
"description": "获取A股历史行情数据,支持断点续传",
|
||||
"git_repo": "http://192.168.2.8:12007/coder/stock_system",
|
||||
"version": "v0.2.0"
|
||||
},
|
||||
{
|
||||
"id": "pdf-translator",
|
||||
"name": "PDF翻译脚本",
|
||||
"type": "cli",
|
||||
"directory": "works/pdf-translator",
|
||||
"run_cmd": "python3 translate_pdf.py",
|
||||
"description": "命令行PDF翻译工具",
|
||||
"git_repo": null,
|
||||
"version": "v1.0.0"
|
||||
},
|
||||
{
|
||||
"id": "xian-favor",
|
||||
"name": "Xian Favor 收藏系统",
|
||||
"type": "web",
|
||||
"ports": [19014],
|
||||
"directory": "works/xian-favor",
|
||||
"start_cmd": "mkdir -p logs && nohup python3 -c \"from xian_favor.api import start_server; start_server(port=19014)\" > logs/app.log 2>&1 & disown",
|
||||
"health_url": "http://localhost:19014/api/items?limit=1",
|
||||
"description": "文本笔记、链接收藏、待办事项管理系统",
|
||||
"admin_url": "http://localhost:19014",
|
||||
"git_repo": "http://192.168.2.8:12007/coder/xian-favor",
|
||||
"version": "v3.5.0"
|
||||
},
|
||||
{
|
||||
"id": "multi-agent-bidding",
|
||||
"name": "多智能体竞标调度系统",
|
||||
"type": "web",
|
||||
"ports": [19015],
|
||||
"directory": "works/multi-agent-bidding",
|
||||
"start_cmd": "mkdir -p logs && nohup python3 -m app.app --port 19015 > logs/app.log 2>&1 & disown",
|
||||
"health_url": "http://localhost:19015/api/agents",
|
||||
"description": "基于竞标机制的多智能体任务调度系统",
|
||||
"admin_url": "http://localhost:19015",
|
||||
"git_repo": "http://192.168.2.8:12007/coder/multi-agent-bidding",
|
||||
"version": "v1.0.0"
|
||||
},
|
||||
{
|
||||
"id": "tech-forum",
|
||||
"name": "技术论坛",
|
||||
"type": "web",
|
||||
"ports": [19004],
|
||||
"directory": "/home/xian/.openclaw/common/projects/tech-forum",
|
||||
"start_cmd": "mkdir -p logs && nohup python3 backend/app.py > logs/app.log 2>&1 & disown",
|
||||
"health_url": "http://localhost:19004/api/health",
|
||||
"description": "技术交流、工具分享、问答讨论社区",
|
||||
"admin_url": "http://localhost:19004/admin",
|
||||
"git_repo": "http://192.168.2.8:12007/coder/tech-forum",
|
||||
"version": "v1.2.0"
|
||||
},
|
||||
{
|
||||
"id": "image-editor",
|
||||
"name": "图片编辑器",
|
||||
"type": "web",
|
||||
"ports": [19018],
|
||||
"directory": "works/image-editor",
|
||||
"start_cmd": "mkdir -p logs && nohup python3 app.py > logs/app.log 2>&1 & disown",
|
||||
"health_url": "http://localhost:19018/api/health",
|
||||
"description": "前端图片处理:合并、分割、挖孔、圆形切图、文字图片",
|
||||
"git_repo": "http://192.168.2.8:12007/coder/image-editor",
|
||||
"version": "v1.2.1"
|
||||
},
|
||||
{
|
||||
"id": "voice-chat-web",
|
||||
"name": "语音对话网页",
|
||||
"type": "web",
|
||||
"ports": [19019],
|
||||
"directory": "works/voice-chat-web",
|
||||
"start_cmd": "mkdir -p logs && MODEL_SERVICE_URL=http://192.168.2.5:12001 nohup python3 main.py > logs/server.log 2>&1 & disown",
|
||||
"health_url": "http://localhost:19019/api/status",
|
||||
"description": "基于Qwen2-Audio的语音交互网页,支持录音和文字对话",
|
||||
"git_repo": "http://192.168.2.8:12007/coder/voice-chat-web",
|
||||
"version": "v1.2.0"
|
||||
"id": "meilisearch",
|
||||
"name": "Meilisearch 搜索引擎",
|
||||
"type": "external",
|
||||
"ports": [16001],
|
||||
"health_url": "http://localhost:16001/health",
|
||||
"description": "高性能搜索引擎,只读监控"
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user