2.6 KiB
2.6 KiB
局域网机器管理后台 — 实现计划
技术选型
| 层 | 技术 |
|---|---|
| 后端 | Go + Gin |
| 前端 | Vue 3 + Vite + Element Plus + AntV G6 |
| 数据库 | SQLite (modernc.org/sqlite,纯 Go,无需 CGO) |
| 认证 | 预设用户名密码 + Session/Cookie |
| SSH | golang.org/x/crypto/ssh(仅密码认证) |
| Ping | golang.org/x/net/icmp + 系统 /bin/ping 命令回退 |
项目结构
lan-manager/
├── server/
│ ├── main.go # 入口
│ ├── config/ # 配置管理(支持配置文件 + 环境变量)
│ ├── models/ # 数据模型
│ ├── db/ # 数据库 + migration
│ ├── handlers/ # HTTP handlers
│ ├── services/ # 业务逻辑 (auth, ping, ssh, import/export)
│ └── middleware/ # CORS, 认证, 日志
├── web/ # Vue 前端
│ └── src/
├── scripts/
│ └── lan-manager.service # Systemd 服务示例
├── go.mod
├── go.sum
├── Makefile
└── README.md
实施步骤
Phase 1: 后端基础
- 初始化 Go 项目 + 依赖(Gin, modernc.org/sqlite, crypto/ssh)
- 配置管理:支持配置文件 + 环境变量(HOST/PORT/DB_PATH/ADMIN_USER/ADMIN_PASS 等)
- SQLite 数据库 + 表创建(含 machines 扩展字段 cpu_info/memory_info/disk_info/uptime/listen_ports/ssh_synced_at)
- 数据模型定义
- 基础 CRUD API (machines, services, relationships)
- 认证模块:登录/登出/Session 中间件,区分访客和管理员权限
Phase 2: 核心业务
- Ping 定时检测服务(1 分钟间隔),Linux 上优先使用系统 ping 命令,避免权限问题
- SSH 系统信息获取(仅密码认证,不保存凭据,单次有效),结果支持同步到机器记录
- 操作日志中间件(记录增删改,含用户名)
- 导入/导出 API(JSON 格式)
- 健康检查接口
/api/health
Phase 3: 前端
- Vue 3 项目初始化 + Element Plus + 路由(Vue Router)
- 登录页面
- 机器列表页(访客:脱敏显示 IP/MAC/备注/关系)
- 机器详情页(访客:隐藏敏感字段和 SSH 入口;管理员:完整功能)
- 拓扑图页(AntV G6,仅管理员可访问)
- 操作日志页(仅管理员)
- 导入/导出功能(仅管理员)
Phase 4: 整合与部署
- Go embed 打包前端静态文件 + 支持外置
WEB_STATIC_PATH - 编写 Makefile(含 Linux amd64 交叉编译)
- 编写 Systemd 服务示例脚本
- 测试 + 修复
- README 编写(含 Linux 部署说明)