A beautiful Docker-based Linux system monitoring dashboard with real-time metrics for temperature, RAM, CPU, disk usage, and running processes.
- Real-time system metrics monitoring
- CPU usage with core count and frequency
- Memory and swap usage
- Disk usage statistics
- Temperature readings from system sensors
- Network I/O statistics
- Top processes by CPU and memory usage
- Auto-refresh (2-second intervals)
- Beautiful modern UI with dark theme
- Fully containerized with Docker
- Docker and Docker Compose installed on your Linux machine
- Clone or download this project:
cd system-monitor- Start the application:
docker-compose up -d --build- Open your browser and navigate to:
http://localhost:8080
system-monitor/
├── backend/
│ ├── app.py # Flask API server
│ ├── requirements.txt # Python dependencies
│ └── Dockerfile # Backend container
├── frontend/
│ ├── src/
│ │ ├── App.jsx # Main React component
│ │ ├── main.jsx # Entry point
│ │ └── index.css # Tailwind styles
│ ├── package.json # Node dependencies
│ ├── nginx.conf # Nginx configuration
│ └── Dockerfile # Frontend container
├── docker-compose.yml # Docker orchestration
└── README.md # This file
Returns all system metrics including:
- System information (hostname, platform, architecture)
- CPU usage, count, and frequency
- Memory and swap usage
- Disk usage
- Temperature readings
- Network I/O statistics
- Process information (top 10 by CPU and memory)
Health check endpoint.
The frontend can be configured using environment variables:
VITE_API_URL: Backend API URL (default:http://localhost:5000)
Create a .env file in the frontend directory to override defaults.
- Frontend:
8080(main dashboard) - Backend:
5000(API)
docker-compose downTo remove volumes as well:
docker-compose down -vTemperature readings depend on your system's hardware sensors. The application tries multiple methods:
psutil.sensors_temperatures()- Reading from
/sys/class/thermal/
If no sensors are found, temperature will display as N/A.
The backend container runs with network_mode: host and mounts:
/sys/class/thermal:ro(read-only thermal data)/proc:ro(read-only process data)
If you encounter issues, ensure Docker has permission to read these paths.
cd backend
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python app.pycd frontend
npm install
npm run dev- Backend: Python, Flask, psutil
- Frontend: React, Vite, Tailwind CSS, Lucide React icons
- Deployment: Docker, Docker Compose, Nginx
MIT