ndenissov/minager

GitHub: ndenissov/minager

Minager 是一个基于 Go 和 Telegram Bot API 的 ASIC 矿机远程监控与自动化管理中间件网关。

Stars: 1 | Forks: 0

# Minager [![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/ndenissov/minager)](https://github.com/ndenissov/minager) [![Go Reference](https://pkg.go.dev/badge/github.com/ndenissov/minager.svg)](https://pkg.go.dev/github.com/ndenissov/minager) [![License](https://img.shields.io/github/license/ndenissov/minager)](https://github.com/ndenissov/minager/blob/main/LICENSE) [![GitHub downloads](https://img.shields.io/github/downloads/ndenissov/minager/total)](https://github.com/ndenissov/minager/releases) [![GitHub stars](https://img.shields.io/github/stars/ndenissov/minager)](https://github.com/ndenissov/minager/stargazers) Minager 是一个高性能软件套件,可通过 Telegram Bot API 对 ASIC 硬件进行远程监控、管理和自动化。 该系统并非作为一个简单的前端运行,而是作为 middleware 网关。它将未公开的 硬件接口转换为结构化格式,为硬件控制和关键的 自动报警提供可靠、安全的通道。 ## 目录 - [系统功能](#system-capabilities) - [架构与性能](#architecture--performance) - [逆向工程与硬件集成](#reverse-engineering--hardware-integration) - [用户界面](#user-interface) - [安全与隐私](#security--privacy) - [快速开始](#getting-started) - [法律声明与合规](#legal-disclaimer--compliance) - [许可与协作](#licensing--collaboration) ## 系统功能 * **双语界面 (I18n):** 系统完全支持英语和俄语。本地化设置 按用户会话动态解析。 * **原生 UI 集成:** 利用 Telegram 内联键盘构建多级配置菜单。操作员 可以在原生聊天界面内直接切换矿池、调整电源模式以及控制风扇算法。 * **异步报警:** 后台 worker 积极监控芯片状态、hash rates 和温度。 软件可以自动将有故障的硬件转换为睡眠模式,并立即通知操作员。 * **WebSocket 多路复用:** 包含自定义的 WebSocket 实现,利用二进制序列化(`gob` + `json`) 在本地硬件代理和中央服务器之间建立安全的通信通道。 ## 架构与性能 软件架构专为高负载环境设计,优先考虑最小的内存占用和极高的 执行速度。 * **内存优化:** 字符串格式化、日志生成和文本 payload 渲染通过围绕 `strings.Builder` 并带有预分配缓冲容量的自定义包装器进行处理。这极大地最小化了内存分配开销 和垃圾回收压力。 * **并发:** 硬件轮询使用 Go 并发原语(`sync.WaitGroup`、 `sync.RWMutex` 和 channels)进行严格管理。这消除了在跨 多个网络设备同时进行异步查询时的竞态条件。 * **网络效率:** 网络操作通过 `fasthttp` 库处理,实现高吞吐量的请求和 响应处理。 * **数据库集成:** 利用 PostgreSQL 连接池来存储和快速检索缓存的报警 阈值和用户配置。 ## 逆向工程与硬件集成 与特定 ASIC 硬件架构(如 Antminer 系列)的集成需要以下工程 工作: 1. **文档分析:** 对原始制造商规格说明书进行翻译和技术分析。 2. **固件逆向工程:** 分析硬件启动 pipeline、内部网络数据包结构以及 专有的 `.bmu` 固件文件。 3. **API Schema 重构:** 对未公开、历史上不稳定的 CGI 接口进行广泛的映射。开发了 强类型的 API 客户端(`pkg/antminer/cgi`),将原始、杂乱的设备输出转换为可预测的 JSON 结构,以便进行程序化评估。 ## 用户界面 UI 旨在在原生 Telegram 环境内清晰紧凑地呈现密集的分析数据。
Monitoring Dashboard Configuration Menu Alert System

Displays aggregate hash rate, PCB temperatures, voltage, and uptime. Sensitive data is securely blurred.

Interactive Inline Keyboard for switching mining pools, modifying chip frequency levels, and configuring fan PWM.

Menu for setting specific temperature limits and permissible hash rate deviation thresholds.
#### 自动通知 后台 worker 会在出现孤立的 hash rate 下降、过热事件或组合系统故障时立即触发警报。

View Detailed Diagnostics Dashboard (Click to expand)

Extended statistics output showing granular chip-level diagnostics, hardware errors, and performance metrics for individual hash boards.


## 安全与隐私 Minager 处理敏感的基础设施数据,包括私有 IP 地址、网络拓扑和矿池 凭据。安全控制措施包括: * **数据保护:** Telegram bot 对其消息严格应用 `ProtectContent` 标志。这会在 客户端禁用包含硬件配置的聊天的消息转发、文本复制和操作系统级别的屏幕截图。 * **身份验证:** 对内部 Web 服务器和 WebSocket endpoint 的访问受到限制。密码 在数据库中仅以安全的 `bcrypt` hash 存储。 * **加密传输:** 原生提供 TLS/SSL 支持,用于安全的 Webhook 隧道和代理与服务器之间的 通信。 ## 快速开始 后端基础设施由 PostgreSQL 数据库、Telegram bot 进程和 WebSocket 子系统组成。 ### 前置条件 * Go 1.25.0+ * PostgreSQL 12+ * OpenSSL(用于本地生成证书) * ngrok 账号(可选,用于本地开发期间的 Webhook 隧道) ### 环境配置 1. 克隆仓库: git clone https://github.com/ndenissov/minager.git cd minager 2. 生成自签名 SSL 证书(内部服务器和/或 Telegram Webhook 需要): openssl req -newkey rsa:2048 -nodes -keyout cert.key -x509 -days 365 -out cert.crt 3. 在项目根目录创建 `.env` 配置文件: TOKEN=your_telegram_bot_token NGROK_AUTHTOKEN=your_ngrok_token DB_HOST=localhost DB_PORT=5432 DB_USER=postgres DB_PASSWORD=secret DB_NAME=minager DB_SSLMODE=disable 4. 配置数据库,创建目标数据库并应用 `user`、 `cgi` 和 `alert` 表所需的 schema 迁移。 ### 启动 项目可以通过长轮询(不建议用于生产环境)、标准 Webhook 或通过 `ngrok` 运行。 使用 ngrok 的示例(适用于缺乏静态 IP 的开发环境): ``` go build -o minager_bot ./cmd/minager_bot/... ./minager_bot -wh-ngrok -wh-address ":8080" ``` ## 法律声明与合规 本软件按“原样”分发,不提供任何明示或暗示的保证。对于因 使用本软件造成的硬件损坏、运营中断或经济损失,开发者不承担任何责任。 终端用户需自行确保其对本软件的操作符合所有适用的本地及 国际法律。这包括但不限于其司法管辖区内管辖加密货币挖矿、数字资产 流通、税收、海关和出口管制的法律。 此仓库代表了一个庞大的、具有商业可用性的代码库向公共领域的过渡。 鉴于其促进的硬件操作在法律上具有复杂性、受到严格监管且性质敏感,严格遵守 所适用的许可证是绝对的法律要求。 任何未经授权的商业利用、知识产权的盗用、版权声明的移除,或 对所适用许可条款的违规行为都是零容忍的。作者将积极监控未经授权的使用,并 将在法律允许的最大范围内寻求所有可用的法律救济。这包括但不限于 立即停止并终止令、寻求禁令救济,以及对侵权个人或企业实体积极地提出 财务损害赔偿要求。如果您只是一位普通的开发者或其他用户,并且出于善意使用本项目,我向您保证 您绝对没有什么可怕的。 ## 许可与协作 软件的使用和分发受仓库适用的特定许可条款管辖。**许可 条款如有更改,恕不另行通知**。在您使用时,发布在本仓库根目录 `LICENSE` 文件中的版本 决定了适用的法律条款。 如需进行 B2B 集成、获取独占的商业许可,或确认您预期的用例是否符合 当前的限制,请通过以下方式联系作者: * **电子邮件:** n.denissov@proton.me * 或者,在任何其他情况下,您可以在此仓库中创建与您请求相对应的 Issue。 ## 贡献 欢迎随时提出建议、pull request、bug 修复和 bug 报告。对本项目的任何贡献,都将 在项目文档的相应部分予以正式提及。
标签:ASIC监控, EVTX分析, Go语言, Telegram机器人, 挖矿管理, 日志审计, 测试用例, 物联网中间件, 程序破解, 自动化运维