manifests for homepage

This commit is contained in:
2025-05-02 23:20:34 +05:30
parent 0027b15e17
commit d9781e9f2a
6 changed files with 518 additions and 0 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -0,0 +1,10 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: homepage
namespace: default
labels:
app.kubernetes.io/name: homepage
secrets:
- name: homepage

View File

@@ -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

View File

@@ -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: {}