From d9781e9f2a138cde901801c5cff1e896470e5814 Mon Sep 17 00:00:00 2001 From: aggarwalakshun Date: Fri, 2 May 2025 23:20:34 +0530 Subject: [PATCH] manifests for homepage --- .../apps/homepage/homepage-clusterRole.yml | 62 ++++ cluster/apps/homepage/homepage-config.yml | 332 ++++++++++++++++++ cluster/apps/homepage/homepage-secret.yml | 11 + .../apps/homepage/homepage-svc-account.yml | 10 + cluster/apps/homepage/homepage-svc.yml | 15 + cluster/apps/homepage/homepage.yml | 88 +++++ 6 files changed, 518 insertions(+) create mode 100644 cluster/apps/homepage/homepage-clusterRole.yml create mode 100644 cluster/apps/homepage/homepage-config.yml create mode 100644 cluster/apps/homepage/homepage-secret.yml create mode 100644 cluster/apps/homepage/homepage-svc-account.yml create mode 100644 cluster/apps/homepage/homepage-svc.yml create mode 100644 cluster/apps/homepage/homepage.yml diff --git a/cluster/apps/homepage/homepage-clusterRole.yml b/cluster/apps/homepage/homepage-clusterRole.yml new file mode 100644 index 0000000..bb455ca --- /dev/null +++ b/cluster/apps/homepage/homepage-clusterRole.yml @@ -0,0 +1,62 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: homepage + labels: + app.kubernetes.io/name: homepage +rules: + - apiGroups: + - "" + resources: + - namespaces + - pods + - nodes + verbs: + - get + - list + - apiGroups: + - extensions + - networking.k8s.io + resources: + - ingresses + verbs: + - get + - list + - apiGroups: + - traefik.io + resources: + - ingressroutes + verbs: + - get + - list + - apiGroups: + - gateway.networking.k8s.io + resources: + - httproutes + - gateways + verbs: + - get + - list + - apiGroups: + - metrics.k8s.io + resources: + - nodes + - pods + verbs: + - get + - list +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: homepage + labels: + app.kubernetes.io/name: homepage +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: homepage +subjects: + - kind: ServiceAccount + name: homepage + namespace: default diff --git a/cluster/apps/homepage/homepage-config.yml b/cluster/apps/homepage/homepage-config.yml new file mode 100644 index 0000000..39f79bc --- /dev/null +++ b/cluster/apps/homepage/homepage-config.yml @@ -0,0 +1,332 @@ +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: homepage + namespace: default + labels: + app.kubernetes.io/name: homepage +data: + docker.yaml: "" + bookmarks.yaml: "" + kubernetes.yaml: | + mode: cluster + widgets.yaml: | + - kubernetes: + cluster: + show: true + cpu: true + memory: true + showLabel: true + label: "cluster" + nodes: + show: true + cpu: true + memory: true + showLabel: true + - search: + provider: google + target: _blank + settings.yaml: | + layout: + Proxmox (Nvidia): + style: row + columns: 5 + tab: Stats + Proxmox (Main): + style: row + columns: 5 + tab: Stats + Proxmox (Acer): + style: row + columns: 5 + tab: Stats + Proxmox (HP): + style: row + columns: 5 + tab: Stats + Apps: + style: row + columns: 4 + tab: Apps + Bookmarks: + style: row + columns: 5 + tab: Bookmarks + useEqualHeights: true + hideErrors: true + services.yaml: | + - Apps: + - Sonarr: + href: https://sonarr.akshun-lab.uk + description: series + icon: sonarr.png + widget: + type: sonarr + url: http://10.0.0.14:8989 + key: "${SONARR_API_KEY}" + - Radarr: + href: https://radarr.akshun-lab.uk + description: movies + icon: radarr.png + widget: + type: radarr + url: http://10.0.0.14:7878 + key: "${RADARR_API_KEY}" + - Bazarr: + href: https://bazarr.akshun-lab.uk + description: subtitles + icon: bazarr.png + widget: + type: bazarr + url: http://10.0.0.14:6767 + key: "${BAZARR_API_KEY}" + - Jellyfin: + href: https://jellyfin.akshun-lab.uk + description: streaming + icon: jellyfin.png + widget: + type: jellyfin + url: http://10.0.0.14:8096 + key: "${JELLYFIN_API_KEY}" + - qBittorrent: + href: https://qbittorrent.akshun-lab.uk + description: torrent client + icon: qbittorrent.png + widget: + type: qbittorrent + username: admin + password: "${QBITTORRENT_PASSWORD}" + url: http://10.0.0.14:8080 + - Jellyseerr: + href: https://jellyseerr.akshun-lab.uk + description: request movies and shows + icon: jellyseerr.png + widget: + type: jellyseerr + url: http://10.0.0.14:5055 + key: "${JELLYSEERR_API_KEY}" + - Prowlarr: + href: https://prowlarr.akshun-lab.uk + description: indexers + icon: prowlarr.png + widget: + type: prowlarr + url: http://10.0.0.14:9696 + key: "${PROWLARR_API_KEY}" + - Speedtest: + href: https://speedtest.akshun-lab.uk + description: speedtest + icon: si-speedtest.svg + widget: + type: speedtest + url: http://10.0.0.14:8181 + - Immich: + href: https://immich.akshun-lab.uk + description: photos + icon: immich.png + widget: + type: immich + url: http://10.0.0.14:2283 + key: "${IMMICH_API_KEY}" + version: 2 + - Proxmox: + href: https://proxmox.akshun-lab.uk + description: VMs + icon: proxmox.png + widget: + type: proxmox + url: https://10.0.0.100:8006 + username: api@pam!homepage + password: "${PROXMOX_PASSWORD}" + - Gitea: + href: https://gitea.akshun-lab.uk + description: Git Server + icon: gitea.png + widget: + type: gitea + url: http://10.0.0.14:3011 + key: "${GITEA_API_KEY}" + - Crafty: + href: https://minecraft.akshun-lab.uk + description: crafty controller + icon: crafty-controller.png + widget: + type: minecraft + url: udp://192.168.1.3:25565 + - Invidious: + href: https://invidious.akshun-lab.uk + description: youtube frontend + icon: invidious.png + - Nextcloud: + href: https://nextcloud.akshun-lab.uk + description: files + icon: nextcloud.png + - VS Code: + href: https://vs.akshun-lab.uk + description: VS code server + icon: vscode.png + - Semaphore: + href: https://semaphore.akshun-lab.uk + description: ansible gui + icon: semaphore.png + - Open Media Vault: + href: https://omv.akshun-lab.uk + description: NAS + icon: openmediavault.png + - Ersatztv: + icon: ersatztv.png + description: live tv for jellyfin + href: https://ersatztv.akshun-lab.uk + - Jellystat: + icon: jellystat.png + description: jellyfin stats + href: https://jellystat.akshun-lab.uk + - Paperless NGX: + icon: paperless.png + description: documents OCR + href: https://ngx.akshun-lab.uk + - Longhorn: + icon: longhorn.png + description: kubernetes storage + href: https://longhorn.akshun-lab.uk + - Portainer: + icon: portainer.png + description: container management + href: https://portainer.akshun-lab.uk + - Rancher: + icon: rancher.png + description: kubernetes management + href: https://rancher.akshun-lab.uk + - Bookmarks: + - Disney: + href: https://www.hotstar.com + - Prime Video: + href: https://primevideo.com + - AngelOne: + href: https://www.angelone.in/trade/watchlist/chart + - MoneyControl: + href: https://moneycontrol.com + - SBI Netbanking: + href: https://retail.onlinesbi.sbi/retail/login.htm + - GW2 Wiki: + href: https://wiki.guildwars2.com/wiki/Event_timers + - GW2 Efficiency: + href: https://gw2efficiency.com + - Youtube: + href: https://youtube.com + - Reddit: + href: https://reddit.com + - Github: + href: https://github.com + - Twitch: + href: https://twitch.tv + - Proxmox (Nvidia): + - CPU Usage: + widget: + type: glances + url: http://192.168.1.113:61208 + metric: cpu + - Memory Usage: + widget: + type: glances + url: http://192.168.1.113:61208 + metric: memory + - Processes: + widget: + type: glances + url: http://192.168.1.113:61208 + metric: process + - Sensor: + widget: + type: glances + url: http://192.168.1.113:61208 + metric: sensor:Tctl + - Disk Usage: + widget: + type: glances + url: http://192.168.1.113:61208 + metric: disk:sda + - Proxmox (Main): + - CPU Usage: + widget: + type: glances + url: http://192.168.1.126:61208 + metric: cpu + - Memory Usage: + widget: + type: glances + url: http://192.168.1.126:61208 + metric: memory + - Processes: + widget: + type: glances + url: http://192.168.1.126:61208 + metric: process + - Sensor: + widget: + type: glances + url: http://192.168.1.126:61208 + metric: sensor:Package id 0 + - Disk Usage: + widget: + type: glances + url: http://192.168.1.126:61208 + metric: disk:nvme0n1 + - Proxmox (HP): + - CPU Usage: + widget: + type: glances + url: http://192.168.1.88:61208 + metric: cpu + - Memory Usage: + widget: + type: glances + url: http://192.168.1.88:61208 + metric: memory + - Processes: + widget: + type: glances + url: http://192.168.1.88:61208 + metric: process + - Sensor: + widget: + type: glances + url: http://192.168.1.88:61208 + metric: sensor:acpitz 1 + - Disk Usage: + widget: + type: glances + url: http://192.168.1.88:61208 + metric: disk:sda + - Proxmox (Acer): + - CPU Usage: + widget: + type: glances + url: http://192.168.1.128:61208 + metric: cpu + version: 4 + - Memory Usage: + widget: + type: glances + url: http://192.168.1.128:61208 + metric: memory + version: 4 + - Processes: + widget: + type: glances + url: http://192.168.1.128:61208 + metric: process + version: 4 + - Sensor: + widget: + type: glances + url: http://192.168.1.128:61208 + metric: sensor:pch_cannonlake 0 + version: 4 + - Disk Usage: + widget: + type: glances + url: http://192.168.1.128:61208 + metric: disk:nvme0n1 + version: 4 diff --git a/cluster/apps/homepage/homepage-secret.yml b/cluster/apps/homepage/homepage-secret.yml new file mode 100644 index 0000000..90988a9 --- /dev/null +++ b/cluster/apps/homepage/homepage-secret.yml @@ -0,0 +1,11 @@ +--- +apiVersion: v1 +kind: Secret +type: kubernetes.io/service-account-token +metadata: + name: homepage + namespace: default + labels: + app.kubernetes.io/name: homepage + annotations: + kubernetes.io/service-account.name: homepage diff --git a/cluster/apps/homepage/homepage-svc-account.yml b/cluster/apps/homepage/homepage-svc-account.yml new file mode 100644 index 0000000..9ab9a44 --- /dev/null +++ b/cluster/apps/homepage/homepage-svc-account.yml @@ -0,0 +1,10 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: homepage + namespace: default + labels: + app.kubernetes.io/name: homepage +secrets: + - name: homepage diff --git a/cluster/apps/homepage/homepage-svc.yml b/cluster/apps/homepage/homepage-svc.yml new file mode 100644 index 0000000..a34a9a1 --- /dev/null +++ b/cluster/apps/homepage/homepage-svc.yml @@ -0,0 +1,15 @@ +--- +apiVersion: v1 +kind: Service +metadata: + name: homepage-service + namespace: default +spec: + type: NodePort + selector: + app.kubernetes.io/name: homepage + ports: + - port: 3000 + targetPort: 3000 + nodePort: 30001 + protocol: TCP diff --git a/cluster/apps/homepage/homepage.yml b/cluster/apps/homepage/homepage.yml new file mode 100644 index 0000000..e491e5f --- /dev/null +++ b/cluster/apps/homepage/homepage.yml @@ -0,0 +1,88 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: homepage + namespace: default + labels: + app.kubernetes.io/name: homepage +spec: + revisionHistoryLimit: 3 + replicas: 1 + strategy: + type: RollingUpdate + selector: + matchLabels: + app.kubernetes.io/name: homepage + template: + metadata: + labels: + app.kubernetes.io/name: homepage + spec: + serviceAccountName: homepage + automountServiceAccountToken: true + dnsPolicy: ClusterFirst + enableServiceLinks: true + initContainers: + - name: substitute-config + image: alpine + envFrom: + - secretRef: + name: homepage-secrets + command: + - "sh" + - "-c" + - apk add gettext && envsubst < /mnt/init/services.yaml > /mnt/services.yaml + volumeMounts: + - name: homepage-config + mountPath: /mnt/init/services.yaml + subPath: services.yaml + - name: tmp + mountPath: /mnt + subPath: services.yaml + containers: + - name: homepage + image: "ghcr.io/gethomepage/homepage:v1.2.0" + imagePullPolicy: IfNotPresent + env: + - name: HOMEPAGE_ALLOWED_HOSTS + value: home.akshun-lab.uk + ports: + - name: http + containerPort: 3000 + protocol: TCP + volumeMounts: + - mountPath: /app/config/custom.js + name: homepage-config + subPath: custom.js + - mountPath: /app/config/custom.css + name: homepage-config + subPath: custom.css + - mountPath: /app/config/bookmarks.yaml + name: homepage-config + subPath: bookmarks.yaml + - mountPath: /app/config/docker.yaml + name: homepage-config + subPath: docker.yaml + - mountPath: /app/config/kubernetes.yaml + name: homepage-config + subPath: kubernetes.yaml + - mountPath: /app/config + name: tmp + subPath: services.yaml + - mountPath: /app/config/settings.yaml + name: homepage-config + subPath: settings.yaml + - mountPath: /app/config/widgets.yaml + name: homepage-config + subPath: widgets.yaml + - mountPath: /app/config/logs + name: logs + volumes: + - name: homepage-config + configMap: + name: homepage + - name: logs + emptyDir: {} + - name: tmp + emptyDir: {}