A real-time monitoring dashboard for Blockbook servers with auto-refresh capabilities.
This is a single full-stack Node.js application - one server hosts both the website and API. No separate frontend/backend deployments needed!
- Real-time status monitoring for multiple Blockbook servers
- Color-coded status indicators (green = online, red = offline)
- Displays key metrics: block height, version, sync status, last block time
- Auto-refresh every 60 seconds
- Manual refresh button
- Direct links to each Blockbook server
- Responsive design for mobile and desktop
- Install dependencies:
npm install- Start the server:
npm start- Open your browser to:
http://localhost:3000
Note: You only need to deploy this ONE application. The Express server handles both the website and API in a single process.
- Create account at railway.app
- Click "New Project" → "Deploy from GitHub repo"
- Connect your GitHub account and select this repository
- Railway auto-detects Node.js and deploys automatically
- Your dashboard will be live at
https://your-app.railway.app
- Create account at render.com
- Click "New" → "Web Service"
- Connect your GitHub repository
- Configure:
- Build Command:
npm install - Start Command:
npm start
- Build Command:
- Click "Create Web Service"
- Your dashboard will be live at
https://your-app.onrender.com
- Install Heroku CLI
- Login:
heroku login- Create app:
heroku create your-app-name- Deploy:
git push heroku main- Open:
heroku open- Create account at digitalocean.com
- Go to App Platform → "Create App"
- Connect your GitHub repository
- DigitalOcean auto-detects Node.js
- Click "Next" through the steps and deploy
- Install Vercel CLI:
npm install -g vercel- Deploy:
vercel- Follow the prompts, and you're live!
- SSH into your server
- Clone the repository:
git clone <your-repo-url>
cd Status-Dashboard- Install dependencies:
npm install- Install PM2 for process management:
npm install -g pm2- Start with PM2:
pm2 start server.js --name blockbook-dashboard
pm2 save
pm2 startup- Configure nginx/Apache as reverse proxy (optional)
Edit script.js and modify the servers array:
const servers = [
{ name: 'Firo (East USA 1)', url: 'https://firo-eusa1.edge.app/' },
{ name: 'Dogecoin (East USA 1)', url: 'https://doge-eusa1.edge.app/' },
{ name: 'Bitcoin (West USA 1)', url: 'https://btc-wusa1.edge.app/' },
{ name: 'Vertcoin (West USA 1)', url: 'https://vtc-wusa1.edge.app/' }
];Set the PORT environment variable:
PORT=8080 npm startOr edit server.js:
const PORT = process.env.PORT || 3000; // Change 3000 to your preferred portEdit script.js, line 111:
setInterval(updateDashboard, 60000); // 60000ms = 1 minute- Architecture: Single full-stack application (unified frontend + backend)
- Frontend: Vanilla JavaScript, HTML5, CSS3 (served as static files)
- Backend: Node.js, Express (serves frontend + provides API proxy)
- HTTP Client: node-fetch
- Deployment: Platform agnostic (works anywhere Node.js runs) - ONE deployment only
The app exposes a proxy endpoint:
GET /api/proxy?url=<blockbook-api-url>
Example:
http://localhost:3000/api/proxy?url=https://firo-eusa1.edge.app/api/v2
This endpoint proxies requests to Blockbook servers to avoid CORS issues.
- Only allows proxying to
edge.appBlockbook endpoints - 10-second timeout on API requests
- No sensitive data stored
- Check that the Blockbook servers are actually online by visiting their URLs
- Check server logs for errors:
npm startorpm2 logs blockbook-dashboard - Verify your server has internet access to reach the Blockbook endpoints
Change the port:
PORT=8080 npm start- Ensure
package.jsonis committed to git - Verify Node.js version is 14+ (check platform requirements)
- Check deployment platform logs for specific errors
MIT
Pull requests welcome! Feel free to add more servers or improve the dashboard.