A beautiful, real-time cryptocurrency transaction monitoring website similar to FiatLeak, designed for Ubuntu servers. Monitor live transactions for XRP, XLM, XDC, HBAR, Flare, SOLO, and Bitcoin on an interactive world map.
- 🌍 Interactive World Map - Real-time visualization of crypto transactions across the globe
- 💰 Multi-Crypto Support - Monitor XRP, XLM, XDC, HBAR, Flare, SOLO, and Bitcoin
- 📊 Live Statistics - Track transaction counts, volumes, and prices for each cryptocurrency
- ⚡ Real-Time Updates - WebSocket-based live data streaming
- 🎨 Modern Dark UI - Beautiful, responsive interface optimized for 24/7 monitoring
- 📱 Responsive Design - Works on desktop, tablet, and mobile devices
- 🔄 Auto-Reconnect - Automatic WebSocket reconnection on connection loss
- Node.js - Server runtime
- Express - Web framework
- WebSocket (ws) - Real-time bidirectional communication
- Axios - HTTP client for fetching crypto prices
- CoinGecko API - Real-time cryptocurrency price data
- Leaflet.js - Interactive map visualization
- Vanilla JavaScript - No heavy frameworks, pure performance
- CSS3 - Modern styling with gradients and animations
- Ubuntu Server (18.04 or later recommended)
- Node.js (v14 or later)
- npm (v6 or later)
If you don't have Node.js installed, run:
# Update package list
sudo apt update
# Install Node.js and npm
sudo apt install nodejs npm -y
# Verify installation
node --version
npm --versioncd /home/user
git clone <your-repository-url> leakstream
cd leakstreamOr if you already have the files, navigate to the directory:
cd /home/user/leakstreamnpm installThis will install all required packages:
- express
- ws (WebSocket)
- axios
- cors
- dotenv
npm startFor development with auto-restart on file changes:
npm run devThe server will start on port 3000 by default.
Create a .env file in the root directory to customize settings:
PORT=3000To run on a different port:
PORT=8080 npm startOr modify the .env file:
PORT=8080Once the server is running, open your web browser and navigate to:
http://your-server-ip:3000
For local access:
http://localhost:3000
- View real-time statistics for each supported cryptocurrency
- See current price, transaction count, total volume, and average transaction value
- Each crypto is color-coded for easy identification
- Watch transactions appear in real-time across the world
- Transactions pulse on the map with size proportional to value
- Click on transactions to see details
- See the latest 20 transactions in real-time
- View transaction amount, value, location, and timestamp
- Transactions are color-coded by cryptocurrency
- Total transactions monitored
- Total volume in USD
- Number of active cryptocurrencies
To keep LeakStream running 24/7 on your Ubuntu server, create a systemd service:
sudo nano /etc/systemd/system/leakstream.service[Unit]
Description=LeakStream Crypto Monitor
After=network.target
[Service]
Type=simple
User=your-username
WorkingDirectory=/home/user/leakstream
ExecStart=/usr/bin/node /home/user/leakstream/server.js
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=leakstream
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.targetReplace your-username with your actual Ubuntu username.
# Reload systemd
sudo systemctl daemon-reload
# Enable service to start on boot
sudo systemctl enable leakstream
# Start the service
sudo systemctl start leakstream
# Check status
sudo systemctl status leakstream# Stop the service
sudo systemctl stop leakstream
# Restart the service
sudo systemctl restart leakstream
# View logs
sudo journalctl -u leakstream -fIf you have a firewall enabled (UFW), allow access to the port:
# Allow port 3000
sudo ufw allow 3000/tcp
# Check firewall status
sudo ufw statusFor production deployment with a domain name:
sudo apt install nginx -ysudo nano /etc/nginx/sites-available/leakstreamAdd:
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}sudo ln -s /etc/nginx/sites-available/leakstream /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginxThe application currently monitors:
- Bitcoin (BTC) - The original cryptocurrency
- Ripple (XRP) - Fast, low-cost international payments
- Stellar (XLM) - Cross-border transactions
- XDC Network (XDC) - Enterprise-ready blockchain
- Hedera (HBAR) - Fast, fair, and secure network
- Flare (FLR) - Data acquisition network
- Sologenic (SOLO) - Tokenization platform
The server exposes REST API endpoints:
GET /api/stats- Get current statistics for all cryptocurrenciesGET /api/config- Get cryptocurrency configuration
The application uses WebSocket for real-time updates:
Transaction Message:
{
"type": "transaction",
"data": {
"symbol": "BTC",
"name": "Bitcoin",
"color": "#F7931A",
"amount": 0.5,
"value": "25000.00",
"price": "50000.000000",
"lat": 40.7128,
"lon": -74.0060,
"location": "New York",
"timestamp": 1698765432000
}
}Statistics Message:
{
"type": "stats",
"data": {
"BTC": {
"totalVolume": 1500000,
"transactionCount": 234,
"lastPrice": 50000,
"averageValue": 6410.25
}
}
}If you get an error that the port is already in use:
# Find process using port 3000
sudo lsof -i :3000
# Kill the process
sudo kill -9 <PID>- Check if the server is running
- Verify firewall settings
- Ensure WebSocket connections are allowed through your proxy (if using one)
- Check Ubuntu firewall:
sudo ufw status - Verify router port forwarding if accessing from outside your network
- Ensure the correct IP address is being used
leakstream/
├── server.js # Main server file
├── package.json # Project dependencies
├── README.md # This file
└── public/ # Frontend files
├── index.html # Main HTML file
├── styles.css # Stylesheets
└── app.js # Client-side JavaScript
To add support for more cryptocurrencies:
- Update
cryptoConfiginserver.js - Add CoinGecko API ID in
fetchCryptoPrices() - Update frontend
cryptoConfiginapp.js
- Server Requirements: Minimal (1GB RAM, 1 CPU core sufficient)
- Network: Low bandwidth usage (WebSocket compression)
- Browser: Works best in modern browsers (Chrome, Firefox, Edge, Safari)
MIT License - feel free to use this project for personal or commercial purposes.
For issues or questions:
- Check the troubleshooting section
- Review server logs:
sudo journalctl -u leakstream -f - Ensure all dependencies are installed:
npm install
- Map tiles provided by OpenStreetMap
- Cryptocurrency prices from CoinGecko API
- Inspired by FiatLeak
Enjoy monitoring the crypto world in real-time! 🚀