convert homepage to app-template

This commit is contained in:
2024-05-27 20:31:07 -05:00
parent 8bb3884fda
commit 1483756ec0
7 changed files with 769 additions and 565 deletions

View File

@@ -1,12 +1,19 @@
apiVersion: v2 apiVersion: v2
name: homepage-front name: homepage
version: 1.0.0 version: 1.0.0
description: Homepage
home: https://outline.alexlebens.net/doc/homepage-s2clWoI5EC home: https://outline.alexlebens.net/doc/homepage-s2clWoI5EC
keywords:
- dashboard
sources: sources:
- https://github.com/gethomepage/homepage - https://github.com/gethomepage/homepage
- https://github.com/alexlebens/helm-charts/tree/main/charts/homepage - https://github.com/alexlebens/helm-charts/tree/main/charts/homepage
maintainers:
- name: alexlebens
dependencies: dependencies:
- name: homepage - name: app-template
version: 0.0.15 alias: homepage
repository: http://alexlebens.github.io/helm-charts repository: https://bjw-s.github.io/helm-charts/
appVersion: v0.8.12 version: 3.2.1
icon: https://github.com/benphelps/homepage/blob/de584eae8f12a0d257e554e9511ef19bd2a1232c/public/mstile-150x150.png
appVersion: v0.8.13

View File

@@ -0,0 +1,19 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: {{ .Release.Name }}
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: {{ .Release.Name }}
subjects:
- kind: ServiceAccount
name: homepage
namespace: {{ .Release.Namespace }}

View File

@@ -0,0 +1,51 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ .Release.Name }}
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
rules:
- apiGroups:
- ""
resources:
- namespaces
- pods
- nodes
verbs:
- get
- list
- apiGroups:
- extensions
- networking.k8s.io
resources:
- ingresses
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:
- get

View File

@@ -0,0 +1,33 @@
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: homepage
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: homepage
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: Host(`home.alexlebens.net`)
middlewares:
- name: "authentik-{{ .Release.Name }}"
namespace: authentik
priority: 10
services:
- kind: Service
name: homepage
port: 80
- kind: Rule
match: Host(`home.alexlebens.net`) && PathPrefix(`/outpost.goauthentik.io/`)
priority: 15
services:
- kind: Service
name: authentik-outpost-proxy
port: 9000
namespace: authentik

View File

@@ -0,0 +1,27 @@
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: "authentik-{{ .Release.Name }}"
namespace: authentik
labels:
app.kubernetes.io/name: "authentik-{{ .Release.Name }}"
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: auth
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
forwardAuth:
address: http://authentik-outpost-proxy.authentik:9000/outpost.goauthentik.io/auth/traefik
trustForwardHeader: true
authResponseHeaders:
- X-authentik-username
- X-authentik-groups
- X-authentik-email
- X-authentik-name
- X-authentik-uid
- X-authentik-jwt
- X-authentik-meta-jwks
- X-authentik-meta-outpost
- X-authentik-meta-provider
- X-authentik-meta-app
- X-authentik-meta-version

View File

@@ -0,0 +1,14 @@
apiVersion: v1
kind: Secret
type: kubernetes.io/service-account-token
metadata:
name: "{{ .Release.Name }}-sa-token"
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: "{{ .Release.Name }}-sa-token"
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
annotations:
kubernetes.io/service-account.name: homepage

View File

@@ -1,21 +1,86 @@
homepage: homepage:
deployment: global:
nameOverride: homepage
controllers:
main:
type: deployment
annotations: annotations:
reloader.stakater.com/auto: "true" reloader.stakater.com/auto: "true"
resources: strategy: Recreate
limits: containers:
memory: 2Gi main:
cpu: 1000m image:
repository: ghcr.io/gethomepage/homepage
tag: v0.8.13
pullPolicy: IfNotPresent
envFrom: envFrom:
- secretRef: - secretRef:
name: homepage-keys-secret name: homepage-keys-secret
ingressRoute: resources:
host: home.alexlebens.net requests:
authentik: cpu: 100m
outpost: authentik-outpost-proxy memory: 128Mi
namespace: authentik serviceAccount:
create: true
configMaps:
config: config:
widgets: enabled: true
data:
docker.yaml: ""
kubernetes.yaml: ""
settings.yaml: |
favicon: https://alexlebens-dev.nyc3.digitaloceanspaces.com/cl02do/assets/icon_white.png
headerStyle: clean
hideVersion: true
color: slate
background:
image: https://alexlebens-dev.nyc3.digitaloceanspaces.com/cl02do/assets/background.jpg
theme: dark
disableCollapse: true
layout:
- Media:
tab: Apps
icon: mdi-multimedia-#ffffff
- Applications:
tab: Apps
icon: mdi-application-#ffffff
- Code:
tab: Tools
icon: mdi-code-braces-box-#ffffff
- Monitoring:
tab: Tools
icon: mdi-chart-bar-#ffffff
- Management:
tab: Tools
icon: mdi-content-save-cog-#ffffff
- Services:
tab: Services
icon: mdi-server-network-#ffffff
- Hardware:
tab: Services
icon: mdi-lan-connect-#ffffff
- Storage:
tab: Services
icon: mdi-harddisk-#ffffff
- Sonarr:
tab: Servarr
icon: mdi-television-#ffffff
- Radarr:
tab: Servarr
icon: mdi-filmstrip-#ffffff
- Other:
tab: Servarr
icon: mdi-music-box-multiple-#ffffff
- Media Services:
tab: Servarr
icon: mdi-radar-#ffffff
- External Services:
tab: Bookmarks
icon: mdi-cloud-#ffffff
- Trackers:
tab: Bookmarks
icon: mdi-cloud-#ffffff
widgets.yaml: |
- logo: - logo:
icon: https://alexlebens-dev.nyc3.digitaloceanspaces.com/cl02do/assets/icon_white.png icon: https://alexlebens-dev.nyc3.digitaloceanspaces.com/cl02do/assets/icon_white.png
- kubernetes: - kubernetes:
@@ -34,12 +99,12 @@ homepage:
timeStyle: short timeStyle: short
hour12: false hour12: false
- openmeteo: - openmeteo:
label: Denver label: St. Paul
latitude: 39.73 latitude: 44.95
longitude: 104.99 longitude: 93.09
units: metric units: metric
cache: 5 cache: 5
services: services.yaml: |
- Media: - Media:
- Plex: - Plex:
icon: plex.png icon: plex.png
@@ -461,7 +526,7 @@ homepage:
type: prowlarr type: prowlarr
url: http://prowlarr.prowlarr:9696 url: http://prowlarr.prowlarr:9696
key: '{{HOMEPAGE_VAR_PROWLARR_KEY}}' key: '{{HOMEPAGE_VAR_PROWLARR_KEY}}'
bookmarks: bookmarks.yaml: |
- External Services: - External Services:
- Github: - Github:
- abbr: GH - abbr: GH
@@ -509,55 +574,43 @@ homepage:
- MV Group: - MV Group:
- abbr: MV - abbr: MV
href: https://forums.mvgroup.org href: https://forums.mvgroup.org
settings: service:
favicon: https://alexlebens-dev.nyc3.digitaloceanspaces.com/cl02do/assets/icon_white.png http:
headerStyle: clean controller: main
hideVersion: true ports:
color: slate http:
background: port: 80
image: https://alexlebens-dev.nyc3.digitaloceanspaces.com/cl02do/assets/background.jpg targetPort: 3000
theme: dark protocol: HTTP
disableCollapse: true persistence:
layout: config:
- Media: enabled: true
tab: Apps type: configMap
icon: mdi-multimedia-#ffffff name: homepage-config
- Applications: advancedMounts:
tab: Apps main:
icon: mdi-application-#ffffff main:
- Code: - path: /app/config/bookmarks.yaml
tab: Tools readOnly: true
icon: mdi-code-braces-box-#ffffff mountPropagation: None
- Monitoring: subPath: bookmarks.yaml
tab: Tools - path: /app/config/docker.yaml
icon: mdi-chart-bar-#ffffff readOnly: true
- Management: mountPropagation: None
tab: Tools subPath: docker.yaml
icon: mdi-content-save-cog-#ffffff - path: /app/config/kubernetes.yaml
- Services: readOnly: true
tab: Services mountPropagation: None
icon: mdi-server-network-#ffffff subPath: kubernetes.yaml
- Hardware: - path: /app/config/services.yaml
tab: Services readOnly: true
icon: mdi-lan-connect-#ffffff mountPropagation: None
- Storage: subPath: services.yaml
tab: Services - path: /app/config/settings.yaml
icon: mdi-harddisk-#ffffff readOnly: true
- Sonarr: mountPropagation: None
tab: Servarr subPath: settings.yaml
icon: mdi-television-#ffffff - path: /app/config/widgets.yaml
- Radarr: readOnly: true
tab: Servarr mountPropagation: None
icon: mdi-filmstrip-#ffffff subPath: widgets.yaml
- Other:
tab: Servarr
icon: mdi-music-box-multiple-#ffffff
- Media Services:
tab: Servarr
icon: mdi-radar-#ffffff
- External Services:
tab: Bookmarks
icon: mdi-cloud-#ffffff
- Trackers:
tab: Bookmarks
icon: mdi-cloud-#ffffff