added homepage for users
This commit is contained in:
@@ -453,6 +453,264 @@ data:
|
||||
# Custom JS
|
||||
custom.js: ""
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: homepage-user-config
|
||||
namespace: homepage-system
|
||||
labels:
|
||||
app.kubernetes.io/name: homepage-user
|
||||
app.kubernetes.io/instance: homepage-user
|
||||
data:
|
||||
# Kubernetes connection configuration
|
||||
kubernetes.yaml: |
|
||||
mode: cluster
|
||||
ingress: true
|
||||
|
||||
# Global settings
|
||||
settings.yaml: |
|
||||
title: Dooplex Dashboard
|
||||
favicon: https://nextcloud.dooplex.hu/s/9H89T5kgNRpkQDP/download
|
||||
theme: dark
|
||||
color: slate
|
||||
headerStyle: clean
|
||||
layout:
|
||||
Media:
|
||||
style: row
|
||||
columns: 3
|
||||
Productivity:
|
||||
style: row
|
||||
columns: 3
|
||||
Other:
|
||||
style: row
|
||||
columns: 3
|
||||
providers:
|
||||
longhorn:
|
||||
url: http://192.168.0.209
|
||||
|
||||
# Services configuration - customize as needed
|
||||
services.yaml: |
|
||||
- Media:
|
||||
- Arcade:
|
||||
icon: romm.png
|
||||
href: https://arcade.dooplex.hu
|
||||
description: Retro Games
|
||||
widget:
|
||||
type: romm
|
||||
url: http://romm.arcade-system.svc.cluster.local:8080
|
||||
- AudioBookshelf:
|
||||
icon: audiobookshelf.png
|
||||
href: https://audiobookshelf.dooplex.hu
|
||||
description: AudioBooks
|
||||
widget:
|
||||
type: audiobookshelf
|
||||
url: http://audiobookshelf.audiobookshelf-system.svc.cluster.local
|
||||
key: "{{HOMEPAGE_VAR_AUDIOBOOKSHELF_API_KEY}}"
|
||||
- Calibre-Web:
|
||||
icon: calibre-web.png
|
||||
href: https://books.dooplex.hu
|
||||
description: eBooks
|
||||
widget:
|
||||
type: calibreweb
|
||||
url: http://calibre-web.calibre-system.svc.cluster.local:8083
|
||||
username: "{{HOMEPAGE_VAR_CALIBREWEB_USER}}"
|
||||
password: "{{HOMEPAGE_VAR_CALIBREWEB_PASS}}"
|
||||
- Immich:
|
||||
icon: immich.png
|
||||
href: https://photos.dooplex.hu
|
||||
description: Photos
|
||||
widget:
|
||||
type: immich
|
||||
url: http://immich-server.immich-system.svc.cluster.local:2283
|
||||
key: "{{HOMEPAGE_VAR_IMMICH_API_KEY}}"
|
||||
version: 2
|
||||
- Plex:
|
||||
icon: plex.png
|
||||
href: https://plex.dooplex.hu
|
||||
description: Media Server
|
||||
- Sonarr:
|
||||
icon: sonarr.png
|
||||
href: https://sonarr.dooplex.hu
|
||||
description: TV Shows
|
||||
widget:
|
||||
type: sonarr
|
||||
url: http://sonarr.servarr-system.svc.cluster.local:8989
|
||||
key: "{{HOMEPAGE_VAR_SONARR_API_KEY}}"
|
||||
- Radarr:
|
||||
icon: radarr.png
|
||||
href: https://radarr.dooplex.hu
|
||||
description: Movies
|
||||
widget:
|
||||
type: radarr
|
||||
url: http://radarr.servarr-system.svc.cluster.local:7878
|
||||
key: "{{HOMEPAGE_VAR_RADARR_API_KEY}}"
|
||||
- RadarrKids:
|
||||
icon: https://nextcloud.dooplex.hu/s/E3LB8dJTTpyDSge/download
|
||||
href: https://radarrkids.dooplex.hu
|
||||
description: Kids Movies
|
||||
widget:
|
||||
type: radarr
|
||||
url: http://radarrkids.servarr-system.svc.cluster.local:7879
|
||||
key: "{{HOMEPAGE_VAR_RADARRKIDS_API_KEY}}"
|
||||
- Prowlarr:
|
||||
icon: prowlarr.png
|
||||
href: https://prowlarr.dooplex.hu
|
||||
description: Indexer Manager
|
||||
widget:
|
||||
type: prowlarr
|
||||
url: http://prowlarr.servarr-system.svc.cluster.local:9696
|
||||
key: "{{HOMEPAGE_VAR_PROWLARR_API_KEY}}"
|
||||
- Seerr:
|
||||
icon: overseerr.png
|
||||
href: https://seerr.dooplex.hu
|
||||
description: Movie, TV Show Request
|
||||
widget:
|
||||
type: overseerr
|
||||
url: http://seerr.servarr-system.svc.cluster.local:5055
|
||||
key: "{{HOMEPAGE_VAR_SEERR_API_KEY}}"
|
||||
|
||||
- Productivity:
|
||||
- ActialBudget:
|
||||
icon: actual-budget.png
|
||||
href: https://actualbudget.dooplex.hu
|
||||
description: Finance Manager
|
||||
- Bookstack:
|
||||
icon: bookstack.png
|
||||
href: https://bookstack.dooplex.hu
|
||||
description: Documentation, Wiki
|
||||
- Nextcloud:
|
||||
icon: nextcloud.png
|
||||
href: https://nextcloud.dooplex.hu
|
||||
description: Cloud Storage
|
||||
- Outline:
|
||||
icon: outline.png
|
||||
href: https://outline.dooplex.hu
|
||||
description: Team Wiki, Documentation
|
||||
- Paperless:
|
||||
icon: paperless-ngx.png
|
||||
href: https://paperless.dooplex.hu
|
||||
description: Document Management
|
||||
- Tandoor:
|
||||
icon: tandoor-recipes.png
|
||||
href: https://tandoor.dooplex.hu
|
||||
description: Recipe Manager
|
||||
widget:
|
||||
type: tandoor
|
||||
url: http://tandoor.tandoor-system.svc.cluster.local:8080
|
||||
key: "{{HOMEPAGE_VAR_TANDOOR_API_KEY}}"
|
||||
- Vaultwarden:
|
||||
icon: bitwarden.png
|
||||
href: https://vaultwarden.dooplex.hu
|
||||
description: Password Manager
|
||||
|
||||
- Other:
|
||||
- Adventurelog:
|
||||
icon: adventure-log.png
|
||||
href: https://adventures.dooplex.hu
|
||||
description: Documenting Travels
|
||||
- Fileshare:
|
||||
icon: https://nextcloud.dooplex.hu/s/89PfscLdHoykWrZ/download
|
||||
href: https://fileshare.dooplex.hu
|
||||
description: Drag&Drop Fileshare
|
||||
- Pastes:
|
||||
icon: opengist.png
|
||||
href: https://paste.dooplex.hu
|
||||
description: Pastes (opengist)
|
||||
- Privatebin:
|
||||
icon: privatebin.png
|
||||
href: https://privatebin.dooplex.hu
|
||||
description: Pastebin (secure)
|
||||
- Plantit:
|
||||
icon: plant-it.png
|
||||
href: https://plantit.dooplex.hu
|
||||
description: Gardening companion
|
||||
- Wanderer:
|
||||
icon: wanderer.png
|
||||
href: https://wanderer.dooplex.hu
|
||||
description: Trail database
|
||||
- Workout:
|
||||
icon: wger.png
|
||||
href: https://workout.dooplex.hu
|
||||
description: Workout and fitness manager
|
||||
|
||||
# Widgets configuration
|
||||
widgets.yaml: |
|
||||
- logo:
|
||||
icon: https://nextcloud.dooplex.hu/s/sD9GdyEZNFdxRns/download
|
||||
- greeting:
|
||||
text_size: xl
|
||||
text: ""
|
||||
- datetime:
|
||||
text_size: l
|
||||
format:
|
||||
dateStyle: long
|
||||
timeStyle: short
|
||||
hour12: false
|
||||
- kubernetes:
|
||||
cluster:
|
||||
show: true
|
||||
cpu: true
|
||||
memory: true
|
||||
showLabel: true
|
||||
label: "dooplex"
|
||||
nodes:
|
||||
show: true
|
||||
cpu: true
|
||||
memory: true
|
||||
showLabel: true
|
||||
- longhorn:
|
||||
expanded: true
|
||||
total: true
|
||||
labels: true
|
||||
nodes: false
|
||||
- search:
|
||||
provider: duckduckgo
|
||||
target: _blank
|
||||
|
||||
# Bookmarks
|
||||
bookmarks.yaml: |
|
||||
- Developer:
|
||||
- GitHub:
|
||||
- abbr: GH
|
||||
href: https://github.com
|
||||
icon: github.png
|
||||
- Gitea:
|
||||
- abbr: GT
|
||||
href: https://gitea.dooplex.hu
|
||||
icon: gitea.png
|
||||
- Documentation:
|
||||
- Kubernetes:
|
||||
- abbr: K8s
|
||||
href: https://kubernetes.io/docs
|
||||
icon: kubernetes.png
|
||||
- ArgoCD:
|
||||
- abbr: Argo
|
||||
href: https://argo-cd.readthedocs.io
|
||||
icon: argo-cd.png
|
||||
|
||||
# Docker settings (not used in k8s mode)
|
||||
docker.yaml: ""
|
||||
|
||||
# Custom CSS
|
||||
custom.css: |
|
||||
/* Make the logo widget container bigger */
|
||||
#information-widgets .information-widget-logo {
|
||||
min-height: 100px !important;
|
||||
display: flex !important;
|
||||
align-items: center !important;
|
||||
}
|
||||
|
||||
/* Make the image fill it */
|
||||
#information-widgets .information-widget-logo img {
|
||||
max-height: 100px !important;
|
||||
height: 100px !important;
|
||||
width: auto !important;
|
||||
object-fit: contain !important;
|
||||
}
|
||||
|
||||
# Custom JS
|
||||
custom.js: ""
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
@@ -465,10 +723,7 @@ metadata:
|
||||
spec:
|
||||
replicas: 1
|
||||
strategy:
|
||||
type: RollingUpdate
|
||||
rollingUpdate:
|
||||
maxSurge: 1
|
||||
maxUnavailable: 0
|
||||
type: Recreate
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: homepage
|
||||
@@ -623,6 +878,153 @@ spec:
|
||||
configMap:
|
||||
name: homepage-config
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: homepage-user
|
||||
namespace: homepage-system
|
||||
labels:
|
||||
app.kubernetes.io/name: homepage-user
|
||||
app.kubernetes.io/instance: homepage-user
|
||||
app.kubernetes.io/version: "v1.8.0"
|
||||
spec:
|
||||
replicas: 1
|
||||
strategy:
|
||||
type: Recreate
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: homepage-user
|
||||
app.kubernetes.io/instance: homepage-user
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: homepagee-user
|
||||
app.kubernetes.io/instance: homepagee-user
|
||||
app.kubernetes.io/version: "v1.8.0"
|
||||
spec:
|
||||
serviceAccountName: homepage
|
||||
automountServiceAccountToken: true
|
||||
dnsPolicy: ClusterFirst
|
||||
enableServiceLinks: true
|
||||
containers:
|
||||
- name: homepage
|
||||
image: ghcr.io/gethomepage/homepage:v1.8.0
|
||||
imagePullPolicy: IfNotPresent
|
||||
env:
|
||||
# Required for external access
|
||||
- name: HOMEPAGE_ALLOWED_HOSTS
|
||||
value: "*"
|
||||
# Timezone
|
||||
- name: TZ
|
||||
value: "Europe/Budapest"
|
||||
# Optional: Widget API keys (create secret with these if needed)
|
||||
- name: HOMEPAGE_VAR_TANDOOR_API_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: homepage-secrets
|
||||
key: tandoor-api-key
|
||||
- name: HOMEPAGE_VAR_PROWLARR_API_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: homepage-secrets
|
||||
key: prowlarr-api-key
|
||||
- name: HOMEPAGE_VAR_SONARR_API_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: homepage-secrets
|
||||
key: sonarr-api-key
|
||||
- name: HOMEPAGE_VAR_RADARR_API_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: homepage-secrets
|
||||
key: radarr-api-key
|
||||
- name: HOMEPAGE_VAR_RADARRKIDS_API_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: homepage-secrets
|
||||
key: radarrkids-api-key
|
||||
- name: HOMEPAGE_VAR_SEERR_API_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: homepage-secrets
|
||||
key: seerr-api-key
|
||||
- name: HOMEPAGE_VAR_IMMICH_API_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: homepage-secrets
|
||||
key: immich-api-key
|
||||
- name: HOMEPAGE_VAR_AUDIOBOOKSHELF_API_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: homepage-secrets
|
||||
key: audiobookshelf-api-key
|
||||
- name: HOMEPAGE_VAR_CALIBREWEB_USER
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: homepage-secrets
|
||||
key: calibreweb-user
|
||||
- name: HOMEPAGE_VAR_CALIBREWEB_PASS
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: homepage-secrets
|
||||
key: calibreweb-pass
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 3000
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /api/healthcheck
|
||||
port: http
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 30
|
||||
timeoutSeconds: 10
|
||||
failureThreshold: 3
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /api/healthcheck
|
||||
port: http
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 10
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 3
|
||||
resources:
|
||||
requests:
|
||||
cpu: 50m
|
||||
memory: 128Mi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 512Mi
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /app/config/kubernetes.yaml
|
||||
subPath: kubernetes.yaml
|
||||
- name: config
|
||||
mountPath: /app/config/settings.yaml
|
||||
subPath: settings.yaml
|
||||
- name: config
|
||||
mountPath: /app/config/services.yaml
|
||||
subPath: services.yaml
|
||||
- name: config
|
||||
mountPath: /app/config/widgets.yaml
|
||||
subPath: widgets.yaml
|
||||
- name: config
|
||||
mountPath: /app/config/bookmarks.yaml
|
||||
subPath: bookmarks.yaml
|
||||
- name: config
|
||||
mountPath: /app/config/docker.yaml
|
||||
subPath: docker.yaml
|
||||
- name: config
|
||||
mountPath: /app/config/custom.css
|
||||
subPath: custom.css
|
||||
- name: config
|
||||
mountPath: /app/config/custom.js
|
||||
subPath: custom.js
|
||||
volumes:
|
||||
- name: config
|
||||
configMap:
|
||||
name: homepage-user-config
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
@@ -642,6 +1044,25 @@ spec:
|
||||
app.kubernetes.io/name: homepage
|
||||
app.kubernetes.io/instance: homepage
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: homepage-user
|
||||
namespace: homepage-system
|
||||
labels:
|
||||
app.kubernetes.io/name: homepage-user
|
||||
app.kubernetes.io/instance: homepage-user
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- name: http
|
||||
port: 3000
|
||||
targetPort: http
|
||||
protocol: TCP
|
||||
selector:
|
||||
app.kubernetes.io/name: homepage-user
|
||||
app.kubernetes.io/instance: homepage-user
|
||||
---
|
||||
# Ingress WITH Authentik proxy authentication
|
||||
# Update the auth-url annotation with your actual outpost service name after Authentik creates it
|
||||
apiVersion: networking.k8s.io/v1
|
||||
@@ -700,3 +1121,49 @@ spec:
|
||||
- homepage.dooplex.hu
|
||||
secretName: homepage-tls
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: homepage-user
|
||||
namespace: homepage-system
|
||||
labels:
|
||||
app.kubernetes.io/name: homepage-user
|
||||
app.kubernetes.io/instance: homepage-user
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||
external-dns.alpha.kubernetes.io/hostname: dooplex.hu
|
||||
nginx.ingress.kubernetes.io/ssl-redirect: "true"
|
||||
nginx.ingress.kubernetes.io/proxy-buffer-size: "16k"
|
||||
nginx.ingress.kubernetes.io/proxy-buffers-number: "4"
|
||||
nginx.ingress.kubernetes.io/proxy-busy-buffers-size: "32k"
|
||||
# Authentik Forward Auth annotations
|
||||
# Update 'homepage-outpost' with your actual outpost name
|
||||
nginx.ingress.kubernetes.io/auth-url: http://ak-outpost-homepage-user-outpost.auth-system.svc.cluster.local:9000/outpost.goauthentik.io/auth/nginx
|
||||
nginx.ingress.kubernetes.io/auth-signin: https://dooplex.hu/outpost.goauthentik.io/start?rd=$escaped_request_uri
|
||||
nginx.ingress.kubernetes.io/auth-response-headers: Set-Cookie,X-authentik-username,X-authentik-groups,X-authentik-email
|
||||
nginx.ingress.kubernetes.io/auth-snippet: |
|
||||
proxy_set_header X-Forwarded-Host $http_host;
|
||||
# Homepage auto-discovery annotation
|
||||
gethomepage.dev/enabled: "true"
|
||||
gethomepage.dev/name: "Homepage"
|
||||
gethomepage.dev/description: "Application Dashboard"
|
||||
gethomepage.dev/group: "Infrastructure"
|
||||
gethomepage.dev/icon: "homepage.png"
|
||||
spec:
|
||||
ingressClassName: nginx-internal
|
||||
rules:
|
||||
- host: dooplex.hu
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: homepage-user
|
||||
port:
|
||||
number: 3000
|
||||
tls:
|
||||
- hosts:
|
||||
- dooplex.hu
|
||||
secretName: homepage-user-tls
|
||||
---
|
||||
Reference in New Issue
Block a user