A modern, real-time monitoring dashboard for Bitaxe mining devices built with Vue.js 3, Express.js, and Docker.
- Real-time Monitoring: Live data from multiple Bitaxe devices
- Modern UI: Dark theme with responsive design
- Authentication: Optional JWT-based authentication system
- Mining Core Integration: Connect to mining pool software for additional statistics
- Interactive Charts: Real-time hashrate and temperature visualization
- Device Configuration: Manage Bitaxe settings through the dashboard
- Docker Deployment: Easy deployment with multi-architecture support (AMD64/ARM64)
- Bootstrap Setup: First-time configuration wizard
- Frontend: Vue.js 3 with Composition API, Pinia for state management
- Backend: Express.js REST API with proxy endpoints
- Deployment: Docker with multi-stage builds
- Configuration: File-based configuration with hot-reloading
-
Clone the repository:
git clone <repository-url> cd nextgen-dashboard
-
Build and run with Docker Compose:
docker-compose up -d
-
Access the dashboard at
http://localhost:3000
-
Install dependencies:
npm install cd src/frontend && npm install
-
Start development servers:
npm run dev
This runs both backend (port 3000) and frontend (port 5173) concurrently.
The application uses configuration files stored in the config/ directory:
app-config.json: Main application configurationdevice-mappings.json: Field mappings for device datamining-mappings.json: Field mappings for mining core data
Mount the config directory to persist configurations:
docker run -p 3000:3000 -v $(pwd)/config:/app/config nextgen-bitaxe-dashboardGET /api/config- Get current configurationPOST /api/config- Create initial configuration (bootstrap)PUT /api/config- Update configuration
POST /api/auth/login- User loginPOST /api/auth/generate-secret- Generate JWT secret
GET /api/devices- Get all devices statusGET /api/devices/:id/data- Get device dataGET /api/devices/:id/chart- Get device chart dataPOST /api/devices/:id/restart- Restart deviceGET /api/devices/:id/config- Get device configurationPUT /api/devices/:id/config- Update device configuration
GET /api/mining-core/data- Get mining core data
NODE_ENV: Environment (development/production)PORT: Server port (default: 3000)
├── src/
│ ├── backend/ # Express.js backend
│ │ ├── api/ # API routes
│ │ ├── auth/ # Authentication middleware
│ │ ├── config/ # Configuration management
│ │ ├── services/ # Business logic services
│ │ └── server.js # Main server file
│ └── frontend/ # Vue.js frontend
│ ├── src/
│ │ ├── components/ # Vue components
│ │ ├── views/ # Page components
│ │ ├── stores/ # Pinia stores
│ │ ├── services/ # API services
│ │ └── assets/ # Static assets
│ └── package.json
├── config/ # Configuration files (Docker volume)
├── public/ # Built frontend (production)
├── Dockerfile # Production Docker image
├── docker-compose.yml # Docker Compose configuration
└── package.json # Main package configuration
-
Build frontend:
cd src/frontend npm run build -
Build Docker image:
docker build -t nextgen-bitaxe-dashboard . -
Or use the npm script:
npm run build
To add support for new device types:
- Update
device-mappings.jsonwith new field mappings - Modify the AxeOS service in
src/backend/services/axeos.js - Update the device card component to display new fields
- SHA256 password hashing for transmission
- JWT token authentication with configurable expiration
- Helmet.js security headers
- CORS protection
- Non-root Docker container execution
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
MIT License - see LICENSE file for details
Scott Walter
2.0.0