A real-time status wallboard for monitoring your UptimeRobot services. Display service health, uptime status, and alerts on a clean, customizable dashboard perfect for NOC displays, office monitors, or personal dashboards.
Note: Screenshots show demo data only. No real services or sensitive information are displayed.
cd /var/www/html
git clone https://github.com/BlindTrevor/Uptime-Robot-Wallboard.git status
cd statusinstaller.php.If you prefer manual setup:
cp config.env.example config.envconfig.env and add your UptimeRobot API token:
UPTIMEROBOT_API_TOKEN=your-api-token-here
WALLBOARD_TITLE=My Status Dashboard
SHOW_PROBLEMS_ONLY=false
SHOW_PAUSED_DEVICES=false
REFRESH_RATE=20
THEME=dark chmod 600 config.env
chown www-data:www-data config.envindex.php in your browserEdit config.env to customize your wallboard:
| Option | Description | Default |
|---|---|---|
| MDINLINECODEf66e09df042a6c02b0585197917b90dbENDMDINLINECODE | Your UptimeRobot API token (required) | - |
| MDINLINECODEed954c7cdfc26f893be61144f16b27cbENDMDINLINECODE | Custom title for your wallboard | MDINLINECODEc7123495739c2c8f26a1412a8eca4cc7ENDMDINLINECODE |
| MDINLINECODE076e9f69385554a885c263c9c8ade696ENDMDINLINECODE | Path to logo image or URL | (empty) |
| MDINLINECODE351fd9e56c0d9f86dc920dc3b2ab254aENDMDINLINECODE | Show only monitors with issues | MDINLINECODE99b36aa15a80d4759e5f8b844d570703ENDMDINLINECODE |
| MDINLINECODEf227a4e52e1b4ffe821d6fe68308df5aENDMDINLINECODE | Display paused monitors | MDINLINECODE17b54bf9ccb5e4acfc0e6ec89c518a34ENDMDINLINECODE |
| MDINLINECODE1a737b4156cefdf3488c8d7302c1b714ENDMDINLINECODE | Display tags on monitor cards | MDINLINECODEbd8003fac83e7365743219d0f49e27a2ENDMDINLINECODE |
| MDINLINECODEbfb00f1e81af0a36b5c975255887ba92ENDMDINLINECODE | Data refresh interval (seconds) | MDINLINECODEff410607a3266140104375da441a30aaENDMDINLINECODE |
| MDINLINECODE82f8239f38d469b01363eeb9c401e958ENDMDINLINECODE | Config file check interval (seconds) | MDINLINECODE59bce13a674cb05a3ed9df0a3d9f654cENDMDINLINECODE |
| MDINLINECODEe03fd6f884f0ac7516e01ae9761a249aENDMDINLINECODE | Response time graph cache duration (seconds, min 60) | MDINLINECODE3375ef528c09cb86f2bc3645d1a166b0ENDMDINLINECODE |
| MDINLINECODEca51f4570fa4a22f9d3af4461780e0f4ENDMDINLINECODE | Theme: MDINLINECODE6c9add6c9c054f86051b1732a028a423ENDMDINLINECODE, MDINLINECODEb8152de6dc6c83057271d3059b1745ccENDMDINLINECODE, or MDINLINECODEc0eebd9ec74dfa3d426f5c5261326018ENDMDINLINECODE | MDINLINECODE28d4e3b4f4755bb303941931803cc5e9ENDMDINLINECODE |
| MDINLINECODEb777f26d3c3a8b858d8fdd8a2ff7865eENDMDINLINECODE | Auto-enter fullscreen on load | MDINLINECODEc05e9b4378624ea8cb8d8bdc1f1fda52ENDMDINLINECODE |
| MDINLINECODE1deccb80e4dd36d8f6cac337ffd91abdENDMDINLINECODE | Allow URL parameter overrides | MDINLINECODEbf27ca93fecaf236f95a173364ff3713ENDMDINLINECODE |
| MDINLINECODEf587701461106d57cdc866b0889fb5acENDMDINLINECODE | Custom tag color configuration (JSON format) | (empty) |
| MDINLINECODE2406bf17be4010d6c086f63e6edfc52aENDMDINLINECODE | Time window (in minutes) for highlighting recent events | MDINLINECODE04dd36268a84b2b82c92121e26bf6881ENDMDINLINECODE |
Override settings temporarily using URL parameters:
# Show only problems, refresh every 30 seconds
https://your-domain.com/status/?showProblemsOnly=true&refreshRate=30
# Use light theme and auto-fullscreen for kiosk
https://your-domain.com/status/?theme=light&autoFullscreen=true
# Show paused devices and hide tags
https://your-domain.com/status/?showPausedDevices=true&showTags=false
The wallboard now supports running multiple independent instances (browser tabs/windows/machines) without API query duplication or shared actions:
?norefresh=true parameter (see below)For displays that don't need real-time updates or to reduce API usage:
# Load data once without automatic refreshes
https://your-domain.com/status/?norefresh=true
# Combine with other parameters
https://your-domain.com/status/?norefresh=true&showProblemsOnly=true
When norefresh is enabled:
The most secure approach is to store config.env outside your web-accessible directory:
# If your webroot is /var/www/html/status
# Store config at /var/www/html/config.env (one level up)
cat > /var/www/html/config.env << 'EOF'
UPTIMEROBOT_API_TOKEN=your-token-here
# ... other settings ...
EOF
chmod 600 /var/www/html/config.env
chown www-data:www-data /var/www/html/config.env
The application automatically searches parent directories for the config file.
If you must store config.env in the webroot:
chmod 600 config.env.htaccess protection (Apache):
curl http://your-domain.com/status/config.env
# Should return 403 Forbidden location ~ /config\.env {
deny all;
return 403;
}config.env returns 403 when accessed via HTTP600 (owner read/write only)config.env is in .gitignore (never commit secrets!)Screenshot shows demo data with response time graphs visible on each monitor tile.
Screenshot shows demo data with response time graphs in light theme.
Switch themes using:?theme=dark, ?theme=light, or ?theme=auto URL parameterTHEME setting in config.envFilter your monitors by tags for better organization and focused monitoring. Each monitor displays its assigned tags as colored pills, making it easy to visually identify and categorize services.
Screenshot shows demo data with the tag filter section expanded, displaying all available tags with colored pills. Response time graphs are visible on each monitor tile.
Click "Show Filter" to reveal all available tags. Click any tag to filter monitors.
Screenshot shows demo data filtered to only display monitors tagged with "critical". The selected tag appears highlighted in the filter section, and only matching monitors are shown with their response time graphs.
When one or more tags are selected, only monitors with those tags are displayed. Selected tags appear highlighted with increased opacity and a shadow effect.
You can customize tag colors using the TAG_COLORS configuration option in config.env. This accepts a JSON object with two optional configurations:
1. Define acceptable color palette:
TAG_COLORS={"acceptable":["#FF0000","#00FF00","blue","orange"]}
2. Map specific tags to specific colors:
TAG_COLORS={"tags":{"production":"red","staging":"yellow","development":"#3ad29f"}}
3. Combine both approaches:
TAG_COLORS={"acceptable":["#FF0000","#00FF00","blue"],"tags":{"critical":"red","warning":"yellow","info":"#abf7b1"}}
Supported color formats include:
#FF0000, #abf7b1red, blue, orange, greenrgb(255,0,0), hsl(120,100%,50%)Each monitor tile that provides response time data displays a small green line graph in the bottom-right corner, showing the monitor's response times over the last hour.
Control the cache duration in config.env:
# Cache response time data for 5 minutes (300 seconds)
RESPONSE_TIME_CACHE_DURATION=300
# Or customize to your needs:
# RESPONSE_TIME_CACHE_DURATION=60 # 1 minute (minimum)
# RESPONSE_TIME_CACHE_DURATION=600 # 10 minutes
# RESPONSE_TIME_CACHE_DURATION=1800 # 30 minutes
Note: The minimum cache duration is 60 seconds (1 minute). Longer cache durations reduce API calls and help stay within rate limits, but graphs will update less frequently.
The wallboard includes an event history viewer that tracks all monitor status changes and system events. Recent events are automatically highlighted to improve visibility of recent activity.
Control the recent event time window in config.env:
# Highlight events from the last 60 minutes (default)
RECENT_EVENT_WINDOW_MINUTES=60
# Or customize to your needs:
# RECENT_EVENT_WINDOW_MINUTES=30 # 30 minutes
# RECENT_EVENT_WINDOW_MINUTES=120 # 2 hours
# RECENT_EVENT_WINDOW_MINUTES=1440 # 24 hours
If not configured, the default is 60 minutes (1 hour) to maintain backwards compatibility.
Perfect for dedicated monitoring displays:
# In config.env
AUTO_FULLSCREEN=true https://your-domain.com/status/?autoFullscreen=true&showProblemsOnly=trueconfig.envuptimerobot_status.php is accessibleuptime_errors.log for PHP errorsconfig.env file exists and has correct permissionsKEY=value (no spaces around =)chmod 600 and correct ownership).env files: This is expected and correct (security protection).htaccess is not blocking legitimate requestsconfig.envControl visibility of paused monitors:
?showPausedDevices=true or falseScreenshot shows demo data with a paused monitor (Example Staging Server) displayed with warning colors and "PAUSED" status. Response time graphs are visible on all monitor tiles, including the paused one.
All configuration options can be overridden via URL (when ALLOW_QUERY_OVERRIDE=true):
?showProblemsOnly=true # Show only problematic monitors
?showPausedDevices=true # Show/hide paused monitors
?showTags=false # Show/hide tags on monitor cards
?refreshRate=30 # Set refresh interval (seconds)
?theme=light # Set theme (dark/light/auto)
?autoFullscreen=true # Auto-enter fullscreen
?configCheckRate=10 # Config check interval
?norefresh=true # Disable automatic refresh (accepts 'true' or '1')
Note: For multi-instance scenarios and best practices, see the Multi-Instance Support section above.
Use the ?norefresh=true parameter to disable all automatic API refreshes. See the Usage section for detailed information and use cases.
config.env and refreshes the display within 5 seconds. No manual reload needed when updating:
Add your company logo to the wallboard:
config.env:
WALLBOARD_LOGO=logo.png
# Or use a URL:
# WALLBOARD_LOGO=https://example.com/logo.pngThis project is open source and available for use and modification.
For issues, questions, or feature requests, please use the GitHub Issues page.
Made with β€οΈ for monitoring enthusiasts