Files
home-network-k3s-impl/platform/homepage/configmap.yaml
T
jakman85andClaude Opus 4.8 b6a48203bc fix(homepage): add required proxmox.yaml config to stop CrashLoopBackOff
Homepage v2.1.2 treats proxmox.yaml as a required config file (present in
the image skeleton dir /app/src/skeleton alongside services/settings/
bookmarks/widgets/docker/kubernetes/custom.*). On startup it copies a
default skeleton into /app/config for any required file that is missing.
The ConfigMap provided every skeleton file except proxmox.yaml, so the pod
tried to copyfile the proxmox skeleton into the read-only subPath-mounted
/app/config and crashed with EACCES -> CrashLoopBackOff -> Gateway "no
healthy upstream".

Provide an empty proxmox.yaml in the ConfigMap and mount it via subPath
like the other config files, so Homepage finds all required files and
never writes at runtime. Verified the full required set against the running
image's skeleton dir (9 files); proxmox.yaml was the only missing one.
Bumped checksum/config annotation to re-roll the pod.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-08-28 12:59:09 -05:00

144 lines
4.8 KiB
YAML

---
# Homepage configuration (gethomepage). Each key is mounted read-only into /app/config via a subPath
# (deployment.yaml) — the exact file set the app expects (services/settings/bookmarks/widgets +
# docker/kubernetes/proxmox + custom.css/js). Plain link tiles only: NO service-widget API keys are wired
# here (that needs per-service secrets — flagged as a follow-up), so nothing sensitive lives in this
# ConfigMap. Icons use the app-BUNDLED Material Design set (`mdi-*`) so no icon CDN is fetched and the
# pod's egress stays DNS-only (networkpolicy.yaml). Brand icons (selfh.st/dashboard-icons) would need
# world:443 egress — deliberately not used.
apiVersion: v1
kind: ConfigMap
metadata:
name: homepage
namespace: homepage
labels:
app.kubernetes.io/name: homepage
data:
settings.yaml: |
---
title: Home Network
headerStyle: clean
theme: dark
color: slate
hideVersion: true
layout:
Platform:
style: row
columns: 3
Media:
style: row
columns: 3
Network & Infra:
style: row
columns: 3
services.yaml: |
---
- Platform:
- Headlamp:
href: https://headlamp.home.keithjackson.dev
description: Kubernetes dashboard (per-user OIDC RBAC)
icon: mdi-kubernetes
- Grafana:
href: https://grafana.home.keithjackson.dev
description: Metrics, logs & dashboards (fronts Prometheus/Loki/Alertmanager)
icon: mdi-chart-areaspline
- Semaphore:
href: https://semaphore.home.keithjackson.dev
description: Ansible automation & CI
icon: mdi-cog-play
- Gitea:
href: https://gitea.home.keithjackson.dev
description: Git hosting & Actions (GitOps source of truth)
icon: mdi-git
- Keycloak:
href: https://keycloak.home.keithjackson.dev
description: Identity provider (SSO / OIDC)
icon: mdi-account-key
- Media:
- Plex:
href: https://plex.home.keithjackson.dev
description: Media streaming
icon: mdi-plex
- Overseerr:
href: https://seerr.home.keithjackson.dev
description: Media requests
icon: mdi-play-box-multiple
- Sonarr:
href: https://sonarr.home.keithjackson.dev
description: TV library manager
icon: mdi-television-classic
- Radarr:
href: https://radarr.home.keithjackson.dev
description: Movie library manager
icon: mdi-movie-open
- Jackett:
href: https://jackett.home.keithjackson.dev
description: Indexer proxy
icon: mdi-magnify
- qBittorrent:
href: https://qbittorrent.home.keithjackson.dev
description: Download client (VPN egress)
icon: mdi-download-network
- Network & Infra:
- Pi-hole:
href: https://pihole.home.keithjackson.dev
description: Network-wide DNS & ad-blocking
icon: mdi-shield-check
- UniFi:
href: https://unifi.home.keithjackson.dev:11443
description: Network controller (UOS)
icon: mdi-router-network
- Nextcloud:
href: https://nextcloud.home.keithjackson.dev
description: Files, calendar & contacts
icon: mdi-cloud
bookmarks.yaml: |
---
- Operations:
- Gitea (external):
- abbr: GT
href: https://gitea.keithjackson.dev
- Auth portal:
- abbr: SSO
href: https://auth.home.keithjackson.dev
- Reference:
- Homepage docs:
- abbr: HP
href: https://gethomepage.dev
widgets.yaml: |
---
- datetime:
text_size: xl
format:
dateStyle: long
timeStyle: short
hour12: false
- search:
provider: duckduckgo
target: _blank
# No Docker integration (Homepage does not reach the Docker socket in-cluster).
docker.yaml: |
---
# No Kubernetes integration (no SA / cluster RBAC granted — avoids scope creep; the kubernetes
# widget would need a read-only ServiceAccount. Left empty deliberately).
kubernetes.yaml: |
---
# No Proxmox integration. Homepage v2.1.2 treats proxmox.yaml as a REQUIRED config file (it is in
# the image skeleton dir /app/src/skeleton) and copies a default skeleton into /app/config when it
# is missing — which EACCES-crashes the pod because the config dir is a read-only subPath mount.
# Provide it here (empty) so Homepage finds it and never writes at runtime. A live PVE widget would
# need pve url/token/secret in a Secret — deliberately not wired.
proxmox.yaml: |
---
custom.css: ""
custom.js: ""