Repository navigation
Conversation
Replace the unfinished in-repo homepage chart with an ATLAS app template built on the maintained M0NsTeRRR/homepage chart (OCI, tracks upstream releases). Config files are rendered from the `homepageConfig` values key into a ConfigMap (bedag/raw) and mounted as a directory via HOMEPAGE_CONFIG_DIR, so edits go live without a pod restart. Deploy to picon on h.<primary_domain>, internal-only via traefik's webinternal entrypoint, with the kubernetes info widget and pod-linked tiles for Home Assistant, n8n, dsh and Pi-hole. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
ATLAS ReviewChanges detected in 8 resource(s) across 2 release(s). Affected releasescyrannus/picon / homepage / homepage (new) (7 resources)ClusterRole/homepage (new) (63 lines)! + entire resource added:
+ ---
+ # Source: homepage/templates/rbac.yaml
+ apiVersion: rbac.authorization.k8s.io/v1
+ kind: ClusterRole
+ metadata:
+ name: homepage
+ namespace: homepage
+ labels:
+ helm.sh/chart: homepage-5.4.0
+ app.kubernetes.io/name: homepage
+ app.kubernetes.io/instance: homepage
+ app.kubernetes.io/version: "v2.4.0"
+ app.kubernetes.io/part-of: homepage
+ app.kubernetes.io/managed-by: Helm
+ rules:
+ - apiGroups:
+ - ""
+ resources:
+ - namespaces
+ - pods
+ - nodes
+ verbs:
+ - get
+ - list
+ - apiGroups:
+ - extensions
+ - networking.k8s.io
+ resources:
+ - ingresses
+ verbs:
+ - get
+ - list
+ - apiGroups:
+ - gateway.networking.k8s.io
+ resources:
+ - httproutes
+ - gateways
+ verbs:
+ - get
+ - list
+ - apiGroups:
+ - traefik.containo.us
+ - traefik.io
+ resources:
+ - ingressroutes
+ verbs:
+ - get
+ - list
+ - apiGroups:
+ - metrics.k8s.io
+ resources:
+ - nodes
+ - pods
+ verbs:
+ - get
+ - list
+ - apiGroups:
+ - apiextensions.k8s.io
+ resources:
+ - customresourcedefinitions/status
+ verbs:
+ - getClusterRoleBinding/homepage (new) (22 lines)! + entire resource added:
+ ---
+ # Source: homepage/templates/rbac.yaml
+ apiVersion: rbac.authorization.k8s.io/v1
+ kind: ClusterRoleBinding
+ metadata:
+ name: homepage
+ labels:
+ helm.sh/chart: homepage-5.4.0
+ app.kubernetes.io/name: homepage
+ app.kubernetes.io/instance: homepage
+ app.kubernetes.io/version: "v2.4.0"
+ app.kubernetes.io/part-of: homepage
+ app.kubernetes.io/managed-by: Helm
+ roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: homepage
+ subjects:
+ - kind: ServiceAccount
+ name: homepage
+ namespace: "homepage"Deployment/homepage (new) (98 lines)! + entire resource added:
+ ---
+ # Source: homepage/templates/deployment.yaml
+ apiVersion: apps/v1
+ kind: Deployment
+ metadata:
+ name: homepage
+ namespace: homepage
+ labels:
+ helm.sh/chart: homepage-5.4.0
+ app.kubernetes.io/name: homepage
+ app.kubernetes.io/instance: homepage
+ app.kubernetes.io/version: "v2.4.0"
+ app.kubernetes.io/part-of: homepage
+ app.kubernetes.io/managed-by: Helm
+ spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app.kubernetes.io/name: homepage
+ app.kubernetes.io/instance: homepage
+ template:
+ metadata:
+ labels:
+ helm.sh/chart: homepage-5.4.0
+ app.kubernetes.io/name: homepage
+ app.kubernetes.io/instance: homepage
+ app.kubernetes.io/version: "v2.4.0"
+ app.kubernetes.io/part-of: homepage
+ app.kubernetes.io/managed-by: Helm
+ spec:
+ serviceAccountName: homepage
+ securityContext:
+ fsGroup: 1000
+ fsGroupChangePolicy: OnRootMismatch
+ containers:
+ - name: homepage
+ securityContext:
+ allowPrivilegeEscalation: false
+ capabilities:
+ drop:
+ - ALL
+ privileged: false
+ readOnlyRootFilesystem: false
+ runAsGroup: 1000
+ runAsNonRoot: true
+ runAsUser: 1000
+ seccompProfile:
+ type: RuntimeDefault
+ image: "ghcr.io/gethomepage/homepage:v2.4.0"
+ imagePullPolicy: IfNotPresent
+ ports:
+ - name: http
+ containerPort: 3000
+ protocol: TCP
+ livenessProbe:
+ httpGet:
+ path: /api/healthcheck
+ port: http
+ readinessProbe:
+ httpGet:
+ path: /api/healthcheck
+ port: http
+ resources:
+ limits:
+ memory: 512Mi
+ requests:
+ cpu: 50m
+ memory: 128Mi
+ env:
+ - name: PUID
+ value: "1000"
+ - name: PGID
+ value: "1000"
+ - name: POD_IP
+ valueFrom:
+ fieldRef:
+ fieldPath: status.podIP
+ - name: HOMEPAGE_ALLOWED_HOSTS
+ value: h.max06.net,homepage,homepage.homepage,homepage.homepage.svc,homepage.homepage.svc.cluster,homepage.homepage.svc.cluster.local,$(POD_IP):3000
+ - name: HOMEPAGE_CONFIG_DIR
+ value: /app/config-managed
+ volumeMounts:
+ - name: config
+ mountPath: /app/config
+ - name: logs
+ mountPath: /app/config/logs
+ - mountPath: /app/config-managed
+ name: config-managed
+ readOnly: true
+ volumes:
+ - name: config
+ emptyDir: {}
+ - name: logs
+ emptyDir: {}
+ - configMap:
+ name: homepage-config
+ name: config-managedIngress/homepage (new) (30 lines)! + entire resource added:
+ ---
+ # Source: homepage/templates/ingress.yaml
+ apiVersion: networking.k8s.io/v1
+ kind: Ingress
+ metadata:
+ name: homepage
+ namespace: homepage
+ labels:
+ helm.sh/chart: homepage-5.4.0
+ app.kubernetes.io/name: homepage
+ app.kubernetes.io/instance: homepage
+ app.kubernetes.io/version: "v2.4.0"
+ app.kubernetes.io/part-of: homepage
+ app.kubernetes.io/managed-by: Helm
+ annotations:
+ external-dns.alpha.kubernetes.io/target: 192.168.30.241
+ traefik.ingress.kubernetes.io/router.entrypoints: webinternal
+ spec:
+ rules:
+ - host: "h.REDAC.RED"
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: homepage
+ port:
+ number: 80Service/homepage (new) (26 lines)! + entire resource added:
+ ---
+ # Source: homepage/templates/service.yaml
+ apiVersion: v1
+ kind: Service
+ metadata:
+ name: homepage
+ namespace: homepage
+ labels:
+ helm.sh/chart: homepage-5.4.0
+ app.kubernetes.io/name: homepage
+ app.kubernetes.io/instance: homepage
+ app.kubernetes.io/version: "v2.4.0"
+ app.kubernetes.io/part-of: homepage
+ app.kubernetes.io/managed-by: Helm
+ spec:
+ type: ClusterIP
+ ports:
+ - port: 80
+ targetPort: http
+ protocol: TCP
+ name: http
+ selector:
+ app.kubernetes.io/name: homepage
+ app.kubernetes.io/instance: homepage
+ ipFamilyPolicy: PreferDualStackServiceAccount/homepage (new) (16 lines)! + entire resource added:
+ ---
+ # Source: homepage/templates/serviceaccount.yaml
+ apiVersion: v1
+ kind: ServiceAccount
+ metadata:
+ name: homepage
+ namespace: homepage
+ labels:
+ helm.sh/chart: homepage-5.4.0
+ app.kubernetes.io/name: homepage
+ app.kubernetes.io/instance: homepage
+ app.kubernetes.io/version: "v2.4.0"
+ app.kubernetes.io/part-of: homepage
+ app.kubernetes.io/managed-by: Helm
+ automountServiceAccountToken: truePod/"homepage-test-connection" (new) (24 lines)! + entire resource added:
+ ---
+ # Source: homepage/templates/tests/test-connection.yaml
+ apiVersion: v1
+ kind: Pod
+ metadata:
+ name: "homepage-test-connection"
+ namespace: homepage
+ labels:
+ helm.sh/chart: homepage-5.4.0
+ app.kubernetes.io/name: homepage
+ app.kubernetes.io/instance: homepage
+ app.kubernetes.io/version: "v2.4.0"
+ app.kubernetes.io/part-of: homepage
+ app.kubernetes.io/managed-by: Helm
+ annotations:
+ "helm.sh/hook": test
+ spec:
+ containers:
+ - name: wget
+ image: busybox
+ command: ['wget']
+ args: ['homepage:80']
+ restartPolicy: Nevercyrannus/picon / homepage / homepage-extras (new) (1 resources)ConfigMap/homepage-config (new) (65 lines)! + entire resource added:
+ ---
+ # Source: raw/templates/resources.yaml
+ apiVersion: v1
+ kind: ConfigMap
+ metadata:
+ name: homepage-config
+ data:
+ settings.yaml: |
+ headerStyle: clean
+ logpath: /app/config
+ title: picon
+ kubernetes.yaml: |
+ gateway: true
+ ingress: true
+ mode: cluster
+ traefik: true
+ widgets.yaml: |
+ - kubernetes:
+ cluster:
+ cpu: true
+ label: cluster
+ memory: true
+ show: true
+ showLabel: true
+ nodes:
+ cpu: true
+ memory: true
+ show: true
+ showLabel: true
+ - search:
+ provider: duckduckgo
+ target: _blank
+ services.yaml: |
+ - Home:
+ - Home Assistant:
+ app: home-assistant
+ href: https://home.max06.net
+ icon: home-assistant.png
+ namespace: home-assistant
+ - Automation & AI:
+ - n8n:
+ app: n8n
+ href: https://n8n.max06.net
+ icon: n8n.png
+ namespace: n8n
+ - DeepSeek Harness:
+ app: deepseek-harness
+ href: https://dsh.max06.net
+ icon: mdi-robot-outline
+ namespace: dsh
+ - Network:
+ - Pi-hole:
+ app: pihole
+ href: https://pihole.max06.net/admin
+ icon: pi-hole.png
+ namespace: pihole
+ bookmarks.yaml: |
+ []
+ docker.yaml: |
+ {}
+ proxmox.yaml: |
+ {}
+ custom.css: ""
+ custom.js: "" |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
apps/homepagechart with an ATLAS app template built on M0NsTeRRR/homepage (oci://ghcr.io/m0nsterrr/helm-charts, chart 5.4.0 / homepage v2.4.0). It follows upstream releases within hours and ships the ClusterRole the kubernetes integration needs. The previously used jameswynn chart hasn't been updated since May 2025 and is stuck on homepage v1.2.0.homepageConfigvalues key into a ConfigMap by abedag/rawcompanion release.homepageConfigcan be overridden at any ATLAS level. The ConfigMap is mounted as a directory and homepage points at it viaHOMEPAGE_CONFIG_DIR, so edits go live within the kubelet sync period without a restart.h.<primary_domain>on traefik'swebinternalentrypoint (LAN-only, same pattern as dsh) with the kubernetes info widget. It also has pod-linked tiles for Home Assistant, n8n, dsh and Pi-hole, whose hosts come from the SOPSprimary_domain.Testing
Rendered via the repo entry (ATLAS@main), then applied by hand to a
homepagenamespace on picon and removed afterwards:https://h.max06.netreturned 200 through the internal LB, and external-dns published the record./api/widgets/kubernetesreturned cluster totals plus all 4 nodes, so RBAC and metrics-server work./api/kubernetes/{status,stats}reportedrunningwith CPU/memory for all four seeded services./api/servicesafter about 50s, with no pod restart.Notes
autoSync: false, matching the other picon deployments, so the first sync is manual in ArgoCD.cert-manager-webhook-inwxhelm release from picon. Its expired serving cert broke API discovery and blocked every namespace deletion. The CloudflareletsencryptClusterIssuer and the wildcard cert are unaffected.🤖 Generated with Claude Code