Homer Dashboard with Healthchecks
Homer dashboard with healthcheck monitoring.
Overview
Homer is a static, self-hosted homepage and dashboard application designed for organizing and accessing homelab services and web applications. Originally created as a simple yet elegant solution for service discovery, Homer uses YAML configuration files to create customizable dashboards with service tiles, status indicators, and organized categories. Unlike dynamic dashboards that require databases, Homer generates static HTML from configuration files, making it lightweight and fast. Healthchecks is an open-source monitoring service that tracks scheduled tasks, cron jobs, and service uptime through HTTP pings and webhooks. When combined with Homer and NGINX, this stack creates a comprehensive homelab monitoring solution where Homer provides the visual dashboard for quick service access while Healthchecks monitors the actual health and availability of those services. NGINX acts as a reverse proxy to consolidate access and can provide SSL termination for the entire stack. This combination addresses the common homelab challenge of having multiple services running on different ports while needing reliable monitoring to ensure everything stays operational. The stack is particularly valuable for homelab enthusiasts and self-hosting advocates who want both aesthetic organization and practical monitoring without the complexity of enterprise monitoring solutions. Homer's simplicity makes it perfect for personal use, while Healthchecks provides the reliability monitoring needed for critical self-hosted services like backup scripts, file synchronization, and automated maintenance tasks.
Key Features
- YAML-based configuration for Homer dashboard with hot-reload capability
- Service status integration between Homer tiles and Healthchecks monitoring endpoints
- Healthchecks ping monitoring with customizable grace periods and timeout detection
- Homer's theme customization with CSS overrides and multiple built-in themes
- Webhook notifications from Healthchecks for Slack, Discord, email, and PagerDuty integrations
- NGINX reverse proxy configuration for unified access to both dashboard and monitoring interfaces
- Healthchecks cron job monitoring with detailed logs and failure pattern analysis
- Homer icon integration with Font Awesome, custom icons, and automatic favicon fetching
Common Use Cases
- 1Homelab dashboard combining service access with uptime monitoring for self-hosted applications
- 2Family network portal displaying local services while monitoring backup job completion
- 3Small business IT dashboard tracking server health and scheduled maintenance tasks
- 4Development environment monitoring with project links and build pipeline health checks
- 5Remote server management combining SSH access points with automated task monitoring
- 6Home automation hub displaying smart home interfaces alongside system health monitoring
- 7Personal cloud services dashboard with file sync and media server status tracking
Prerequisites
- Minimum 512MB RAM for combined Homer, Healthchecks, and NGINX containers
- Docker and Docker Compose installed with at least 2GB available disk space
- Available ports 80, 8000, and 8080 or configured alternatives in environment variables
- Basic YAML editing knowledge for Homer dashboard configuration
- Email server access for Healthchecks notifications (SMTP configuration)
- Understanding of reverse proxy concepts for NGINX configuration customization
For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms
docker-compose.yml
docker-compose.yml
1services: 2 homer: 3 image: b4bz/homer:latest4 container_name: homer5 restart: unless-stopped6 ports: 7 - "${HOMER_PORT:-8080}:8080"8 environment: 9 - UID=100010 - GID=100011 volumes: 12 - homer_assets:/www/assets1314 healthchecks: 15 image: linuxserver/healthchecks:latest16 container_name: healthchecks17 restart: unless-stopped18 ports: 19 - "${HC_PORT:-8000}:8000"20 environment: 21 - SITE_ROOT=http://localhost:${HC_PORT:-8000}22 - SITE_NAME=Healthchecks23 - SUPERUSER_EMAIL=${ADMIN_EMAIL}24 - SUPERUSER_PASSWORD=${ADMIN_PASSWORD}25 - SECRET_KEY=${SECRET_KEY}26 volumes: 27 - healthchecks_data:/config2829 nginx: 30 image: nginx:alpine31 container_name: homelab-nginx32 restart: unless-stopped33 ports: 34 - "${NGINX_PORT:-80}:80"35 volumes: 36 - ./nginx.conf:/etc/nginx/nginx.conf:ro3738volumes: 39 homer_assets: 40 healthchecks_data: .env Template
.env
1# Homer Dashboard2HOMER_PORT=80803HC_PORT=80004ADMIN_EMAIL=admin@example.com5ADMIN_PASSWORD=admin_password6SECRET_KEY=your_secret_key7NGINX_PORT=80Usage Notes
- 1Homer at http://localhost:8080
- 2Healthchecks at http://localhost:8000
- 3Configure Homer via config.yml
- 4Ping Healthchecks from cron
Individual Services(3 services)
Copy individual services to mix and match with your existing compose files.
homer
homer:
image: b4bz/homer:latest
container_name: homer
restart: unless-stopped
ports:
- ${HOMER_PORT:-8080}:8080
environment:
- UID=1000
- GID=1000
volumes:
- homer_assets:/www/assets
healthchecks
healthchecks:
image: linuxserver/healthchecks:latest
container_name: healthchecks
restart: unless-stopped
ports:
- ${HC_PORT:-8000}:8000
environment:
- SITE_ROOT=http://localhost:${HC_PORT:-8000}
- SITE_NAME=Healthchecks
- SUPERUSER_EMAIL=${ADMIN_EMAIL}
- SUPERUSER_PASSWORD=${ADMIN_PASSWORD}
- SECRET_KEY=${SECRET_KEY}
volumes:
- healthchecks_data:/config
nginx
nginx:
image: nginx:alpine
container_name: homelab-nginx
restart: unless-stopped
ports:
- ${NGINX_PORT:-80}:80
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
Quick Start
terminal
1# 1. Create the compose file2cat > docker-compose.yml << 'EOF'3services:4 homer:5 image: b4bz/homer:latest6 container_name: homer7 restart: unless-stopped8 ports:9 - "${HOMER_PORT:-8080}:8080"10 environment:11 - UID=100012 - GID=100013 volumes:14 - homer_assets:/www/assets1516 healthchecks:17 image: linuxserver/healthchecks:latest18 container_name: healthchecks19 restart: unless-stopped20 ports:21 - "${HC_PORT:-8000}:8000"22 environment:23 - SITE_ROOT=http://localhost:${HC_PORT:-8000}24 - SITE_NAME=Healthchecks25 - SUPERUSER_EMAIL=${ADMIN_EMAIL}26 - SUPERUSER_PASSWORD=${ADMIN_PASSWORD}27 - SECRET_KEY=${SECRET_KEY}28 volumes:29 - healthchecks_data:/config3031 nginx:32 image: nginx:alpine33 container_name: homelab-nginx34 restart: unless-stopped35 ports:36 - "${NGINX_PORT:-80}:80"37 volumes:38 - ./nginx.conf:/etc/nginx/nginx.conf:ro3940volumes:41 homer_assets:42 healthchecks_data:43EOF4445# 2. Create the .env file46cat > .env << 'EOF'47# Homer Dashboard48HOMER_PORT=808049HC_PORT=800050ADMIN_EMAIL=admin@example.com51ADMIN_PASSWORD=admin_password52SECRET_KEY=your_secret_key53NGINX_PORT=8054EOF5556# 3. Start the services57docker compose up -d5859# 4. View logs60docker compose logs -fOne-Liner
Run this command to download and set up the recipe in one step:
terminal
1curl -fsSL https://docker.recipes/api/recipes/homer-dashboard-stack/run | bashTroubleshooting
- Homer shows blank dashboard: Check that homer_assets volume contains config.yml file with proper YAML syntax
- Healthchecks admin login fails: Verify ADMIN_EMAIL and ADMIN_PASSWORD environment variables are set and container has been recreated
- NGINX returns 502 Bad Gateway: Ensure nginx.conf includes proper upstream definitions for homer:8080 and healthchecks:8000
- Homer service tiles show 'unreachable': Configure service URLs to use container names or docker network IPs instead of localhost
- Healthchecks ping URLs not working: Check SITE_ROOT environment variable matches actual access URL and ports are correctly mapped
- Homer configuration changes not appearing: Restart homer container as it requires restart to reload config.yml modifications
Community Notes
Loading...
Loading notes...
Download Recipe Kit
Get all files in a ready-to-deploy package
Includes docker-compose.yml, .env template, README, and license
Components
homerhealthchecksnginx
Tags
#dashboard#homer#homelab#monitoring
Category
Home Lab & Self-HostingAd Space
Shortcuts: C CopyF FavoriteD Download