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]>
This commit is contained in:
1 parent
099c1408b8
commit
b6a48203bc
2 files changed
+13
-2
No files matched your search
@@ -1,7 +1,7 @@
|
||||
---
|
||||
# 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 + custom.css/js). Plain link tiles only: NO service-widget API keys are wired
|
||||
# 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
|
||||
@@ -131,5 +131,13 @@ data:
|
||||
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: ""
|
||||
@@ -25,7 +25,7 @@ spec:
|
||||
app.kubernetes.io/name: homepage
|
||||
annotations:
|
||||
# Re-roll the pod when the config changes (ConfigMap subPath mounts do NOT hot-reload).
|
||||
checksum/config: config-v1
|
||||
checksum/config: config-v2
|
||||
spec:
|
||||
automountServiceAccountToken: false
|
||||
securityContext:
|
||||
@@ -89,6 +89,9 @@ spec:
|
||||
- { name: homepage-config, mountPath: /app/config/widgets.yaml, subPath: widgets.yaml, readOnly: true }
|
||||
- { name: homepage-config, mountPath: /app/config/docker.yaml, subPath: docker.yaml, readOnly: true }
|
||||
- { name: homepage-config, mountPath: /app/config/kubernetes.yaml, subPath: kubernetes.yaml, readOnly: true }
|
||||
# proxmox.yaml is ALSO a required file in Homepage v2.1.2's skeleton — provide it so the
|
||||
# app never copies a skeleton into the read-only /app/config (EACCES crash otherwise).
|
||||
- { name: homepage-config, mountPath: /app/config/proxmox.yaml, subPath: proxmox.yaml, readOnly: true }
|
||||
- { name: homepage-config, mountPath: /app/config/custom.css, subPath: custom.css, readOnly: true }
|
||||
- { name: homepage-config, mountPath: /app/config/custom.js, subPath: custom.js, readOnly: true }
|
||||
# Writable scratch for Homepage's runtime logs (it writes /app/config/logs).
|
||||
|
||||
Reference in new issue
Block a user