Files
esh-pfi-infrastructure/stacks/homepage/conf/settings.yaml
T
vh 9d92c4bd21 fix(homepage): pin UltraSeedbox to one tab, dedupe Uptime Kuma, size columns to members
UltraSeedbox had no layout: entry, and Homepage renders an untabbed group on
every tab — eight full-width bookmark bars repeated four times. Pinned to Main
with a row layout.

Uptime Kuma rendered twice: a manual services.yaml block under Monitoring plus
homepage.group=Apps on the container. Dropped the manual block, moved the
label to Monitoring, added homepage.siteMonitor. Adopted the previously
unmanaged uptimekuma stack into stacks/ so the label is version-controlled.

Column counts declared more columns than groups had members, leaving the last
row of several groups mostly empty. Columns now track member counts.

Also records an UNRESOLVED regression: since the container was recreated the
client render has lost its tab bar, wallpaper and i18n. Ruled out the config
changes (committed pre-cleanup config reproduces it) and v2.0.0 (v1.13.2
reproduces it). Server HTML still carries the tab markup, so the loss is
client-side. Details in the stack README.
2026-08-18 19:12:02 -07:00

171 lines
4.9 KiB
YAML

---
# https://gethomepage.dev/latest/configs/settings
title: ... all my base ...
theme: dark
color: slate
background:
image: https://w.wallhaven.cc/full/p9/wallhaven-p9gr2p.jpg
blur: sm
opacity: 20
headerStyle: boxedWidgets
providers:
openweathermap: openweathermapapikey
weatherapi: weatherapiapikey
quicklaunch:
searchDescriptions: true
hideInternetSearch: true
showSearchSuggestions: true
hideVisitURL: true
showStats: false
statusStyle: ""
# Force all cards in a row to match the tallest card's height. Without
# this, widget-bearing cards (Plex stats, Traefik metrics) stand taller
# than plain link cards and the grid looks ragged.
useEqualHeights: true
# Function-first layout, four-tab split:
# Main - daily-use apps, media, bookmarks, monitoring
# AI - the inference fleet, grouped by role (see below)
# Infrastructure - hardware, hypervisors, BMCs (per site)
# Toolchain - backend services running but rarely clicked
#
# The AI tab splits the fleet by function so a 20+ service list reads as
# sorted groups instead of one endless column. Group membership is set by
# the homepage.group=AI - <role> label on each service's compose file:
# AI - Inference LLM seats you call (gen, char-rp, char-rp-reasoning, summarizer)
# AI - Eval & Retrieval judges, reward, rerank, embed, image-quality
# AI - Gateways & Chat routing gateway, control plane, chat frontends
# AI - Speech (TTS) text-to-speech engines
# AI - Audio Tools speech-to-text + audio dataset tooling
# AI - Image & Media image/video generation + pipelines
# AI - Dormant stopped stacks (rollback seats, retired auditions)
#
# COLUMN COUNTS ARE NOT A STYLE CHOICE — they are the member count.
# `columns: N` lays the group out N-per-row and leaves the remainder of the
# last row as dead space. A 1-member group at columns:4 renders one card and
# three empty cells, which is what made this dashboard look ragged before
# 2026-08-18. Rule: set columns to the member count, or to the divisor that
# leaves the smallest remainder. Re-check when a group gains or loses a
# service — `GET /api/services` prints the live per-group counts.
#
# EVERY GROUP NEEDS A `tab:` — including bookmark groups. A group with no tab
# assignment renders on ALL FOUR TABS. That is how UltraSeedbox ended up
# repeated at the bottom of every tab (fixed 2026-08-18); it is Homepage
# behaviour, not a bug, and it will happen again to the next group added
# without a tab.
layout:
Notes:
icon: mdi-note-text-outline
tab: Main
style: row
columns: 1
News:
icon: mdi-rss
tab: Main
style: row
columns: 2
Monitoring:
icon: mdi-chart-line
tab: Main
style: row
columns: 4
Apps:
icon: mdi-apps
tab: Main
style: row
columns: 4
# 2 wide, not 3 — Plex and Jellyfin carry stat-block widgets that get
# squeezed to unreadable at 4-across, and 4 members / 3 columns orphaned
# Jellyfin onto a row of its own.
Media:
icon: mdi-play-box-multiple
tab: Main
style: row
columns: 2
Games:
icon: mdi-gamepad-square
tab: Main
style: row
columns: 1
# Bookmarks. Listed here for the tab pin above all else — without it this
# group appears on every tab. `style: row` also turns the eight entries
# from full-width stacked bars into a compact grid.
UltraSeedbox:
icon: mdi-download-network
tab: Main
style: row
columns: 4
# --- AI tab: the inference fleet, ordered core-models -> support -> apps ---
AI - Inference:
icon: mdi-brain
tab: AI
style: row
columns: 4
AI - Eval & Retrieval:
icon: mdi-scale-balance
tab: AI
style: row
columns: 5
AI - Gateways & Chat:
icon: mdi-router-network
tab: AI
style: row
columns: 4
AI - Speech (TTS):
icon: mdi-account-voice
tab: AI
style: row
columns: 4
AI - Audio Tools:
icon: mdi-waveform
tab: AI
style: row
columns: 2
AI - Image & Media:
icon: mdi-image-multiple
tab: AI
style: row
columns: 2
# Stopped stacks kept for rollback / superseded seats / retired auditions.
# They stay 'created' (not running) via `docker compose up --no-start`, so
# they show here as offline cards and revive with `docker compose start`.
AI - Dormant:
icon: mdi-sleep
tab: AI
style: row
columns: 4
Infra - ANA:
icon: si-proxmox
tab: Infrastructure
style: row
columns: 4
Infra - NH3:
icon: si-proxmox
tab: Infrastructure
style: row
columns: 3
Infra - IRV:
icon: mdi-brain
tab: Infrastructure
style: row
columns: 2
Infra - ESH:
icon: si-proxmox
tab: Infrastructure
style: row
columns: 4
Service Networking:
icon: mdi-transit-connection-variant
tab: Toolchain
style: row
columns: 4
Toolchain:
icon: mdi-toolbox
tab: Toolchain
style: row
columns: 4