logo
0
0
WeChat Login
✨feat: 完成 Web 管理界面集成

minit Web 管理界面

minit 现在支持基于Web的管理界面,提供直观的进程管理和实时监控功能。

🌟 功能特性

核心功能

  • 进程管理: 可视化查看、创建、编辑和删除进程配置
  • 实时监控: 基于SSE的实时状态更新和事件流
  • 配置管理: 基于YAML的纯文件配置,支持热重载
  • 日志查看: 进程日志的实时查看(开发中)
  • 跨平台: 支持 Linux、Windows、macOS

技术特性

  • 轻量级: 仅增加约800KB二进制大小,<20MB内存占用
  • 零数据库: 纯YAML文件存储,与CLI完全兼容
  • 现代UI: 使用Alpine.js + TailwindCSS,响应式设计
  • 安全设计: 默认本地绑定,可选HTTP基础认证

🚀 快速开始

1. 启动Web界面

# 使用默认配置(推荐用于开发) MINIT_WEB_ENABLED=true ./minit # 或指定自定义配置 MINIT_WEB_HOST=0.0.0.0 MINIT_WEB_PORT=9090 ./minit

2. 访问Web界面

打开浏览器访问: http://127.0.0.1:8080

⚙️ 配置选项

环境变量配置

变量名默认值说明
MINIT_WEB_ENABLEDtrue启用/禁用Web界面
MINIT_WEB_HOST127.0.0.1Web服务绑定地址
MINIT_WEB_PORT8080Web服务端口
MINIT_WEB_AUTHfalse启用HTTP基础认证
MINIT_WEB_USERadmin认证用户名
MINIT_WEB_PASS""认证密码

安全配置示例

# 生产环境推荐配置 export MINIT_WEB_ENABLED=true export MINIT_WEB_HOST=127.0.0.1 # 仅本地访问 export MINIT_WEB_PORT=8080 export MINIT_WEB_AUTH=true # 启用认证 export MINIT_WEB_USER=admin export MINIT_WEB_PASS=your-secure-password ./minit

🎯 使用指南

进程管理

  1. 查看进程列表

    • Web界面自动显示所有配置的进程
    • 显示进程名称、类型、组、状态等信息
  2. 创建新进程

    • 点击"创建进程"按钮
    • 填写进程名称、类型(daemon/once/cron)、命令
    • 系统自动创建对应的YAML配置文件
  3. 进程控制

    • ▶️ 启动进程
    • ⏹️ 停止进程
    • 🔄 重启进程
    • 📋 查看日志(开发中)

实时监控

  • 事件流: 实时显示进程状态变化、配置更新等事件
  • 系统状态: 监控进程数量、SSE连接数、事件订阅数
  • 连接状态: 页面右上角显示与服务器的连接状态

配置管理

  • 热重载: 支持运行时重新加载配置文件
  • YAML编辑: 支持通过Web界面直接编辑进程配置
  • 文件同步: Web界面的修改直接保存为YAML文件

🔌 API 接口

minit Web界面提供完整的RESTful API:

进程管理API

# 获取进程列表 GET /api/v1/processes # 获取单个进程信息 GET /api/v1/processes/{name} # 创建进程 POST /api/v1/processes Content-Type: application/json { "name": "my-service", "kind": "daemon", "command": ["/usr/bin/my-service"], "env": {"LOG_LEVEL": "info"} } # 更新进程配置 PUT /api/v1/processes/{name} # 删除进程 DELETE /api/v1/processes/{name} # 进程控制操作 POST /api/v1/processes/{name}/action Content-Type: application/json { "action": "start" // start, stop, restart }

配置管理API

# 获取全局配置 GET /api/v1/config # 重载配置文件 POST /api/v1/config

实时事件API

# SSE事件流 GET /api/v1/events Accept: text/event-stream

监控API

# 健康检查 GET /health

🛠️ 开发和测试

测试Web功能

# 使用提供的测试脚本 ./test-web-ui.sh # 或手动测试 export MINIT_UNIT_DIR="./test-config" export MINIT_WEB_ENABLED=true ./bin/minit

API测试示例

# 健康检查 curl http://127.0.0.1:8080/health # 获取进程列表 curl http://127.0.0.1:8080/api/v1/processes # 创建测试进程 curl -X POST http://127.0.0.1:8080/api/v1/processes \ -H "Content-Type: application/json" \ -d '{ "name": "test-echo", "kind": "daemon", "command": ["/bin/echo", "Hello World"] }' # SSE事件流测试 curl -N http://127.0.0.1:8080/api/v1/events

🔧 故障排除

常见问题

  1. Web界面无法访问

    • 检查 MINIT_WEB_ENABLED=true 是否设置
    • 验证端口是否被其他服务占用
    • 查看minit日志中的Web服务启动信息
  2. 认证失败

    • 确认 MINIT_WEB_AUTH=true 时已设置密码
    • 检查用户名密码是否正确
  3. SSE连接问题

    • 确认浏览器支持EventSource
    • 检查防火墙/代理设置
    • 查看浏览器开发者工具的网络标签

日志调试

# 启用详细日志 MINIT_LOG_LEVEL=debug ./minit # Web相关日志会以 [WEB] 前缀显示

🏗️ 架构设计

技术栈

  • 后端: Go 1.23 + gorilla/mux
  • 前端: Alpine.js + TailwindCSS
  • 实时通信: Server-Sent Events (SSE)
  • 数据存储: YAML 文件
  • 模板引擎: Go html/template

核心组件

  • Web引擎: 管理Web服务的生命周期
  • 事件总线: 处理实时事件分发
  • 配置管理器: YAML文件的读写操作
  • SSE Hub: 管理SSE客户端连接

🗺️ 发展路线图

已完成 ✅

  • 基础Web框架搭建
  • 进程CRUD操作
  • 实时事件流
  • 响应式用户界面
  • 跨平台支持

开发中 🚧

  • 实时日志查看
  • 批量操作功能
  • 配置模板系统

计划中 📋

  • 用户权限管理
  • 操作审计日志
  • 性能监控面板
  • API文档生成
  • Docker容器支持

🤝 贡献指南

欢迎贡献代码和建议!Web界面相关的代码主要位于:

  • pkg/mweb/ - Web服务核心代码
  • pkg/mweb/static/ - 前端静态资源
  • pkg/mweb/templates/ - HTML模板
  • main.go, main_windows.go - Web服务集成

📄 许可证

本项目遵循与minit主项目相同的许可证。


享受使用minit Web管理界面! 🎉