I'm liking Homepage! I took a little bit different approach, since I have many virtualizations running Organizr and Portainer. I'm going to use Homepage as an alternate way to launch Organizr wherever it's running (right into the appropriate "Tab"). I'll be moving it to its own LXC shortly. In the meantime, here's where I am:
Still more I want to do (including a few custom widgets), but here are my yamls for what's running so far:
services.yaml:
---
# For configuration options and examples, please see:
# https://gethomepage.dev/configs/services/
- Up'n'Away Router:
- Ubiquiti Router:
- udm-se:
icon: unifi.png
href: https://unifi.ui.com/dashboard
description: UnFi Dream Machine SE
widget:
type: unifi
url: https://unifi-dream-machine-se/
key: "{{HOMEPAGE_VAR_UDM_SE_KEY}}"
- Up'n'Away Network:
- Proxmox Server (Local):
- pve2:
icon: proxmox.png
href: https://pve2:8006/
description: Proxmox VE Server
widget:
type: proxmox
url: https://pve2:8006
username: "{{HOMEPAGE_VAR_PVE2_TOKEN_ID}}"
password: "{{HOMEPAGE_VAR_PVE2_TOKEN_SECRET}}"
node: pve2
- Proxmox Server (Remote):
- pve0:
icon: proxmox.png
href: https://pve0:8006/
description: Proxmox VE Server
widget:
type: proxmox
url: https://pve0:8006
username: "{{HOMEPAGE_VAR_PVE0_TOKEN_ID}}"
password: "{{HOMEPAGE_VAR_PVE0_TOKEN_SECRET}}"
node: pve0
- DNS Server (Primary):
- RaspberryPi3:
icon: pi-hole.png
href: http://raspberrypi3/admin/
description: Pi-hole DNS Server
widget:
type: pihole
url: http://raspberrypi3
version: 6
key: "{{HOMEPAGE_VAR_RPI3_PIHOLE_APP_PASSWORD}}"
- DNS Server (Secondary):
- RaspberryPi4:
icon: pi-hole.png
href: http://raspberrypi4/#Pi-hole
description: Pi-hole DNS Server
widget:
type: pihole
url: http://raspberrypi4:81
version: 6
key: "{{HOMEPAGE_VAR_RPI4_PIHOLE_APP_PASSWORD}}"
- Proxmox LXCs/VMs:
- Media-Server8:
icon: proxmox.png
#href: http://media-server8/
description: pve2
showStats: true
proxmoxNode: pve2
proxmoxVMID: 101
proxmoxType: qemu
- htpc6:
icon: proxmox.png
href: http://htpc6/
description: pve2
showStats: true
proxmoxNode: pve2
proxmoxVMID: 110
proxmoxType: lxc
- Ueland-Server:
icon: proxmox.png
#href: http://media-server8/
description: pve0
showStats: true
proxmoxNode: pve0
proxmoxVMID: 100
proxmoxType: qemu
- channels0:
icon: proxmox.png
href: http://channels0/
description: pve0
showStats: true
proxmoxNode: pve0
proxmoxVMID: 102
proxmoxType: lxc
- Tailnet:
- Media-Server8:
icon: tailscale.png
href: https://login.tailscale.com/admin/machines
description: media-server8.tailxxxxx.ts.net
widget:
type: tailscale
deviceid: xxxxxxxxxxxxCNTRL
key: "{{HOMEPAGE_VAR_TAILSCALE_API_KEY}}"
- htpc6:
icon: tailscale.png
href: https://login.tailscale.com/admin/machines
description: htpc6.tailxxxxx.ts.net
widget:
type: tailscale
deviceid: xxxxxxxxxxxxCNTRL
key: "{{HOMEPAGE_VAR_TAILSCALE_API_KEY}}"
- UTheater-PC:
icon: tailscale.png
href: https://login.tailscale.com/admin/machines
description: utheater-pc.tailxxxxx.ts.net
widget:
type: tailscale
deviceid: xxxxxxxxxxxxCNTRL
key: "{{HOMEPAGE_VAR_TAILSCALE_API_KEY}}"
- channels0:
icon: tailscale.png
href: https://login.tailscale.com/admin/machines
description: channels0.tailxxxxx.ts.net
widget:
type: tailscale
deviceid: xxxxxxxxxxxxCNTRL
key: "{{HOMEPAGE_VAR_TAILSCALE_API_KEY}}"
- tailscale-exit:
icon: tailscale.png
href: https://login.tailscale.com/admin/machines
description: tailscale-exit.tailxxxxx.ts.net
widget:
type: tailscale
deviceid: xxxxxxxxxxxxCNTRL
key: "{{HOMEPAGE_VAR_TAILSCALE_API_KEY}}"
- Container Management:
- htpc6:
icon: portainer.png
href: http://htpc6/#Portainer
description: Portainer
server: htpc6
container: portainer
showStats: true
siteMonitor: http://htpc6:9000
widget:
type: portainer
url: http://htpc6:9000
env: 2
key: "{{HOMEPAGE_VAR_HTPC6_PORTAINER_TOKEN}}"
- nuc10-vm2:
icon: portainer.png
href: http://nuc10-vm2/#Portainer
description: Portainer
server: nuc10-vm2
container: portainer
showStats: true
siteMonitor: http://nuc10-vm2:9000
widget:
type: portainer
url: http://nuc10-vm2:9000
env: 2
key: "{{HOMEPAGE_VAR_NUC10_VM2_PORTAINER_TOKEN}}"
- gluetun:
icon: portainer.png
href: http://gluetun/#Portainer
description: Portainer
server: gluetun
container: portainer
showStats: true
siteMonitor: http://gluetun:9000
widget:
type: portainer
url: http://gluetun:9000
env: 2
key: "{{HOMEPAGE_VAR_GLUETUN_PORTAINER_TOKEN}}"
- rpi6:
icon: portainer.png
href: http://raspberrypi6/#Portainer
description: Portainer
server: rpi6
container: portainer
showStats: true
siteMonitor: http://raspberrypi6:9000
widget:
type: portainer
url: http://raspberrypi6:9000
env: 2
key: "{{HOMEPAGE_VAR_RPI6_PORTAINER_TOKEN}}"
- rpi7:
icon: portainer.png
href: http://raspberrypi6/#Portainer
description: Portainer-Agent
server: rpi7
container: portainer_agent
showStats: true
siteMonitor: http://raspberrypi6:9000/#!/3/docker/dashboard
widget:
type: portainer
url: http://raspberrypi6:9000
env: 3
key: "{{HOMEPAGE_VAR_RPI6_PORTAINER_TOKEN}}"
- rpi8:
icon: portainer.png
href: http://raspberrypi6/#Portainer
description: Portainer-Agent
server: rpi8
container: portainer_agent
showStats: true
siteMonitor: http://raspberrypi6:9000/#!/4/docker/dashboard
widget:
type: portainer
url: http://raspberrypi6:9000
env: 4
key: "{{HOMEPAGE_VAR_RPI6_PORTAINER_TOKEN}}"
- rpi9:
icon: portainer.png
href: http://raspberrypi6/#Portainer
description: Portainer
server: rpi9
container: portainer_agent
showStats: true
siteMonitor: http://raspberrypi6:9000/#!/5/docker/dashboard
widget:
type: portainer
url: http://raspberrypi6:9000
env: 5
key: "{{HOMEPAGE_VAR_RPI6_PORTAINER_TOKEN}}"
- rpi10:
icon: portainer.png
href: http://raspberrypi10/#Portainer
description: Portainer
server: rpi10
container: portainer
showStats: true
siteMonitor: http://raspberrypi10:9000
widget:
type: portainer
url: http://raspberrypi10:9000
env: 2
key: "{{HOMEPAGE_VAR_RPI10_PORTAINER_TOKEN}}"
- rpi11:
icon: portainer.png
href: http://raspberrypi10/#Portainer
description: Portainer
server: rpi11
container: portainer_agent
showStats: true
siteMonitor: http://raspberrypi10:9000
widget:
type: portainer
url: http://raspberrypi10:9000
env: 3
key: "{{HOMEPAGE_VAR_RPI10_PORTAINER_TOKEN}}"
- rpi12:
icon: portainer.png
href: http://raspberrypi10/#Portainer
description: Portainer
server: rpi12
container: portainer_agent
showStats: true
siteMonitor: http://raspberrypi10:9000
widget:
type: portainer
url: http://raspberrypi10:9000
env: 4
key: "{{HOMEPAGE_VAR_RPI10_PORTAINER_TOKEN}}"
- UPS Backups:
- rpi4:
icon: apc.png
description: Network Closet
server: rpi4
container: apcupsd
showStats: true
widget:
type: apcups
url: http://raspberrypi4:3551
- rpi6:
icon: apc.png
description: Loft
server: rpi6
container: apcupsd
showStats: true
widget:
type: apcups
url: http://raspberrypi6:3551/
- rpi7:
icon: apc.png
description: Master Bedroom
server: rpi7
container: apcupsd
showStats: true
widget:
type: apcups
url: http://raspberrypi7:3551
- rpi8:
icon: apc.png
description: Great Room
server: rpi8
container: apcupsd
showStats: true
widget:
type: apcups
url: http://raspberrypi8:3551
- rpi9:
icon: apc.png
description: Meadow Room
server: rpi9
container: apcupsd
showStats: true
widget:
type: apcups
url: http://raspberrypi9:3551
- rpi10:
icon: apc.png
description: Network Shelf
server: rpi10
container: apcupsd
showStats: true
widget:
type: apcups
url: http://raspberrypi10:3551
settings.yaml:
---
# For configuration options and examples, please see:
# https://gethomepage.dev/configs/settings/
backgroundOpacity: 0.6
cardBlur: md # or sm, lg
headerStyle: underlined # or boxed, boxedWidgets, clean
background: https://i.ibb.co/6XTvshc/forest-bridge.gif
providers:
openweathermap: openweathermapapikey
weatherapi: weatherapiapikey
layout:
Up'n'Away Router:
header: false # hides "Row 1" so you only see the child headers
style: row
columns: 4
useEqualHeights: true
Ubiquiti Router:
style: row
columns: 1
useEqualHeights: true
Up'n'Away Network: # parent that holds both groups
header: false # hides "Row 1" so you only see the child headers
style: row
columns: 4
useEqualHeights: true
Proxmox Servers:
style: row
columns: 1
useEqualHeights: true
DNS Servers:
style: row
columns: 1
useEqualHeights: true
Tailnet:
style: row
columns: 4
useEqualHeights: true
Proxmox LXCs/VMs:
style: row
columns: 4
useEqualHeights: true
Container Management:
style: row
columns: 4
useEqualHeights: true
UPS Backups:
style: row
columns: 4
useEqualHeights: true
docker.yaml:
---
# For configuration options and examples, please see:
# https://gethomepage.dev/configs/docker/
htpc6:
socket: /var/run/docker.sock
nuc10-vm2:
host: nuc10-vm2
port: 2375
gluetun:
host: gluetun
port: 2375
rpi4:
host: raspberrypi4
port: 2375
rpi6:
host: raspberrypi6
port: 2375
rpi7:
host: raspberrypi7
port: 2375
rpi8:
host: raspberrypi8
port: 2375
rpi9:
host: raspberrypi9
port: 2375
rpi10:
host: raspberrypi10
port: 2375
rpi11:
host: raspberrypi11
port: 2375
rpi12:
host: raspberrypi12
port: 2375
proxmox.yaml:
---
pve0:
url: https://pve0:8006
token: "{{HOMEPAGE_VAR_PVE0_TOKEN_ID}}"
secret: "{{HOMEPAGE_VAR_PVE0_TOKEN_SECRET}}"
pve2:
url: https://pve2:8006
token: "{{HOMEPAGE_VAR_PVE2_TOKEN_ID}}"
secret: "{{HOMEPAGE_VAR_PVE2_TOKEN_SECRET}}"
And, here's the Docker Compose I'm using:
services:
homepage:
image: ghcr.io/gethomepage/homepage:${TAG:-latest}
container_name: homepage
dns_search: ${DOMAIN} # Change to the name of your LAN's domain, which is usually local or localdomain
dns_opt:
- ndots:${NDOTS:-1}
ports:
- ${HOST_PORT:-3000}:3000
environment:
- HOMEPAGE_ALLOWED_HOSTS=${HOMEPAGE_ALLOWED_HOSTS} # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
- HOMEPAGE_VAR_UDM_SE_KEY=${HOMEPAGE_VAR_UDM_SE_KEY}
- HOMEPAGE_VAR_PVE0_TOKEN_ID=${HOMEPAGE_VAR_PVE0_TOKEN_ID}
- HOMEPAGE_VAR_PVE0_TOKEN_SECRET=${HOMEPAGE_VAR_PVE0_TOKEN_SECRET}
- HOMEPAGE_VAR_PVE2_TOKEN_ID=${HOMEPAGE_VAR_PVE2_TOKEN_ID}
- HOMEPAGE_VAR_PVE2_TOKEN_SECRET=${HOMEPAGE_VAR_PVE2_TOKEN_SECRET}
- HOMEPAGE_VAR_TAILSCALE_API_KEY=${HOMEPAGE_VAR_TAILSCALE_API_KEY}
- HOMEPAGE_VAR_HTPC6_PORTAINER_TOKEN=${HOMEPAGE_VAR_HTPC6_PORTAINER_TOKEN}
- HOMEPAGE_VAR_NUC10_VM2_PORTAINER_TOKEN=${HOMEPAGE_VAR_NUC10_VM2_PORTAINER_TOKEN}
- HOMEPAGE_VAR_GLUETUN_PORTAINER_TOKEN=${HOMEPAGE_VAR_GLUETUN_PORTAINER_TOKEN}
- HOMEPAGE_VAR_RPI4_PORTAINER_TOKEN=${HOMEPAGE_VAR_RPI4_PORTAINER_TOKEN}
- HOMEPAGE_VAR_RPI6_PORTAINER_TOKEN=${HOMEPAGE_VAR_RPI6_PORTAINER_TOKEN}
- HOMEPAGE_VAR_RPI10_PORTAINER_TOKEN=${HOMEPAGE_VAR_RPI10_PORTAINER_TOKEN}
- HOMEPAGE_VAR_RPI3_PIHOLE_APP_PASSWORD=${HOMEPAGE_VAR_RPI3_PIHOLE_APP_PASSWORD}
- HOMEPAGE_VAR_RPI4_PIHOLE_APP_PASSWORD=${HOMEPAGE_VAR_RPI4_PIHOLE_APP_PASSWORD}
volumes:
- ${HOST_DIR:-/data}/homepage:/app/config
- ${HOST_DIR:-/data}/homepage/images:/app/public/images
- /var/run/docker.sock:/var/run/docker.sock # (optional) For docker integrations
Here's the GIF I'm using for the background:
