A gethomepage.dev setup for a Raspberry Pi 5 homelab running DietPi + Docker.
- OS: DietPi on Raspberry Pi 5
- Containers: Docker, managed via Portainer
- Reverse Proxy: Nginx Proxy Manager
- System Stats: Glances v4
- Storage: NVMe SSD (boot) + 3x external HDDs (customize to your needs)
- Deploy homepage via Portainer stack:
services:
homepage:
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
ports:
- 3005:3000
volumes:
- /portainer/Files/AppData/Config/homepage:/app/config
- /portainer/Files/AppData/Config/homepage/images:/app/public/images
- /var/run/docker.sock:/var/run/docker.sock:ro
- /mnt/HDD1:/mnt/HDD1:ro
- /mnt/HDD2:/mnt/HDD2:ro
- /mnt/HDD3:/mnt/HDD3:ro
environment:
HOMEPAGE_ALLOWED_HOSTS: YOUR_DOMAIN
restart: unless-stopped-
Copy config files to
/portainer/Files/AppData/Config/homepage/ -
Replace all placeholders:
| Placeholder | Description |
|---|---|
YOUR_PI_IP |
Your Raspberry Pi's local IP |
YOUR_DOMAIN |
Your homepage domain |
YOUR_EMAIL |
Your login email |
YOUR_USERNAME |
Your service username |
YOUR_PASSWORD |
Your service password |
YOUR_JELLYFIN_API_KEY |
Jellyfin → Dashboard → API Keys |
YOUR_IMMICH_API_KEY |
Immich → Account Settings → API Keys |
YOUR_PORTAINER_API_KEY |
Portainer → My Account → Access Tokens |
-
Add your wallpaper as
images/bg.pngand logo asimages/record-player.png -
Background image URL in
settings.yamluseshttp://YOUR_PI_IP:3005/images/bg.pngto bypass Next.js static file caching.
Deploy separately — homepage uses it for system graphs:
services:
glances:
image: nicolargo/glances:latest-full
container_name: glances
pid: host
network_mode: host
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /sys:/sys:ro
environment:
GLANCES_OPT: "-w"
restart: unless-stopped