![]() Updated the `logCurrentStats` function to enhance the display of daily profit and unpaid earnings. Daily profit now defaults to '0.00' instead of 'CALCULATING...', and unpaid earnings are parsed as integers. Additionally, power consumption now shows '0 WATTS' instead of 'N/A W' when not available. |
||
---|---|---|
static | ||
templates | ||
App.py | ||
config.json | ||
config.py | ||
data_service.py | ||
deployment_steps.md | ||
docker-compose.yml | ||
dockerfile | ||
LICENSE.md | ||
minify.py | ||
models.py | ||
notification_service.py | ||
project_structure.md | ||
README.md | ||
requirements.txt | ||
setup.py | ||
state_manager.py | ||
worker_service.py |
Ocean.xyz Bitcoin Mining Dashboard
A Retro Mining Monitoring Solution
This open-source dashboard provides real-time monitoring for Ocean.xyz pool miners, offering detailed insights on hashrate, profitability, worker status, and network metrics. Designed with a retro terminal aesthetic and focused on reliability, it helps miners maintain complete oversight of their operations.
Gallery:
Key Features
Real-Time Mining Metrics
- Live Hashrate Tracking: Monitor 60-second, 10-minute, 3-hour, and 24-hour average hashrates
- Profitability Analysis: View daily and monthly earnings in both BTC and USD
- Financial Calculations: Automatically calculate revenue, power costs, and net profit
- Network Statistics: Track current Bitcoin price, difficulty, and network hashrate
- Payout Monitoring: View unpaid balance and estimated time to next payout
Worker Management
- Fleet Overview: Comprehensive view of all mining devices in one interface
- Status Monitoring: Real-time status indicators for online and offline devices
- Performance Data: Individual hashrate, temperature, and acceptance rate metrics
- Filtering Options: Sort and search by device type or operational status
Bitcoin Block Explorer
- Recent Blocks: View the latest blocks added to the blockchain
- Block Details: Examine transaction counts, fees, and mining pool information
- Visual Indicators: Track network difficulty and block discovery times
System Resilience
- Connection Recovery: Automatic reconnection after network interruptions
- Backup Polling: Fallback to traditional polling if real-time connection fails
- Cross-Tab Synchronization: Data consistency across multiple browser tabs
- Server Health Monitoring: Built-in watchdog processes ensure reliability
Distinctive Design Elements
- Retro Terminal Aesthetic: Nostalgic interface with modern functionality
- Boot Sequence Animation: Engaging initialization sequence on startup
- System Monitor: Floating status display with uptime and refresh information
- Responsive Interface: Adapts to desktop and mobile devices
Quick Start
Installation
-
Clone the repository
git clone https://github.com/Djobleezy/Custom-Ocean.xyz-Dashboard.git cd Custom-Ocean.xyz-Dashboard
-
Install dependencies:
pip install -r requirements.txt
-
Run the setup script:
python setup.py
-
Configure your mining settings in config.json:
{ "power_cost": 0.12, "power_usage": 3450, "wallet": "yourwallethere" <--- make sure to replace this value in all project files (boot.html, app.py, config.py, config.json, & setup.py) }
-
Start the application:
python App.py
-
Open your browser at
http://localhost:5000
For detailed deployment instructions with Redis persistence and Gunicorn configuration, see deployment_steps.md.
Using docker-compose (with Redis)
The docker-compose.yml
file makes it easy to deploy the dashboard and its dependencies.
Steps to Deploy
-
Start the services: Run the following command in the project root:
docker-compose up -d
-
Access the dashboard: Open your browser at
http://localhost:5000
. -
Stop the services: To stop the services, run:
docker-compose down
Customization
You can modify the following environment variables in the docker-compose.yml
file:
WALLET
: Your Bitcoin wallet address.POWER_COST
: Cost of power per kWh.POWER_USAGE
: Power usage in watts.
Redis data is stored in a persistent volume (redis_data
), and application logs are saved in the ./logs
directory.
For more details, refer to the docker-compose documentation.
Dashboard Components
Main Dashboard
- Interactive hashrate visualization with trend analysis
- Real-time profitability metrics with cost calculations
- Network statistics with difficulty and price tracking
- Payout information with estimation timing
- Visual indicators for metric changes
Workers Dashboard
- Fleet summary with aggregate statistics
- Individual worker cards with detailed metrics
- Status indicators with color-coded alerts
- Search and filtering functionality
- Performance trend mini-charts
Blocks Explorer
- Recent block visualization with mining details
- Transaction statistics and fee information
- Mining pool attribution
- Block details modal with comprehensive data
System Monitor
- Floating interface providing system statistics
- Progress indicator for data refresh cycles
- System uptime display
- Real-time connection status
System Requirements
The application is designed for efficient resource utilization:
- Server: Any system capable of running Python 3.9+
- Memory: Minimal requirements (~100MB RAM)
- Storage: Less than 50MB for application files
- Database: Optional Redis for persistent state
- Compatible with: Windows, macOS, and Linux
Technical Architecture
Built with a modern stack for reliability and performance:
- Backend: Flask with Server-Sent Events for real-time updates
- Frontend: Vanilla JavaScript with Chart.js for visualization
- Data Processing: Concurrent API calls with smart caching
- Resilience: Automatic recovery mechanisms and state persistence
- Configuration: Environment variables and JSON-based settings
Project Structure
The project follows a modular architecture with clear separation of concerns:
bitcoin-mining-dashboard/
│
├── App.py # Main application entry point
├── config.py # Configuration management
├── config.json # Configuration file
├── data_service.py # Service for fetching mining data
├── models.py # Data models
├── state_manager.py # Manager for persistent state
├── worker_service.py # Service for worker data management
├── setup.py # Setup script for organizing files
├── requirements.txt # Python dependencies
├── Dockerfile # Docker configuration
│
├── templates/ # HTML templates
│ ├── base.html # Base template with common elements
│ ├── boot.html # Boot sequence animation
│ ├── dashboard.html # Main dashboard template
│ ├── workers.html # Workers dashboard template
│ ├── blocks.html # Bitcoin blocks template
│ └── error.html # Error page template
│
├── static/ # Static assets
│ ├── css/ # CSS files
│ │ ├── common.css # Shared styles across all pages
│ │ ├── dashboard.css # Main dashboard styles
│ │ ├── workers.css # Workers page styles
│ │ ├── boot.css # Boot sequence styles
│ │ ├── blocks.css # Blocks page styles
│ │ ├── error.css # Error page styles
│ │ └── retro-refresh.css # Floating refresh bar styles
│ │
│ └── js/ # JavaScript files
│ ├── main.js # Main dashboard functionality
│ ├── workers.js # Workers page functionality
│ ├── blocks.js # Blocks page functionality
│ ├── block-animation.js # Block mining animation
│ └── BitcoinProgressBar.js # System monitor functionality
│
├── deployment_steps.md # Deployment guide
└── project_structure.md # Additional structure documentation
For more detailed information on the architecture and component interactions, see project_structure.md.
Troubleshooting
For optimal performance:
- Ensure your wallet address is correctly configured
- Check network connectivity for consistent updates
- Use the system monitor to verify connection status
- Access the health endpoint at
/api/health
for diagnostics - For stale data issues, use the Force Refresh function
License
Available under the MIT License. This is an independent project not affiliated with Ocean.xyz.
Acknowledgments
- Ocean.xyz mining pool for their service
- The open-source community for their contributions
- Bitcoin protocol developers