Ultra-lightweight web monitoring for Raspberry Pi
Track uptime, response times, and get instant alerts โ all from a $35 computer
| Feature | Benefit |
|---|---|
| ๐ชถ Ultra-lightweight | Runs on Raspberry Pi 1B+ (512MB RAM) |
| ๐ Real-time Dashboard | CRT-style cyberpunk interface |
| ๐ JSON API | Integrate with anything |
| ๐พ Persistent Storage | SQLite keeps your history safe |
| โก Zero Config | Works out of the box |
Run this on your Raspberry Pi:
curl -sSL https://raw.githubusercontent.com/jmlweb/webstatuspi/main/install.sh | bashThe interactive installer will:
- Install dependencies and create a virtual environment
- Guide you through URL configuration
- Optionally set up auto-start on boot
That's it! Open http://<your-pi-ip>:8080 in your browser.
๐ฆ Manual Installation
# Clone and install
git clone https://github.com/jmlweb/webstatuspi.git
cd webstatuspi
python3 -m venv venv
source venv/bin/activate
pip install .
# Configure
cp config.example.yaml config.yaml
# Edit config.yaml with your URLs
# Run
webstatuspiโ๏ธ Installer Options
# Interactive installation
./install.sh
# Non-interactive with defaults
./install.sh --non-interactive
# System-wide installation (with systemd service)
sudo ./install.sh --install-dir /opt/webstatuspi
# Update existing installation
./install.sh --update
# Uninstall
./install.sh --uninstall
Real-time status cards with latency and 24h uptime metrics. |
Click any card to see full check history with timestamps. |
Features:
- ๐ Auto-refresh every 10 seconds
- ๐ข๐ด Color-coded status indicators
- ๐ Response time graphs
- ๐น๏ธ Retro CRT aesthetic with scanlines
| Method | Endpoint | Description |
|---|---|---|
GET |
/ |
Web dashboard |
GET |
/status |
All URLs status |
GET |
/status/{name} |
Specific URL status |
GET |
/health |
Health check |
curl http://localhost:8080/status{
"urls": [
{
"name": "MY_SITE",
"url": "https://example.com",
"success_rate": 99.5,
"last_status": "success",
"last_status_code": 200
}
],
"summary": {
"total_urls": 1,
"overall_success_rate": 99.5
}
}Install as a systemd service:
# Preview what will be installed
webstatuspi install-service --dry-run
# Install and start
sudo webstatuspi install-service --enable --start๐ Service management commands
sudo systemctl status webstatuspi # Check status
sudo journalctl -u webstatuspi -f # View live logs
sudo systemctl restart webstatuspi # Restart
sudo systemctl stop webstatuspi # Stopmonitor:
interval: 60 # seconds between checks
urls:
- name: "PROD_API" # max 10 characters
url: "https://api.example.com"
timeout: 10
- name: "STAGING"
url: "https://staging.example.com"
timeout: 5
server:
port: 8080
host: 0.0.0.0 # listen on all interfaces
database:
path: "./data/monitoring.db"
retention_days: 7 # auto-cleanup old dataFor Raspberry Pi 1B+:
| Setting | Recommendation |
|---|---|
| URLs | 5-10 max |
| Interval | 30+ seconds |
| Timeout | 10s or less |
# Setup
python3 -m venv venv
source venv/bin/activate
pip install .[dev]
# Run tests
pytest tests/ -vwebstatuspi/
โโโ webstatuspi/ # Core package
โ โโโ __init__.py # CLI entry point
โ โโโ api.py # HTTP server
โ โโโ database.py # SQLite operations
โ โโโ monitor.py # URL checker
โโโ tests/ # Test suite
โโโ docs/ # Documentation
- 0.96" OLED display support
- Physical button navigation
- Buzzer alerts on failures
- Status LEDs (green/red)
API not accessible from other devices
- Check firewall:
sudo ufw allow 8080 - Verify config has
host: 0.0.0.0 - Check Pi IP:
ip addr show
High CPU usage
- Increase polling interval to 60+ seconds
- Reduce number of monitored URLs
- Check for slow/timing out URLs
Connection timeouts
- Increase
timeoutvalue in config - Test network:
ping google.com - Test URL manually:
curl -I <url>
See Troubleshooting Guide for more.
| Document | Description |
|---|---|
| Architecture | System design & database schema |
| Hardware | GPIO pins & OLED setup |
| Contributing | How to contribute |
| Development Rules | Code style & conventions |
MIT License โ see LICENSE for details.
Built with โค๏ธ for Raspberry Pi enthusiasts
Lightweight. Reliable. Open Source.

