A Home Server Control Panel with Homepage
Hosting Homepage with Docker
In the earlier posts in this series, I add a few services (Jellyfin, Audiobookshelf, etc.). At some point, typing IPs and ports starts to feel like juggling. This post is where I add Homepage — a clean dashboard that lives at one LAN URL and links out to everything else.
1. Create folders
I keep service configs under /srv/appdata/, so I make a spot for Homepage.
sudo mkdir -p /srv/appdata/homepage/config
sudo chown -R $USER:$USER /srv/appdata/homepage
2. Create docker-compose.yml
From /srv/appdata/homepage/, I create a compose file.
services:
homepage:
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
ports:
- "3000:3000"
volumes:
- /srv/appdata/homepage/config:/app/config
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
HOMEPAGE_ALLOWED_HOSTS: http://<server-ip>:3000
restart: unless-stopped
3. Bring it up
docker compose up -d
Then I open: http://<server-ip>:3000
4. Add a minimal config (Settings, Services, Bookmarks, Widgets)
Homepage is configured with YAML files inside the config folder.
services.yaml
- Media:
- Jellyfin:
href: http://<server-ip>:8096
description: movies + shows
- Audiobookshelf:
href: http://<server-ip>:13378
description: audiobooks + podcasts
- Immich:
href: http://<server-ip>:2283
description: photos
- Admin:
- Router:
href: http://192.168.1.1
widgets.yaml
- resources:
label: Server
cpu: true
memory: true
uptime: true
Hosting Homepage with Docker
In the earlier posts in this series, I add a few services (Jellyfin, Audiobookshelf, etc.). At some point, typing IPs and ports starts to feel like juggling. This post is where I add Homepage — a clean dashboard that lives at one LAN URL and links out to everything else.
1. Create folders
I keep service configs under /srv/appdata/, so I make a spot for Homepage.
sudo mkdir -p /srv/appdata/homepage/config
sudo chown -R $USER:$USER /srv/appdata/homepage
2. Create docker-compose.yml
From /srv/appdata/homepage/, I create a compose file.
services:
homepage:
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
ports:
- "3000:3000"
volumes:
- /srv/appdata/homepage/config:/app/config
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
HOMEPAGE_ALLOWED_HOSTS: http://<server-ip>:3000
restart: unless-stopped
3. Bring it up
docker compose up -d
Then I open: http://<server-ip>:3000
4. Add a minimal config (Settings, Services, Bookmarks, Widgets)
Homepage is configured with YAML files inside the config folder.
services.yaml
- Media:
- Jellyfin:
href: http://<server-ip>:8096
description: movies + shows
- Audiobookshelf:
href: http://<server-ip>:13378
description: audiobooks + podcasts
- Immich:
href: http://<server-ip>:2283
description: photos
- Admin:
- Router:
href: http://192.168.1.1
widgets.yaml
- resources:
label: Server
cpu: true
memory: true
disk: /mnt/srv
uptime: true
I finish by bookmarking it. Now I’ve got one LAN tab that links to everything and shows the server’s basics at a glance.