一个基于 Web 的智能化服务器运维管理平台,支持 SSH 终端连接、命令执行、AI 智能助手、系统监控、文件管理、自动化任务和批量操作等功能。采用 Cyber-Neo 赛博朋克风格 UI 设计,提供科技感十足的操作体验。
| 功能模块 |
描述 |
| SSH 终端 |
基于 WebSocket 的实时终端连接,支持 xterm.js,切换标签保持连接不中断 |
| 命令执行 |
快捷命令按钮、历史记录、执行耗时显示,支持批量多服务器并行执行 |
| AI 智能助手 |
自然语言转命令、流式输出、命令一键执行,兼容 OpenAI 接口协议 |
| 系统监控 |
CPU、内存、磁盘、负载、进程、服务、网络实时监控,ECharts 可视化图表 |
| Docker 管理 |
容器列表查看、启动/停止/重启/日志操作 |
| 文件管理 |
面包屑导航、文件上传下载、在线编辑保存 |
| 任务中心 |
预设任务模板(健康检查、部署、清理等)+ 自定义任务创建 |
| 审计日志 |
完整的命令执行历史记录 |
- Cyber-Neo 赛博朋克主题:深色背景、霓虹光效、科技感字体
- 全中文界面:所有按钮、标签、提示均为中文
- 响应式布局:适配不同屏幕尺寸
- 标签页切换:终端/命令/AI/监控/文件/任务/日志,切换不丢失连接
| 技术 |
版本 |
用途 |
| Python |
3.10+ |
运行环境 |
| FastAPI |
>=0.100.0 |
Web 框架 |
| Uvicorn |
>=0.20.0 |
ASGI 服务器 |
| Paramiko |
>=3.0.0 |
SSH 命令执行、SFTP 文件传输 |
| asyncssh |
>=2.14.0 |
异步 SSH WebSocket 终端 |
| SQLite |
内置 |
数据持久化 |
| OpenAI SDK |
>=1.0.0 |
AI 对话引擎 |
| 技术 |
用途 |
| React 18 |
UI 框架(CDN 加载) |
| HTM |
JSX 替代方案(Tagged Template Literals) |
| xterm.js |
浏览器终端模拟器 |
| ECharts |
数据可视化图表 |
| Day.js |
日期时间处理 |
ai-server-manager/
├── backend/ # 后端代码
│ ├── main.py # FastAPI 主入口,API 路由
│ ├── models.py # Pydantic 数据模型
│ ├── database.py # SQLite 数据库操作
│ ├── ssh_executor.py # SSH 连接池与命令执行
│ ├── terminal_ws.py # WebSocket 终端核心
│ ├── ai_engine.py # AI 对话引擎
│ ├── task_engine.py # 任务模板与执行引擎
│ ├── file_transfer.py # SFTP 文件传输
│ ├── monitor_parser.py # 系统监控数据解析
│ ├── config.py # 配置管理
│ ├── requirements.txt # Python 依赖
│ └── config.json # 运行时配置(自动创建)
├── frontend/ # 前端代码
│ ├── index.html # 主页面(单文件应用)
│ └── vendor/ # 第三方库(本地加载)
│ ├── react.js
│ ├── react-dom.js
│ ├── htm.js
│ ├── xterm.js
│ ├── xterm-addon-fit.js
│ ├── xterm-addon-web-links.js
│ ├── xterm.css
│ ├── echarts.js
│ ├── dayjs.js
│ └── antd.js
├── data/ # 数据目录
│ └── servers.db # SQLite 数据库
├── run.py # 启动脚本
└── README.md # 本文件
- Python 3.10 或更高版本
- pip 包管理器
- 克隆项目
git clone <repository-url>
cd ai-server-manager
- 安装依赖
cd backend
pip install -r requirements.txt
- 启动服务
# 方式一:使用启动脚本(推荐)
cd ..
python run.py
# 方式二:直接启动(开发模式)
cd backend
python main.py
- 访问系统
打开浏览器访问 http://localhost:8765(或 http://localhost:8000)
-
点击"添加服务器"按钮,输入服务器信息:
- 名称:服务器别名
- 主机:IP 地址或域名
- 端口:SSH 端口(默认 22)
- 用户名:SSH 登录账号
- 密码:SSH 登录密码(或选择密钥认证)
-
(可选)配置 AI 助手:
- 切换到"AI"标签页
- 点击"AI 设置"按钮
- 填写 API 地址、API 密钥和模型名称
- 支持任何兼容 OpenAI 接口协议的 API
| 方法 |
路径 |
描述 |
| GET |
/api/servers |
列出所有服务器 |
| POST |
/api/servers |
创建服务器 |
| GET |
/api/servers/{id} |
获取服务器详情 |
| PUT |
/api/servers/{id} |
更新服务器 |
| DELETE |
/api/servers/{id} |
删除服务器 |
| POST |
/api/servers/{id}/test |
测试连接 |
| GET |
/api/groups |
获取分组列表 |
| 方法 |
路径 |
描述 |
| POST |
/api/execute |
执行单条命令 |
| POST |
/api/execute/batch |
批量执行命令 |
| GET |
/api/history |
执行历史记录 |
| 方法 |
路径 |
描述 |
| POST |
/api/files/upload |
上传文件 |
| POST |
/api/files/download |
下载文件 |
| POST |
/api/files/list |
列出目录 |
| POST |
/api/files/read |
读取文件内容 |
| POST |
/api/files/save |
保存文件内容 |
| 方法 |
路径 |
描述 |
| GET |
/api/monitor/{server_id} |
获取系统监控数据 |
| GET |
/api/monitor/{server_id}/docker |
获取 Docker 容器列表 |
| POST |
/api/monitor/{server_id}/docker/{action} |
Docker 操作(stop/start/restart/logs) |
| 方法 |
路径 |
描述 |
| POST |
/api/ai/chat |
AI 对话(流式 SSE) |
| GET |
/api/ai/config |
获取 AI 配置 |
| PUT |
/api/ai/config |
更新 AI 配置 |
| 方法 |
路径 |
描述 |
| GET |
/api/tasks/templates |
获取任务模板列表 |
| POST |
/api/tasks/execute |
执行任务 |
| POST |
/api/tasks/custom |
创建自定义任务 |
| GET |
/api/tasks/custom |
列出自定义任务 |
| PUT |
/api/tasks/custom/{id} |
更新自定义任务 |
| DELETE |
/api/tasks/custom/{id} |
删除自定义任务 |
| 路径 |
描述 |
/ws/terminal/{server_id} |
实时 SSH 终端连接 |
| 字段 |
类型 |
说明 |
| id |
TEXT PRIMARY KEY |
唯一标识 |
| name |
TEXT NOT NULL |
服务器名称 |
| host |
TEXT NOT NULL |
主机地址 |
| port |
INTEGER DEFAULT 22 |
SSH 端口 |
| username |
TEXT NOT NULL |
登录用户名 |
| auth_type |
TEXT DEFAULT 'password' |
认证方式(password/key) |
| password |
TEXT |
密码(加密存储) |
| private_key_path |
TEXT |
私钥路径 |
| passphrase |
TEXT |
私钥密码 |
| group_name |
TEXT |
分组名称 |
| tags |
TEXT |
标签(JSON 数组) |
| description |
TEXT |
描述 |
| status |
TEXT DEFAULT 'unknown' |
状态 |
| last_check |
TEXT |
最后检查时间 |
| created_at |
TEXT |
创建时间 |
| updated_at |
TEXT |
更新时间 |
| 字段 |
类型 |
说明 |
| id |
TEXT PRIMARY KEY |
唯一标识 |
| server_id |
TEXT NOT NULL |
服务器 ID |
| server_name |
TEXT |
服务器名称 |
| command |
TEXT NOT NULL |
执行的命令 |
| exit_code |
INTEGER |
退出码 |
| stdout |
TEXT |
标准输出 |
| stderr |
TEXT |
标准错误 |
| executed_at |
TEXT |
执行时间 |
| duration_ms |
INTEGER |
执行耗时(毫秒) |
| source |
TEXT DEFAULT 'web' |
来源 |
| 字段 |
类型 |
说明 |
| id |
TEXT PRIMARY KEY |
唯一标识 |
| name |
TEXT NOT NULL |
任务名称 |
| description |
TEXT |
任务描述 |
| icon |
TEXT DEFAULT '📋' |
任务图标 |
| steps |
TEXT NOT NULL |
执行步骤(JSON 数组) |
| created_at |
TEXT |
创建时间 |
| updated_at |
TEXT |
更新时间 |
系统配置文件位于 backend/config.json,首次启动自动创建。
{
"server": {
"host": "0.0.0.0",
"port": 8765
},
"ai": {
"provider": "openai_compatible",
"api_url": "https://api.openai.com/v1/chat/completions",
"api_key": "",
"model": "gpt-4o",
"max_tokens": 4096,
"temperature": 0.3
},
"security": {
"command_blacklist": [
"^rm\\s+-rf\\s+/",
"^mkfs",
"^dd\\s+if=",
"^shutdown",
"^reboot"
],
"command_whitelist": [],
"require_confirm": true
}
}
| 配置项 |
说明 |
默认值 |
server.host |
服务监听地址 |
0.0.0.0 |
server.port |
服务监听端口 |
8765 |
ai.api_url |
AI API 地址 |
OpenAI 官方地址 |
ai.api_key |
AI API 密钥 |
空 |
ai.model |
AI 模型名称 |
gpt-4o |
ai.max_tokens |
最大 token 数 |
4096 |
ai.temperature |
温度参数 |
0.3 |
security.command_blacklist |
命令黑名单(正则表达式) |
见上方 |
security.require_confirm |
危险命令是否需要确认 |
true |
系统内置以下预设任务模板,用户可以直接执行或基于它们创建自定义任务:
| 任务名称 |
图标 |
描述 |
步骤 |
| 系统健康检查 |
🏥 |
检查CPU、内存、磁盘、服务状态 |
系统信息、磁盘使用、内存使用、系统负载、运行服务 |
| 应用部署 |
🚀 |
拉取代码、构建、重启服务 |
拉取代码、安装依赖、构建项目、重启服务 |
| 日志清理 |
🧹 |
清理7天前的日志文件 |
查看日志大小、清理旧日志、清理后大小 |
| Docker 清理 |
🐳 |
清理未使用的镜像和容器 |
查看磁盘使用、清理未使用资源、清理后磁盘使用 |
| 数据库备份 |
💾 |
备份MySQL/PostgreSQL数据库 |
检查服务、创建备份目录、执行备份、查看备份文件 |
- 添加服务器:点击右上角"+ 添加服务器"按钮,填写连接信息
- 测试连接:添加后可点击"测试连接"验证 SSH 连通性
- 分组管理:服务器支持按分组归类,左侧边栏可折叠展开
- 批量操作:点击"批量操作"按钮,可同时选择多台服务器执行相同命令
- 选择服务器后,点击"终端"标签
- 系统自动建立 WebSocket 连接
- 支持完整的终端交互,包括 vim、top 等交互式程序
- 切换其他标签页后返回,终端连接保持不中断
- 切换到"AI"标签页
- 首次使用需要配置 AI API(点击"AI 设置")
- 输入自然语言描述,AI 会生成对应的 Linux 命令
- 生成的命令可一键复制或直接执行
- 切换到"任务"标签页
- 执行预设任务:点击任务卡片的"执行"按钮,确认后执行
- 创建自定义任务:点击"+ 创建任务"按钮,填写任务名称、描述、图标和执行步骤
- 编辑任务:点击"编辑"按钮,预设任务会保存为自定义副本
- 删除任务:仅自定义任务可删除
- 切换到"文件"标签页
- 浏览远程服务器文件系统(面包屑导航)
- 支持文件上传、下载、在线编辑保存
- 切换到"监控"标签页
- 实时查看 CPU、内存、磁盘、负载、进程、服务、网络状态
- Docker 容器管理:查看容器列表,进行启动/停止/重启/查看日志操作
- 密码使用明文存储在本地 SQLite 数据库中(生产环境建议加密)
- 支持命令黑名单,可配置危险命令拦截规则
- 危险命令执行前需要用户确认
- 建议在内网环境使用,或配置 HTTPS 和访问控制
MIT License
欢迎提交 Issue 和 Pull Request。在提交代码前,请确保:
- 代码符合项目现有风格
- 新功能附带必要的测试
- 更新相关文档
如有问题或建议,欢迎通过以下方式联系:
注意:本项目为个人/小团队运维工具,建议在内网环境使用。如需在生产环境部署,请配置 HTTPS、访问控制和密码加密等安全措施。