- appset: goTemplate, filename-based app names, .path.path IS the directory, exclude apps/root from the glob (v3.5 git files-generator schema) - remove empty Secret stubs: with prune:true they would overwrite live secret values (openwebui, paperless, vaultwarden-admin-token, password) - secrets stay cluster-managed, not in git
227 lines
7.0 KiB
YAML
227 lines
7.0 KiB
YAML
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
labels:
|
|
app.kubernetes.io/name: homepage
|
|
name: homepage
|
|
namespace: default
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app.kubernetes.io/name: homepage
|
|
strategy:
|
|
type: Recreate
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app.kubernetes.io/name: homepage
|
|
spec:
|
|
automountServiceAccountToken: true
|
|
containers:
|
|
- env:
|
|
- name: POD_IP
|
|
valueFrom:
|
|
fieldRef:
|
|
apiVersion: v1
|
|
fieldPath: status.podIP
|
|
- name: HOMEPAGE_ALLOWED_HOSTS
|
|
value: '*'
|
|
image: ghcr.io/gethomepage/homepage:latest
|
|
imagePullPolicy: Always
|
|
livenessProbe:
|
|
failureThreshold: 3
|
|
httpGet:
|
|
path: /
|
|
port: 3000
|
|
scheme: HTTP
|
|
initialDelaySeconds: 30
|
|
periodSeconds: 10
|
|
successThreshold: 1
|
|
timeoutSeconds: 1
|
|
name: homepage
|
|
ports:
|
|
- containerPort: 3000
|
|
name: http
|
|
protocol: TCP
|
|
readinessProbe:
|
|
failureThreshold: 3
|
|
httpGet:
|
|
path: /
|
|
port: 3000
|
|
scheme: HTTP
|
|
initialDelaySeconds: 5
|
|
periodSeconds: 5
|
|
successThreshold: 1
|
|
timeoutSeconds: 1
|
|
resources:
|
|
limits:
|
|
cpu: 500m
|
|
memory: 512Mi
|
|
requests:
|
|
cpu: 100m
|
|
memory: 128Mi
|
|
terminationMessagePath: /dev/termination-log
|
|
terminationMessagePolicy: File
|
|
volumeMounts:
|
|
- mountPath: /app/config/logs
|
|
name: logs
|
|
- mountPath: /app/config
|
|
name: homepage-config
|
|
- mountPath: /app/public/images
|
|
name: homepage-config
|
|
subPath: images
|
|
dnsPolicy: ClusterFirst
|
|
enableServiceLinks: true
|
|
restartPolicy: Always
|
|
schedulerName: default-scheduler
|
|
securityContext: {}
|
|
serviceAccount: homepage
|
|
serviceAccountName: homepage
|
|
terminationGracePeriodSeconds: 30
|
|
volumes:
|
|
- name: homepage-config
|
|
persistentVolumeClaim:
|
|
claimName: homepage-config
|
|
- emptyDir: {}
|
|
name: logs
|
|
status:
|
|
availableReplicas: 1
|
|
conditions:
|
|
- lastTransitionTime: '2026-05-19T01:51:47Z'
|
|
lastUpdateTime: '2026-08-17T09:07:50Z'
|
|
message: ReplicaSet "homepage-7b47bf67fb" has successfully progressed.
|
|
reason: NewReplicaSetAvailable
|
|
status: 'True'
|
|
type: Progressing
|
|
- lastTransitionTime: '2026-08-28T06:04:23Z'
|
|
lastUpdateTime: '2026-08-28T06:04:23Z'
|
|
message: Deployment has minimum availability.
|
|
reason: MinimumReplicasAvailable
|
|
status: 'True'
|
|
type: Available
|
|
observedGeneration: 96
|
|
readyReplicas: 1
|
|
replicas: 1
|
|
terminatingReplicas: 0
|
|
updatedReplicas: 1
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
labels:
|
|
app.kubernetes.io/name: homepage
|
|
name: homepage
|
|
namespace: default
|
|
spec:
|
|
internalTrafficPolicy: Cluster
|
|
ipFamilies:
|
|
- IPv4
|
|
ipFamilyPolicy: SingleStack
|
|
ports:
|
|
- name: http
|
|
port: 3000
|
|
protocol: TCP
|
|
targetPort: http
|
|
selector:
|
|
app.kubernetes.io/name: homepage
|
|
sessionAffinity: None
|
|
type: ClusterIP
|
|
status:
|
|
loadBalancer: {}
|
|
---
|
|
apiVersion: networking.k8s.io/v1
|
|
kind: Ingress
|
|
metadata:
|
|
labels:
|
|
app.kubernetes.io/name: homepage
|
|
name: homepage
|
|
namespace: default
|
|
spec:
|
|
ingressClassName: nginx
|
|
rules:
|
|
- host: homepage.haven
|
|
http:
|
|
paths:
|
|
- backend:
|
|
service:
|
|
name: homepage
|
|
port:
|
|
number: 3000
|
|
path: /
|
|
pathType: Prefix
|
|
status:
|
|
loadBalancer:
|
|
ingress:
|
|
- ip: 192.168.20.204
|
|
---
|
|
apiVersion: v1
|
|
kind: PersistentVolumeClaim
|
|
metadata:
|
|
name: homepage-config
|
|
namespace: default
|
|
spec:
|
|
accessModes:
|
|
- ReadWriteMany
|
|
resources:
|
|
requests:
|
|
storage: 1Gi
|
|
storageClassName: nfs-client
|
|
volumeMode: Filesystem
|
|
status:
|
|
accessModes:
|
|
- ReadWriteMany
|
|
capacity:
|
|
storage: 1Gi
|
|
phase: Bound
|
|
---
|
|
apiVersion: v1
|
|
data:
|
|
bookmarks.yaml: "- Developer:\n - Github:\n - abbr: GH\n href:\
|
|
\ https://github.com/\n"
|
|
custom.css: ''
|
|
custom.js: ''
|
|
docker.yaml: ''
|
|
kubernetes.yaml: 'mode: cluster
|
|
|
|
'
|
|
services.yaml: "- Essentials:\n - AdGuard Home:\n href: http://adguard.haven/\n\
|
|
\ icon: adguard-home\n widget:\n type: adguard\n \
|
|
\ url: http://adguard.haven/\n username: ivanch\n password:\
|
|
\ ESVEPnull\n - AdGuard Home 2:\n href: http://adguard2.haven/\n \
|
|
\ icon: adguard-home\n widget:\n type: adguard\n \
|
|
\ url: http://adguard2.haven/\n username: ivanch\n password:\
|
|
\ ESVEPnull\n - Home Assistant:\n href: http://homeassistant.haven/\n\
|
|
\ - Traefik:\n href: http://traefik.haven/\n - Dockge:\n href:\
|
|
\ http://dockge.haven/\n - Proxmox:\n href: https://proxmox.haven:8006/\n\
|
|
\ widget:\n type: proxmox\n url: https://proxmox.haven:8006/\n\
|
|
\ token: homepage@pam!token\n secret: 7cadfc2d-560a-4bb4-8d5f-a29f394bc9a0\n\
|
|
\n- Media:\n - Jellyfin:\n href: http://tv.haven/\n icon: jellyfin.png\n\
|
|
\ widget:\n type: jellyfin\n url: http://tv.haven/\n\
|
|
\ key: c933070d9c8341bf8c64e7a792aaa6b9\n enableBlocks: true\n\
|
|
\ enableNowPlaying: true\n - Sonarr:\n href: http://sonarr.haven/\n\
|
|
\ - Radarr:\n href: http://radarr.haven/\n - Prowlarr:\n href:\
|
|
\ http://prowlarr.haven/\n\n- Storage:\n - Transmission:\n href: http://transmission.haven/\n\
|
|
\ - qBitTorrent:\n href: http://qbittorrent.haven/\n - OpenMediaVault:\n\
|
|
\ href: http://omv.haven/\n - ArchiveBox:\n href: http://archive.haven/\n\
|
|
\ - FileBrowser:\n href: http://files.haven/\n - Paperless:\n \
|
|
\ href: http://paperless.haven/\n\n- Other:\n - Uptime Kuma:\n href:\
|
|
\ http://uptimekuma.haven/\n - WireGuard:\n href: http://vpn.haven/\n\
|
|
\ - Beszel:\n href: http://beszel.haven/\n\n- Zephyr:\n - Gitea:\n\
|
|
\ href: http://gitea.ivanch.me/\n - Portainer:\n href: http://portainer.ivanch.me/\n\
|
|
\ - Nginx Proxy Manager:\n href: http://manager.ivanch.me/\n - Homepage:\n\
|
|
\ href: http://ivanch.me/\n"
|
|
settings.yaml: ''
|
|
widgets.yaml: "- kubernetes:\n cluster:\n show: true\n cpu: true\n\
|
|
\ memory: true\n # network: true\n showLabel: true\n label:\
|
|
\ \"Haven\"\n nodes:\n show: true\n cpu: true\n memory: true\n\
|
|
\ showLabel: true\n- resources:\n backend: resources\n expanded: true\n\
|
|
\ cpu: true\n memory: true\n network: default\n- search:\n provider:\
|
|
\ duckduckgo\n target: _blank\n"
|
|
kind: ConfigMap
|
|
metadata:
|
|
labels:
|
|
app.kubernetes.io/name: homepage
|
|
name: homepage
|
|
namespace: default
|