- PHP 60.4%
- C++ 36.8%
- C 2.4%
- Dockerfile 0.4%
| .gitignore | First commit | |
| Dockerfile | Add Dockerfile for containerized deployment | |
| ESP32-2432S028-case.3mf | Add Share Tech Mono font and improve gauge styling | |
| ESP32-2432S028.ino | Update data source to index.php and rename display title | |
| favicon.png | Update icon and switch to PNG favicon | |
| icon.svg | Update icon and switch to PNG favicon | |
| index.php | Update icon and switch to PNG favicon | |
| LICENSE | First commit | |
| README.md | Update README.md | |
| SECURITY.md | First commit | |
| sysie.jpg | Update data source to index.php and rename display title | |
| sysie.service | Add systemd service unit | |
| User_Setup.h | First commit | |
Sysie — Linux System Monitor
A simple standalone PHP system monitor with no external dependencies. Displays CPU load, temperature, RAM, storage, and uptime in a clean web dashboard with auto-refresh. Also provides a JSON API for integration with other tools (e.g., ESP32-2432S028 boards).
SysieFeatures
- Single PHP file — no Composer, no libraries
- CPU load (1/5/15 min averages)
- CPU temperature (hwmon, thermal zones, sensors)
- RAM usage
- Storage usage
- System uptime
- Hostname, OS, kernel version
- JSON API endpoint (
?json=1) - Auto-refresh every 3 seconds
- Responsive dark theme with gauges
Quick Start
PHP Built-in Server
cd /path/to/sysie
php -S 0.0.0.0:8080
Visit http://localhost:8080
Production (Apache/nginx)
Point your web server's document root to the sysie directory. Ensure PHP is enabled.
JSON API
Append ?json=1 to get machine-readable data:
curl "http://localhost:8080/?json=1"
{
"cpu": { "1min": 0.42, "5min": 0.38, "15min": 0.41, "cores": 8, "pct": 5.3 },
"temp": "48.5 °C",
"ram": { "total": 32.0, "used": 12.4, "free": 19.6, "pct": 38.8 },
"storage": { "total": 500.0, "used": 185.2, "free": 314.8, "pct": 37.0, "mount": "/" },
"uptime": "5d 12h 3m",
"hostname": "server01",
"os": "Ubuntu 22.04.3 LTS",
"kernel": "5.15.0-91-generic"
}
Temperature Sensors
Sysie automatically detects various hardware sensors:
- Intel (
coretemp): readstemp*_inputfiles - AMD (
k10temp,zenpower): prioritizestdieandtctllabels - Generic hwmon: falls back to highest temp
- Thermal zones:
/sys/class/thermal/thermal_zone*/temp - sensors command: fallback for uncommon setups
ESP32-2432S028 Cheap Yellow Display (CYD) Integration
Sysie can display metrics on an ESP32-powered 2.8" TFT display (ESP32-2432S028). The ESP32-2432S028.ino sketch fetches JSON data from Sysie and renders three analog gauges:
- Left gauge: CPU temperature (°C)
- Center gauge: RAM usage (%)
- Right gauge: Storage usage (%)
- Top-right: CPU load % in status bar
Configuration
Edit these constants in ESP32-2432S028.ino:
const char* WIFI_SSID = "SSID";
const char* WIFI_PASSWORD = "PASSWORD";
const char* SERVER_URL = "http://127.0.0.1/index.php?json=1";
Files
| File | Description |
|---|---|
index.php |
Main application (dashboard + API) |
ESP32-2432S028.ino |
ESP32-2432S028 Arduino sketch |
User_Setup.h |
TFT_eSPI configuration for ILI9341 |
README.md |
This file |
Problems?
Report bugs and issues in the Issues section.
Contribute
If you've found a bug or have a suggestion for improvement, open an issue in the Issues section.
To add a new feature or fix issues yourself, follow the steps below.
- Fork the project's repository.
- Create a feature branch using the
git checkout -b new-featurecommand. - Add your new feature or fix bugs and run the
git commit -am 'Add a new feature'command to commit changes. - Push changes using the
git push origin new-featurecommand. - Submit a pull request.
License
GNU General Public License version 3
Author
Dmitri Popov (me@dmpop.xyz)