Homepage is a customizable, self-hosted start page/dashboard — aggregating links, service status, and widgets for all your self-hosted applications and bookmarks in one organized place.
What Homepage Solves
Once you're running several self-hosted applications, keeping track of URLs and checking their status individually becomes tedious — Homepage provides a single, organized landing page with live status indicators and quick access to everything.
Prerequisites
- Docker installed
Step 1 — Create a Configuration Directory
mkdir -p ~/homepage/config
Step 2 — Run Homepage with Docker
docker run -d \
--name homepage \
--restart unless-stopped \
-p 3000:3000 \
-v ~/homepage/config:/app/config \
ghcr.io/gethomepage/homepage:latest
Step 3 — Access the Interface
http://YOUR_SERVER_IP:3000
A default, unconfigured page appears initially — customization happens through YAML configuration files.
Step 4 — Configure Your Services
nano ~/homepage/config/services.yaml
- Self-Hosted Apps:
- Jellyfin:
href: https://media.yourdomain.com
icon: jellyfin.png
widget:
type: jellyfin
url: https://media.yourdomain.com
key: YOUR_API_KEY
- Uptime Kuma:
href: https://status.yourdomain.com
icon: uptime-kuma.png
Step 5 — Configure Bookmarks
nano ~/homepage/config/bookmarks.yaml
- Documentation:
- Project Docs:
- href: https://docs.example.com
Step 6 — Configure the Layout and Widgets
nano ~/homepage/config/settings.yaml
Customize layout, theme, and which widget groups display — Homepage supports many integrations showing live data (resource usage, download queue status, and more) directly from your other self-hosted services.
Step 7 — Restart to Apply Changes
docker restart homepage
Adding Service Health Widgets
Homepage supports direct integrations with many popular self-hosted apps (showing live stats, not just a link) — check the project's documentation for the specific widget configuration matching each of your installed services.
Add HTTPS
See How to Install Nginx Proxy Manager with Docker — particularly relevant since this dashboard may display API keys or sensitive service details.
Restricting Access
Since this dashboard aggregates links and potentially sensitive status information about your entire self-hosted infrastructure, restrict access appropriately (see How to Set Up Basic Authentication (htpasswd) in Nginx/Apache or a VPN-based approach) rather than leaving it publicly open.
Common Errors
Widgets show no data despite correct configuration — verify API keys/URLs for each integrated service are correct and that Homepage's container can actually reach those services over the network.
Continue Reading
- How to Install Uptime Kuma (Self-Hosted Uptime Monitoring)
- How to Install Nginx Proxy Manager with Docker
- How to Set Up Basic Authentication (htpasswd) in Nginx/Apache
Browse more articles in Popular Self-Hosted Applications.