Homepage Dashboard

Purpose

Central dashboard for all homelab services, with Proxmox integration, per-VM stats, and a management UI.

URLs

  • Tailscale: https://runtipi.kangaroo-eel.ts.net:8443/
  • Local: http://runtipi.kangaroo-eel.ts.net:8082/
  • Manager UI: http://runtipi.kangaroo-eel.ts.net:8084/

Architecture

CT201 (runtipi)
├── Homepage container (port 8082) — main dashboard
├── Manager container (port 8084) — web UI for adding/removing apps
└── Tailscale serve (port 8443) — HTTPS proxy to Homepage

Tabs

TabContent
OverviewInfrastructure (2 cols) + Everyday (4 cols) + Resources
MediaJellyfin, arr stack, RSS
AIOmniRoute, LiteLLM, Lobe Chat, SearXNG
AgentsHermes, OpenClaw, Nanobot, Camofox
ToolsIT tools, Cyber Chef, etc. + Storage
MoreHome Assistant, N8n, Jupyter
All Apps114 apps in 5-column grid (alphabetical)

Proxmox Integration

  • Node widget: Shows live VM/LXC counts, CPU, memory for PVE node
  • Per-VM stats: Click “View Proxmox stats” on mapped services
  • API token: homepage@pve!homepage (privsep=0)
  • proxmox.yaml: Config at /opt/homepage/config/proxmox.yaml

VM/LXC Mapping

ServiceVMIDType
PVE(node)
Portainer docker200lxc
Portainer debianVM101qemu
Portainer openweb245lxc

Portainer on CT245 (openweb.kangaroo-eel.ts.net:9443) now uses a Tailscale/Let’s Encrypt cert (installed 2026-08-09). Files: /root/portainer-certs/portainer.{crt,key} mounted into the container, --sslcert/--sslkey. Renewal: /root/renew-portainer-cert.sh via crontab (04:00 on the 1st monthly) — tailscale cert --min-validity=20d then docker restart portainer. Cert validity ~90 days. | Runtipi | 201 | lxc | | Gitea | 221 | lxc | | FreshRSS | 260 | lxc | | NextCloud | 270 | lxc | | LiteLLM | 500 | lxc | | OmniRoute | 600 | lxc | | Ntfy | 241 | lxc | | Home Assistant | 100 | qemu | | N8n | 215 | lxc | | Mattermost | 255 | lxc | | SFTPGo | 299 | lxc | | Cliproxy API | 103 | lxc | | OpenClaw | 403 | qemu | | Zeroclaw | 333 | lxc | | Hermes | 460 | lxc | | Hindsight | 450 | lxc |

Configuration Files

All at /opt/homepage/config/ on CT201:

  • services.yaml — All apps, groups, and Proxmox mappings
  • settings.yaml — Theme, layout, tabs
  • custom.css — Warm amber accent overrides
  • widgets.yaml — System health, clock
  • proxmox.yaml — PVE API token
  • docker.yaml — Docker socket integration

Manager UI

Web form at port 8084 for adding/removing apps without SSH.

  • Add: Name, Category (dropdown), URL, optional Icon
  • Delete: Search apps, click Delete
  • Auto-restart: Homepage restarts after each change

Type anywhere on the dashboard to search services by name/description. Google search disabled — only searches your apps.

Theme

  • Dark base with warm amber (#d4a04a) accents
  • Bigger tiles (68px min-height, 40px icons)
  • Custom CSS in custom.css

Tailscale Serve

Port 443 occupied by Traefik on CT201 — Tailscale uses port 8443 instead.

Maintenance

  • Restart Homepage: docker restart homepage
  • Restart Manager: docker restart homepage-manager
  • Edit apps manually: Edit /opt/homepage/config/services.yaml then restart
  • Docker auto-discovery: Add homepage.group, homepage.name, homepage.href labels to containers