Files
AetherForge/README.md
drjones 6241dfd556 Make built exe a one-run Windows installer pointing at LAN dashboard.
Install copies miner to AppData, registers autostart, relaunches silently, and builder defaults server URL to local IP.
2026-05-26 22:52:47 -07:00

156 lines
4.9 KiB
Markdown

# Private Miner Command Deck
Private Monero (XMR) fleet control server for your own network. Run the control server on one Windows machine, configure pool/wallet/defaults in the web dashboard, build per-machine worker `.exe` files, and deploy them across your LAN.
## Quick Start
1. Install [Go 1.21+](https://go.dev/dl/) and [Node.js 20+](https://nodejs.org/) (or let `run.bat` install them).
2. Double-click **`run.bat`** on your control PC.
3. Open **http://YOUR-LOCAL-IP:8989** (shown when the server starts).
4. Go to **Settings** and set your wallet + pool.
5. Go to **Miner Builder**, enter a worker name, click **Build Installer .exe**.
6. Copy `install-{worker}.exe` to each Windows machine on your LAN and **run it once**.
Each installer:
- Copies the miner to `%LOCALAPPDATA%\CryptoMiner\{worker}-{build}\miner.exe`
- Registers Windows auto-start (and optional scheduled task)
- Connects back to your dashboard at your **LAN IP:8989**
- Appears on the **Agents** and **Dashboard** pages automatically
## End Result
| Piece | What it does |
|-------|----------------|
| Control PC | Runs the web dashboard on local IP + port **8989** |
| Dashboard | Configure pool/wallet/defaults, build installers, track all miners |
| `install-{name}.exe` | Single file you run once on each worker PC to install + start mining |
| Component | Purpose |
|-----------|---------|
| `server/` | Go control server (REST API, WebSocket hub, pool proxy, builder) |
| `server/web/` | React dashboard (Dashboard, Agents, Builder, Settings) |
| `agent/` | Windows worker source compiled on demand by the builder |
| `data/` | SQLite DB, config, build output, logs |
| `run.bat` | One-click build + launch script |
## Workflow
```
Settings (dashboard)
-> data/config.json
Miner Builder (dashboard)
-> POST /api/v1/builder/build
-> compiles agent/ with baked-in config/builtin.go
-> writes data/builds/{build-id}/xmr-worker-{name}.exe
Worker .exe (target PC)
-> WebSocket ws://your-server:8989/ws/agent
-> receives jobs, mines with RandomX, submits shares
Control server
-> Stratum proxy to your configured pool
-> aggregates stats in dashboard
```
## Configuration
All server settings are edited in the dashboard **Settings** page and saved to:
```
data/config.json
```
The **Miner Builder** loads those values as defaults. Per-worker overrides (name, threads, silent mode, etc.) are baked into each `.exe` at compile time.
### Built worker settings
Each generated agent includes:
- Server URL
- Wallet address
- Pool host/port/TLS/password
- Thread count, CPU priority, mining mode
- Max CPU %, minimum free RAM
- Idle/scheduled mining windows
- Silent mode, auto-start, run-as mode
## Build Output Location
After a successful build, the dashboard shows:
- **Absolute path** — full Windows path to the `.exe`
- **Relative path** — path from the project root
- **Download link** — `/api/v1/builds/{id}/download`
Example:
```
G:\crypto miner\data\builds\abc123...\xmr-worker-office-pc-1.exe
```
## API Endpoints
| Method | Path | Description |
|--------|------|-------------|
| GET | `/api/v1/health` | Health check |
| GET/PUT | `/api/v1/config` | Server settings |
| POST | `/api/v1/builder/build` | Build worker `.exe` (returns JSON with file path) |
| GET | `/api/v1/builds` | List recent builds |
| GET | `/api/v1/builds/{id}/download` | Download a built `.exe` |
| GET | `/api/v1/agents` | List connected workers |
| GET | `/api/v1/dashboard/stats` | Fleet stats |
| WS | `/ws/agent` | Worker connection |
| WS | `/ws/dashboard` | Live dashboard updates |
## Manual Commands
```bat
cd server
go build -o ..\bin\miner-server.exe .
cd server\web
npm install
npm run build
cd agent
go build -o xmr-worker-test.exe .
```
Run server manually:
```bat
bin\miner-server.exe -port 8989 -data .\data
```
## Network Deployment
- **Same LAN:** set Server URL in Builder to `http://YOUR-PC-IP:8989`
- **Remote access:** put the server behind Cloudflare Tunnel or similar and use your HTTPS domain as Server URL (`https://pool.example.com`)
Workers convert `http(s)://...` to `ws(s)://.../ws/agent` automatically.
## Data Files
| Path | Contents |
|------|----------|
| `data/miner.db` | Agents, shares, hashrate history, build records |
| `data/config.json` | Server + default agent settings |
| `data/builds/` | Generated worker executables |
| `data/logs/` | Server logs (if enabled) |
## Security Notes
- This project is intended for **your own machines on your own network**.
- Windows Defender may flag freshly compiled mining executables. Code-signing and Defender exclusions on managed machines are the legitimate mitigation paths.
- Do not expose the dashboard to the public internet without authentication.
## Requirements
- Windows 10/11 (control server and workers)
- Go 1.21+
- Node.js 20+ (for dashboard build only)
- Outbound internet to your chosen Monero pool
## License
Private use. Monero mining uses the RandomX algorithm (BSD-3-Clause) via `git.gammaspectra.live/P2Pool/go-randomx`.