|
1 | 1 | # OpenAxe: Bitaxe Fleet Manager |
2 | 2 |
|
3 | | -**OpenAxe** is a lightweight, self-hosted dashboard designed for monitoring and managing a fleet of Bitaxe (AxeOS) and NerdAxe devices. It provides real-time hashrate aggregation, market data integration, and batch configuration tools. |
| 3 | +**OpenAxe** is a lightweight, self-hosted dashboard designed for monitoring and managing a fleet of Bitaxe (AxeOS) and NerdAxe devices. |
4 | 4 |
|
5 | 5 | ## 🚀 Features |
| 6 | +* **Network Scanner:** Discover Bitaxe devices on your LAN. |
| 7 | +* **Fleet Statistics:** Aggregated hashrate, power, and block data. |
| 8 | +* **Multi-Coin:** Support for **Bitcoin (BTC)** and **Bitcoin 2 (BC2)**. |
| 9 | +* **🔔 Notifications:** Integrated **Ntfy.sh** alerts for status changes. |
6 | 10 |
|
7 | | -* **Network Scanner:** Automatically discover Bitaxe devices on your LAN. |
8 | | -* **Fleet Statistics:** Real-time aggregation of hashrate, power consumption, total blocks found, and shares accepted. |
9 | | -* **Individual Miner Control:** Rename devices, update stratum settings, and manage overclocking (Frequency/Voltage) directly from the dashboard. |
10 | | -* **Multi-Coin Market Insights:** Live price and network difficulty tracking for **Bitcoin (BTC)**, **Bitcoin Cash (BCH)**, **DigiByte (DGB)**, **eCash (XEC)**, and **Bitcoin 2 (BC2)**. Data sourced via Mempool, Blockchair, Chainz, and Blockhunters. |
11 | | -* **🔔 Notification Engine:** Integrated **Ntfy.sh** alerts for miner offline events, block discovery, and successful tuning adjustments. |
12 | | -* **Persistence:** Miner configurations are saved to a local JSON database, ensuring your fleet remains organized after restarts. |
13 | | - |
14 | | -## ⌛ Coming Soon |
15 | | -* **Dual Pool Settings for NerdAxe Devices:** Add the ability to set your failover or dual pool settings in the web interface |
16 | | -* **Make a change? Do a Pull Request:** Add something to the web app? Submit a pull request! |
17 | | - |
18 | | ---- |
19 | | - |
20 | | -## 🛠️ Installation & Setup |
21 | | - |
22 | | -### Prerequisites |
23 | | -* Docker and Docker Compose |
24 | | -* Linux Host (Required for **Host Networking** to allow LAN scanning) |
25 | | - |
26 | | -### Quick Start |
27 | | -1. **Clone the repository:** |
28 | | - ```bash |
29 | | - git clone [https://github.com/cfultz/openaxe.git](https://github.com/cfultz/openaxe.git) |
30 | | - cd openaxe |
31 | | - ``` |
32 | | - |
33 | | -2. **Build and launch with Docker Compose:** |
34 | | - ```bash |
35 | | - docker-compose up -d --build |
36 | | - ``` |
37 | | - |
38 | | -3. **Access the Dashboard:** |
39 | | - Open your browser and navigate to `http://<your-host-ip>:5055` |
40 | | - |
41 | | ---- |
42 | | - |
43 | | -## 🐳 Docker Configuration |
44 | | - |
45 | | -OpenAxe utilizes **Host Networking** mode. This allows the internal `scanner.py` to communicate directly with your local subnet to find your miners. |
46 | | - |
47 | | -> **Note:** Port mapping (`-p 5055:5000`) is disabled in host mode. The application binds directly to port **5055** as defined in `app.py`. |
48 | | - |
49 | | -### Volume Persistence |
50 | | -Persist the app directory so settings aren't lost like custom miner names, changes to the app, etc. |
51 | | -```yaml |
52 | | - - ./:/app |
53 | | -
|
54 | | -``` |
55 | | -
|
56 | | -## 📂 Project Structure |
57 | | -
|
58 | | -The project follows a standard Flask application layout optimized for Docker containerization. |
59 | | -
|
60 | | -```text |
61 | | -openaxe/ |
62 | | -├── app.py # Main Flask server & background worker threads |
63 | | -├── scanner.py # Network scanning logic (ARP/ICMP/HTTP) |
64 | | -├── miners.json # Local JSON database for persistent miner data |
65 | | -├── requirements.txt # Python dependencies |
66 | | -├── Dockerfile # Container build instructions |
67 | | -├── docker-compose.yml # Docker service orchestration |
68 | | -├── static/ # Static assets |
69 | | -│ └── js/ |
70 | | -│ └── dashboard.js # Frontend API polling and UI logic |
71 | | -└── templates/ # HTML templates |
72 | | - └── dashboard.html # Main dashboard interface |
73 | | -
|
74 | | -``` |
| 11 | +## ☕ Support the Project |
| 12 | +If you find this tool useful, consider supporting the developer: |
| 13 | +* **Lightning:** caleb@getalby.com |
| 14 | +* **BTC:** bc1qj80p66d9fpg95e4e897933wcl56as7l5mqj6as |
| 15 | +* **BC2:** BCHvT1t9LpG1yS2v6X7A8b9C0d1E2f3G4h |
75 | 16 |
|
76 | 17 | --- |
77 | 18 |
|
78 | | -### API Reference |
79 | | -
|
80 | | -## 🔧 API Endpoints |
81 | | -
|
82 | | -All endpoints return JSON responses. |
83 | | -
|
84 | | -### Miner Management |
85 | | -
|
86 | | -| Endpoint | Method | Payload | Description | |
87 | | -| --- | --- | --- | --- | |
88 | | -| `/api/miners` | GET | None | Returns aggregated fleet stats, market data, and individual miner statuses. | |
89 | | -| `/api/scan` | POST | `{"subnet": "192.168.1.0/24"}` | Scans the specified subnet for Bitaxe/AxeOS devices. | |
90 | | -| `/api/miners/rename` | POST | `{"ip": "192.168.1.50", "name": "Neo"}` | Updates the local display name for a miner. | |
91 | | -| `/api/miners/delete` | POST | `{"ip": "192.168.1.50"}` | Removes a miner from the local database. | |
92 | | -
|
93 | | -### Device Control |
94 | | -
|
95 | | -| Endpoint | Method | Payload | Description | |
96 | | -| --- | --- | --- | --- | |
97 | | -| `/api/miners/pool` | POST | `{"ip": "...", "url": "...", "user": "..."}` | Updates stratum settings and restarts the device. | |
98 | | -| `/api/overclock` | POST | `{"ip": "...", "freq": 500, "volt": 1100}` | Adjusts frequency and voltage via AxeOS API. | |
99 | | -| `/api/reboot` | POST | `{"ip": "192.168.1.50"}` | Sends a hardware reboot command to the miner. | |
100 | | -
|
101 | | -### System & Notifications |
| 19 | +## 🛠️ Installation |
| 20 | +1. `git clone https://github.com/cfultz/openaxe.git` |
| 21 | +2. `cd openaxe` |
| 22 | +3. `docker-compose up -d --build` |
| 23 | +4. Access at `http://<your-host-ip>:5055` |
102 | 24 |
|
103 | | -| Endpoint | Method | Payload | Description | |
104 | | -| --- | --- | --- | --- | |
105 | | -| `/api/settings` | POST | `{"coin": "BTC", "currency": "USD", "ntfy_server": "...", "ntfy_topic": "..."}` | Updates global dashboard preferences and notification settings. | |
106 | | -| `/api/test_ntfy` | POST | None | Sends a test alert to the configured Ntfy server/topic. | |
107 | | -| `/api/system/reset` | POST | None | Clears all miners from `miners.json`. | |
| 25 | +## ⚖️ License |
| 26 | +This project is licensed under a **Modified MIT License**. |
| 27 | +Permission is hereby granted to use, copy, modify, and merge the software, provided that the **"Buy Me a Coffee" / Donation section** in the web interface and the README remain intact and visible. Removing or altering the developer's donation addresses is strictly prohibited under this license. |
0 commit comments