Homepage: Homelab Dashboard Service Overview

What I Built

Homepage is a clean, simple, and fast dashboard for your homelab services. It provides a unified interface to monitor and access all your self-hosted services, with customizable widgets, service status monitoring, and a clean, responsive design that works on all devices.

Technical Stack

  • Frontend: HTML5, CSS3, JavaScript
  • Backend: Node.js with Express
  • Containerization: Docker & Docker Compose
  • Configuration: YAML-based service definitions
  • Monitoring: Health check integration
  • UI: Responsive design with modern CSS

Key Features

Service Dashboard

  • Clean, organized service grid
  • Customizable service icons and colors
  • Service status monitoring
  • Quick access to all homelab services
  • Responsive design for mobile devices

Widget System

  • Weather widget integration
  • System resource monitoring
  • Custom widget support
  • Real-time data updates
  • Configurable widget layouts

Service Management

  • Easy service addition and removal
  • Service grouping and organization
  • Health check monitoring
  • Service status indicators
  • Custom service configurations

Customization Options

  • Theme customization
  • Custom CSS support
  • Icon and color customization
  • Layout configuration
  • Branding options

Biggest Challenges

Service Configuration

Setting up proper service definitions and health checks for all homelab services while maintaining a clean and organized dashboard layout.

Performance Optimization

Ensuring the dashboard loads quickly and provides real-time updates without impacting the performance of other homelab services.

Mobile Experience

Creating a responsive design that works well on mobile devices and provides easy access to services on smaller screens.

Integration Complexity

Integrating with various homelab services and their different authentication methods while maintaining security and ease of use.

What I Learned

Dashboard Design

Understanding how to create effective dashboard interfaces that provide quick access to information while maintaining clean, organized layouts.

Service Monitoring

How to implement health checks and status monitoring for various types of services and applications.

Responsive Web Design

Advanced CSS techniques for creating responsive interfaces that work well across different device types and screen sizes.

Configuration Management

Best practices for managing complex configurations through YAML files and environment variables.

Docker Configuration

version: '3.8'
services:
  homepage:
    image: ghcr.io/benphelps/homepage:latest
    container_name: homepage
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      - TZ=UTC
    volumes:
      - ./config:/app/config
      - /var/run/docker.sock:/var/run/docker.sock:ro
    networks:
      - homelab

Service Configuration Example

# services.yaml
- name: Home Assistant
  icon: home-assistant.png
  url: http://homeassistant:8123
  description: Smart home automation
  group: Home Automation
  widget:
    type: iframe
    url: http://homeassistant:8123/lovelace/0
    height: 400px

- name: Portainer
  icon: portainer.png
  url: http://portainer:9000
  description: Docker container management
  group: Infrastructure
  status: true

- name: Pi-hole
  icon: pihole.png
  url: http://pihole:80
  description: DNS ad-blocking
  group: Network
  status: true

Widget Configuration

# widgets.yaml
- name: System Resources
  type: system-stats
  position: top-left
  config:
    cpu: true
    memory: true
    disk: true
    network: true

- name: Weather
  type: weather
  position: top-right
  config:
    latitude: 52.5200
    longitude: 13.4050
    units: metric

Benefits

  • Unified access to all homelab services
  • Clean, organized interface for service management
  • Real-time monitoring of service status
  • Mobile-friendly responsive design
  • Easy customization and configuration

Homepage has become the central hub of my homelab, providing quick access to all services and real-time monitoring in a clean, organized interface.