diff --git a/clusters/cl01tl/applications/homepage-dev/Chart.yaml b/clusters/cl01tl/applications/homepage-dev/Chart.yaml new file mode 100644 index 000000000..6ed8f32b5 --- /dev/null +++ b/clusters/cl01tl/applications/homepage-dev/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +name: homepage +version: 1.0.0 +description: Homepage +keywords: + - homepage + - dashboard +home: https://wiki.alexlebens.dev/doc/homepage-dev-crZPAd8FEj +sources: + - https://github.com/gethomepage/homepage + - https://github.com/cloudflare/cloudflared + - https://github.com/gethomepage/homepage/pkgs/container/homepage + - https://github.com/bjw-s/helm-charts/tree/main/charts/other/app-template + - https://github.com/alexlebens/helm-charts/tree/main/charts/cloudflared +maintainers: + - name: alexlebens +dependencies: + - name: app-template + alias: homepage + repository: https://bjw-s.github.io/helm-charts/ + version: 3.7.1 + - name: cloudflared + alias: cloudflared + repository: http://alexlebens.github.io/helm-charts + version: 1.14.0 +icon: https://raw.githubusercontent.com/walkxcode/dashboard-icons/main/png/homepage.png +appVersion: v0.10.0 diff --git a/clusters/cl01tl/applications/homepage-dev/templates/external-secret.yaml b/clusters/cl01tl/applications/homepage-dev/templates/external-secret.yaml new file mode 100644 index 000000000..3f843211f --- /dev/null +++ b/clusters/cl01tl/applications/homepage-dev/templates/external-secret.yaml @@ -0,0 +1,23 @@ +apiVersion: external-secrets.io/v1beta1 +kind: ExternalSecret +metadata: + name: homepage-dev-cloudflared-secret + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/name: homepage-dev-cloudflared-secret + 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: + secretStoreRef: + kind: ClusterSecretStore + name: vault + data: + - secretKey: cf-tunnel-token + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /cloudflare/tunnels/homepage-dev + metadataPolicy: None + property: token diff --git a/clusters/cl01tl/applications/homepage-dev/values.yaml b/clusters/cl01tl/applications/homepage-dev/values.yaml new file mode 100644 index 000000000..0269fadc8 --- /dev/null +++ b/clusters/cl01tl/applications/homepage-dev/values.yaml @@ -0,0 +1,145 @@ +homepage: + global: + nameOverride: homepage + controllers: + main: + type: deployment + annotations: + reloader.stakater.com/auto: "true" + strategy: Recreate + containers: + main: + image: + repository: ghcr.io/gethomepage/homepage + tag: v0.10.9 + pullPolicy: IfNotPresent + resources: + requests: + cpu: 10m + memory: 128Mi + serviceAccount: + create: true + configMaps: + config: + enabled: true + data: + docker.yaml: "" + kubernetes.yaml: "" + settings.yaml: | + favicon: https://web-assets-3bfcb5585cbd63dc365d32a3.nyc3.cdn.digitaloceanspaces.com/alexlebens-net/icon_white.png + headerStyle: clean + hideVersion: true + color: zinc + background: + image: https://web-assets-3bfcb5585cbd63dc365d32a3.nyc3.cdn.digitaloceanspaces.com/alexlebens-net/background-3.jpg + brightness: 50 + theme: dark + disableCollapse: true + widgets.yaml: | + - logo: + icon: https://web-assets-3bfcb5585cbd63dc365d32a3.nyc3.cdn.digitaloceanspaces.com/alexlebens-net/icon_white.png + - datetime: + text_size: xl + format: + dateStyle: long + timeStyle: short + hour12: false + - openmeteo: + label: St. Paul + latitude: 44.95 + longitude: 93.09 + units: metric + cache: 5 + services.yaml: | + - Applications: + - Auth: + icon: sh-authentik.svg + description: Authentik + href: https://auth.alexlebens.dev + siteMonitor: https://auth.alexlebens.dev + statusStyle: dot + - Site: + icon: https://d21zlbwtcn424f.cloudfront.net/icon_white.png + description: Profile Website + href: https://www.alexlebens.dev + siteMonitor: https://www.alexlebens.dev + statusStyle: dot + - Content Management: + icon: directus.png + description: Directus + href: https://directus.alexlebens.dev + siteMonitor: https://directus.alexlebens.dev + statusStyle: dot + - Chat: + icon: sh-element.svg + description: Matrix + href: https://chat.alexlebens.dev + siteMonitor: https://chat.alexlebens.dev + statusStyle: dot + - Wiki: + icon: sh-outline.svg + description: Outline + href: https://wiki.alexlebens.dev + siteMonitor: https://wiki.alexlebens.dev + statusStyle: dot + - Passwords: + icon: sh-vaultwarden-light.svg + description: Vaultwarden + href: https://passwords.alexlebens.dev + siteMonitor: https://passwords.alexlebens.dev + statusStyle: dot + - Bookmarks: + icon: sh-hoarder-light.svg + description: Hoader + href: https://hoarder.alexlebens.dev + siteMonitor: https://hoarder.alexlebens.dev + statusStyle: dot + - RSS: + icon: sh-freshrss.svg + description: FreshRSS + href: https://rss.alexlebens.dev + siteMonitor: https://rss.alexlebens.dev + statusStyle: dot + bookmarks.yaml: "" + service: + http: + controller: main + ports: + http: + port: 80 + targetPort: 3000 + protocol: HTTP + persistence: + config: + enabled: true + type: configMap + name: homepage-dev-config + advancedMounts: + main: + main: + - path: /app/config/bookmarks.yaml + readOnly: true + mountPropagation: None + subPath: bookmarks.yaml + - path: /app/config/docker.yaml + readOnly: true + mountPropagation: None + subPath: docker.yaml + - path: /app/config/kubernetes.yaml + readOnly: true + mountPropagation: None + subPath: kubernetes.yaml + - path: /app/config/services.yaml + readOnly: true + mountPropagation: None + subPath: services.yaml + - path: /app/config/settings.yaml + readOnly: true + mountPropagation: None + subPath: settings.yaml + - path: /app/config/widgets.yaml + readOnly: true + mountPropagation: None + subPath: widgets.yaml +cloudflared: + existingSecretName: homepage-dev-cloudflared-secret diff --git a/clusters/cl01tl/applications/homepage/Chart.yaml b/clusters/cl01tl/applications/homepage/Chart.yaml new file mode 100644 index 000000000..576e78e30 --- /dev/null +++ b/clusters/cl01tl/applications/homepage/Chart.yaml @@ -0,0 +1,21 @@ +apiVersion: v2 +name: homepage +version: 1.0.0 +description: Homepage +keywords: + - homepage + - dashboard +home: https://wiki.alexlebens.dev/doc/homepage-s2clWoI5EC +sources: + - https://github.com/gethomepage/homepage + - https://github.com/gethomepage/homepage/pkgs/container/homepage + - https://github.com/bjw-s/helm-charts/tree/main/charts/other/app-template +maintainers: + - name: alexlebens +dependencies: + - name: app-template + alias: homepage + repository: https://bjw-s.github.io/helm-charts/ + version: 3.7.1 +icon: https://raw.githubusercontent.com/walkxcode/dashboard-icons/main/png/homepage.png +appVersion: v0.10.0 diff --git a/clusters/cl01tl/applications/homepage/templates/cluster-role-binding.yaml b/clusters/cl01tl/applications/homepage/templates/cluster-role-binding.yaml new file mode 100644 index 000000000..f20a953fc --- /dev/null +++ b/clusters/cl01tl/applications/homepage/templates/cluster-role-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +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 }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: homepage +subjects: + - kind: ServiceAccount + name: homepage + namespace: {{ .Release.Namespace }} diff --git a/clusters/cl01tl/applications/homepage/templates/cluster-role.yaml b/clusters/cl01tl/applications/homepage/templates/cluster-role.yaml new file mode 100644 index 000000000..429adc8b4 --- /dev/null +++ b/clusters/cl01tl/applications/homepage/templates/cluster-role.yaml @@ -0,0 +1,51 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +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 }} +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 diff --git a/clusters/cl01tl/applications/homepage/templates/external-secret.yaml b/clusters/cl01tl/applications/homepage/templates/external-secret.yaml new file mode 100644 index 000000000..3ea907f01 --- /dev/null +++ b/clusters/cl01tl/applications/homepage/templates/external-secret.yaml @@ -0,0 +1,107 @@ +apiVersion: external-secrets.io/v1beta1 +kind: ExternalSecret +metadata: + name: homepage-keys-secret + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/name: homepage-keys-secret + 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: + secretStoreRef: + kind: ClusterSecretStore + name: vault + data: + - secretKey: HOMEPAGE_VAR_SYNOLOGY_USER + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /synology/auth/cl01tl + metadataPolicy: None + property: user + - secretKey: HOMEPAGE_VAR_SYNOLOGY_PASSWORD + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /synology/auth/cl01tl + metadataPolicy: None + property: password + - secretKey: HOMEPAGE_VAR_UNIFI_USER + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /unifi/auth/cl01tl + metadataPolicy: None + property: user + - secretKey: HOMEPAGE_VAR_UNIFI_PASSWORD + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /unifi/auth/cl01tl + metadataPolicy: None + property: password + - secretKey: HOMEPAGE_VAR_SONARR_KEY + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /cl01tl/sonarr4/key + metadataPolicy: None + property: key + - secretKey: HOMEPAGE_VAR_SONARR4K_KEY + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /cl01tl/sonarr4-4k/key + metadataPolicy: None + property: key + - secretKey: HOMEPAGE_VAR_SONARRANIME_KEY + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /cl01tl/sonarr4-anime/key + metadataPolicy: None + property: key + - secretKey: HOMEPAGE_VAR_RADARR_KEY + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /cl01tl/radarr5/key + metadataPolicy: None + property: key + - secretKey: HOMEPAGE_VAR_RADARR4K_KEY + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /cl01tl/radarr5-4k/key + metadataPolicy: None + property: key + - secretKey: HOMEPAGE_VAR_RADARRANIME_KEY + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /cl01tl/radarr5-anime/key + metadataPolicy: None + property: key + - secretKey: HOMEPAGE_VAR_RADARRSTANDUP_KEY + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /cl01tl/radarr5-standup/key + metadataPolicy: None + property: key + - secretKey: HOMEPAGE_VAR_LIDARR2_KEY + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /cl01tl/lidarr2/key + metadataPolicy: None + property: key + - secretKey: HOMEPAGE_VAR_PROWLARR_KEY + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /cl01tl/prowlarr/key + metadataPolicy: None + property: key diff --git a/clusters/cl01tl/applications/homepage/templates/http-route.yaml b/clusters/cl01tl/applications/homepage/templates/http-route.yaml new file mode 100644 index 000000000..334a1e5b9 --- /dev/null +++ b/clusters/cl01tl/applications/homepage/templates/http-route.yaml @@ -0,0 +1,30 @@ +apiVersion: gateway.networking.k8s.io/v1 +kind: HTTPRoute +metadata: + name: http-route-homepage + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/name: http-route-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: + parentRefs: + - group: gateway.networking.k8s.io + kind: Gateway + name: traefik-gateway + namespace: traefik + hostnames: + - homepage.alexlebens.net + rules: + - matches: + - path: + type: PathPrefix + value: / + backendRefs: + - group: '' + kind: Service + name: homepage + port: 80 + weight: 100 diff --git a/clusters/cl01tl/applications/homepage/templates/service.yaml b/clusters/cl01tl/applications/homepage/templates/service.yaml new file mode 100644 index 000000000..0ae080bce --- /dev/null +++ b/clusters/cl01tl/applications/homepage/templates/service.yaml @@ -0,0 +1,34 @@ +apiVersion: v1 +kind: Service +metadata: + name: gitea-ps10rp + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/name: gitea-ps10rp + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/version: {{ .Chart.AppVersion }} + app.kubernetes.io/component: tailscale + app.kubernetes.io/part-of: {{ .Release.Name }} + annotations: + tailscale.com/tailnet-fqdn: gitea-ps10rp.boreal-beaufort.ts.net +spec: + externalName: placeholder + type: ExternalName + +--- +apiVersion: v1 +kind: Service +metadata: + name: home-ps10rp + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/name: home-ps10rp + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/version: {{ .Chart.AppVersion }} + app.kubernetes.io/component: tailscale + app.kubernetes.io/part-of: {{ .Release.Name }} + annotations: + tailscale.com/tailnet-fqdn: home-ps10rp.boreal-beaufort.ts.net +spec: + externalName: placeholder + type: ExternalName diff --git a/clusters/cl01tl/applications/homepage/values.yaml b/clusters/cl01tl/applications/homepage/values.yaml new file mode 100644 index 000000000..e0680335e --- /dev/null +++ b/clusters/cl01tl/applications/homepage/values.yaml @@ -0,0 +1,676 @@ +homepage: + global: + nameOverride: homepage + controllers: + main: + type: deployment + annotations: + reloader.stakater.com/auto: "true" + strategy: Recreate + containers: + main: + image: + repository: ghcr.io/gethomepage/homepage + tag: v0.10.9 + pullPolicy: IfNotPresent + envFrom: + - secretRef: + name: homepage-keys-secret + resources: + requests: + cpu: 10m + memory: 256Mi + serviceAccount: + create: true + name: homepage + configMaps: + config: + enabled: true + data: + docker.yaml: "" + kubernetes.yaml: | + mode: cluster + settings.yaml: | + favicon: https://web-assets-3bfcb5585cbd63dc365d32a3.nyc3.cdn.digitaloceanspaces.com/alexlebens-net/icon_white.png + headerStyle: clean + hideVersion: true + color: zinc + background: + image: https://web-assets-3bfcb5585cbd63dc365d32a3.nyc3.cdn.digitaloceanspaces.com/alexlebens-net/background-3.jpg + brightness: 50 + theme: dark + disableCollapse: true + layout: + - Media: + tab: Applications + icon: mdi-multimedia-#ffffff + - Public: + tab: Applications + icon: mdi-earth-#ffffff + - Internal: + tab: Applications + icon: mdi-security-network-#ffffff + - Code: + tab: Tools + icon: mdi-code-block-braces-#ffffff + - Monitoring: + tab: Tools + icon: mdi-chart-line-#ffffff + - Services: + tab: Services + icon: mdi-toolbox-outline-#ffffff + - Hardware: + tab: Services + icon: mdi-server-network-#ffffff + - Storage: + tab: Services + icon: mdi-database-#ffffff + - TV Shows: + tab: Servarr + icon: mdi-television-#ffffff + - Movies: + tab: Servarr + icon: mdi-filmstrip-#ffffff + - Music: + tab: Servarr + icon: mdi-music-box-multiple-#ffffff + - Services (Servarr): + tab: Servarr + icon: mdi-radar-#ffffff + - External Services: + tab: Bookmarks + icon: mdi-cloud-#ffffff + - Other Homes: + tab: Bookmarks + icon: mdi-cloud-#ffffff + - Trackers: + tab: Bookmarks + icon: mdi-cloud-#ffffff + widgets.yaml: | + - logo: + icon: https://web-assets-3bfcb5585cbd63dc365d32a3.nyc3.cdn.digitaloceanspaces.com/alexlebens-net/icon_white.png + - kubernetes: + cluster: + show: true + cpu: true + memory: true + showLabel: true + label: "Cluster" + nodes: + show: false + - datetime: + text_size: xl + format: + dateStyle: long + timeStyle: short + hour12: false + - openmeteo: + label: St. Paul + latitude: 44.95 + longitude: 93.09 + units: metric + cache: 5 + services.yaml: | + - Media: + - Plex: + icon: sh-plex.svg + description: Media server + href: https://plex.alexlebens.net + siteMonitor: http://plex.plex:32400 + statusStyle: dot + - Media Requests: + icon: sh-overseerr.svg + description: Overseer + href: https://overseerr.alexlebens.net + siteMonitor: http://overseerr.overseerr:80 + statusStyle: dot + - Jellyfin: + icon: sh-jellyfin.svg + description: Media server + href: https://jellyfin.alexlebens.net + siteMonitor: http://jellyfin.jellyfin:80 + statusStyle: dot + - Youtube Archive: + icon: sh-tube-archivist-light.png + description: TubeAchivist + href: https://tubearchivist.alexlebens.net/login + siteMonitor: http://tubearchivist.tubearchivist:80 + statusStyle: dot + - Photos: + icon: sh-immich.svg + description: Immich + href: https://immich.alexlebens.net + siteMonitor: http://immich-main.immich:2283 + statusStyle: dot + - Podcasts and Audiobooks: + icon: sh-audiobookshelf.svg + description: Audiobookshelf + href: https://audiobookshelf.alexlebens.net + siteMonitor: http://audiobookshelf.audiobookshelf:80 + statusStyle: dot + - Books: + icon: sh-calibre-web-light.svg + description: Calibre Web Automated + href: https://calibre.alexlebens.net + siteMonitor: http://calibre-web-automated-main.calibre-web-automated:8083 + statusStyle: dot + - Public: + - Site: + icon: https://web-assets-3bfcb5585cbd63dc365d32a3.nyc3.cdn.digitaloceanspaces.com/alexlebens-net/icon_white.png + description: Profile Website + href: https://www.alexlebens.dev + siteMonitor: https://www.alexlebens.dev + statusStyle: dot + - Content Management: + icon: directus.png + description: Directus + href: https://directus.alexlebens.dev + siteMonitor: https://directus.alexlebens.dev + statusStyle: dot + - Chat: + icon: sh-element.svg + description: Matrix + href: https://chat.alexlebens.dev + siteMonitor: https://chat.alexlebens.dev + statusStyle: dot + - Wiki: + icon: sh-outline.svg + description: Outline + href: https://wiki.alexlebens.dev + siteMonitor: https://wiki.alexlebens.dev + statusStyle: dot + - Passwords: + icon: sh-vaultwarden-light.svg + description: Vaultwarden + href: https://passwords.alexlebens.dev + siteMonitor: https://passwords.alexlebens.dev + statusStyle: dot + - Bookmarks: + icon: sh-hoarder-light.svg + description: Hoader + href: https://hoarder.alexlebens.dev + siteMonitor: https://hoarder.alexlebens.dev + statusStyle: dot + - RSS: + icon: sh-freshrss.svg + description: FreshRSS + href: https://rss.alexlebens.dev + siteMonitor: https://rss.alexlebens.dev + statusStyle: dot + - Internal: + - Home Automation: + icon: sh-home-assistant.svg + description: Home Assistant + href: https://home-assistant.alexlebens.net + siteMonitor: http://home-assistant.home-assistant:8123 + statusStyle: dot + - AI: + icon: sh-ollama-light.svg + description: Ollama + href: https://ollama.alexlebens.net + siteMonitor: http://ollama-web.ollama:80 + statusStyle: dot + - AI Image: + icon: https://user-images.githubusercontent.com/36368048/196280761-1535f413-a91e-4b6a-af6a-b890f8ae204c.png + description: Stable Diffusion + href: https://stable-diffusion-pd05wd.boreal-beaufort.ts.net + siteMonitor: https://stable-diffusion-pd05wd.boreal-beaufort.ts.net + statusStyle: dot + - Search: + icon: sh-searxng.svg + description: Searxng + href: https://searxng.alexlebens.net/ + siteMonitor: http://searxng-browser.searxng:80 + statusStyle: dot + - Email: + icon: sh-roundcube.svg + description: Roundcube + href: https://mail.alexlebens.net + siteMonitor: http://roundcube.roundcube:80 + statusStyle: dot + - Wiki: + icon: sh-kiwix-light.svg + description: Kiwix + href: https://kiwix.alexlebens.net + siteMonitor: http://kiwix.kiwix:80 + statusStyle: dot + - Pictures: + icon: sh-photoview.svg + description: Photoview + href: https://photoview.alexlebens.net + siteMonitor: http://photoview.photoview:80 + statusStyle: dot + - Code: + - Code (Public): + icon: sh-gitea.svg + description: Gitea + href: https://gitea.alexlebens.dev + siteMonitor: https://gitea.alexlebens.dev + statusStyle: dot + - Code (Tailnet): + icon: sh-gitea.svg + description: Gitea + href: https://gitea.alexlebens.net + siteMonitor: https://gitea.alexlebens.net + statusStyle: dot + - Code (ps10rp): + icon: sh-gitea.svg + description: Gitea + href: https://gitea.alexlebens.net + siteMonitor: https://gitea.alexlebens.net + statusStyle: dot + - IDE (Public): + icon: sh-visual-studio-code.svg + description: VS Code + href: https://codeserver.alexlebens.dev + siteMonitor: https://codeserver.alexlebens.dev + statusStyle: dot + - IDE (Home Assistant): + icon: sh-visual-studio-code.svg + description: Edit config for Home Assistant + href: https://home-assistant-codeserver.alexlebens.net + siteMonitor: http://home-assistant.home-assistant:8443 + statusStyle: dot + - Continuous Deployment: + icon: sh-argo-cd.svg + description: ArgoCD + href: https://argocd.alexlebens.net + siteMonitor: http://argocd-server.argocd:80 + statusStyle: dot + namespace: argocd + - Workflows: + icon: sh-argo-cd.svg + description: Argo Workflows + href: https://argo-workflows.alexlebens.net + siteMonitor: http://argo-workflows-server.argo-workflows:2746 + statusStyle: dot + namespace: argocd + - Deployment: + icon: sh-komodo.svg + description: Komodo + href: https://komodo.alexlebens.net + siteMonitor: http://komodo.komodo:80 + statusStyle: dot + namespace: komodo + - Monitoring: + - Kubernetes: + icon: kubernetes.png + description: Headlamp + href: https://headlamp.alexlebens.net + siteMonitor: http://headlamp.headlamp:80 + statusStyle: dot + - Network Monitoring: + icon: cilium.png + description: Hubble for Cilium + href: https://hubble.alexlebens.net + siteMonitor: http://hubble-ui.kube-system:80 + statusStyle: dot + - Dashboard: + icon: sh-grafana.svg + description: Grafana + href: https://grafana.alexlebens.net + siteMonitor: http://grafana.grafana:80/api/health + statusStyle: dot + - Metrics: + icon: sh-prometheus.svg + description: Prometheus + href: https://prometheus.alexlebens.net + siteMonitor: http://kube-prometheus-stack-prometheus.kube-prometheus-stack:9090 + statusStyle: dot + widget: + type: prometheus + url: http://kube-prometheus-stack-prometheus.kube-prometheus-stack:9090 + - Tautulli: + icon: sh-tautulli.svg + description: Plex Monitoring + href: https://tautulli.alexlebens.net + siteMonitor: http://tautulli.tautulli:80 + statusStyle: dot + - Jellystat: + icon: sh-jellystat.png + description: Jellyfin Monitoring + href: https://jellystat.alexlebens.net + siteMonitor: http://jellystat.jellystat:3000 + statusStyle: dot + - Services: + - Auth (Public): + icon: sh-authentik.svg + description: Authentik + href: https://auth.alexlebens.dev + siteMonitor: https://auth.alexlebens.dev + statusStyle: dot + - Auth (Tailnet): + icon: sh-authentik.svg + description: Authentik + href: https://auth.alexlebens.net + siteMonitor: http://authentik-server.authentik:80 + statusStyle: dot + - Email: + icon: sh-stalwart-mail-server.svg + description: Stalwart + href: https://stalwart.alexlebens.net + siteMonitor: http://stalwart.stalwart:80 + statusStyle: dot + - Reverse Proxy (cl01tl): + icon: sh-traefik.svg + description: Traefik + href: https://traefik-cl01tl.alexlebens.net/dashboard/#/ + siteMonitor: https://traefik-cl01tl.alexlebens.net/dashboard/#/ + statusStyle: dot + widget: + type: traefik + url: https://traefik-cl01tl.alexlebens.net + - Image Cache: + icon: sh-harbor.svg + description: Harbor + href: https://harbor.alexlebens.net + siteMonitor: http://harbor-portal.harbor:80 + statusStyle: dot + - Hardware: + - Network Management (alexlebens.net): + icon: sh-ubiquiti-unifi.svg + description: Unifi + href: https://unifi.alexlebens.net + siteMonitor: https://unifi.alexlebens.net + statusStyle: dot + - Network Attached Storage: + icon: sh-synology-light.svg + description: Synology + href: https://synology.alexlebens.net + siteMonitor: https://synology.alexlebens.net + statusStyle: dot + widget: + type: diskstation + url: https://synology.alexlebens.net + username: {{ "{{HOMEPAGE_VAR_SYNOLOGY_USER}}" }} + password: {{ "{{HOMEPAGE_VAR_SYNOLOGY_PASSWORD}}" }} + volume: volume_2 + - TV Tuner: + icon: sh-hdhomerun.svg + description: HD Homerun + href: http://hdhr.alexlebens.net + siteMonitor: http://hdhr.alexlebens.net + statusStyle: dot + - KVM: + icon: sh-pikvm-light.svg + description: Pi KVM + href: https://pikvm.alexlebens.net + siteMonitor: https://pikvm.alexlebens.net + statusStyle: dot + - Storage: + - Cluster Storage: + icon: ceph.png + description: Ceph + href: https://ceph.alexlebens.net + siteMonitor: http://rook-ceph-mgr-dashboard.rook-ceph:7000 + statusStyle: dot + - Database: + icon: sh-pgadmin-light.svg + description: PGAdmin + href: https://pgadmin.alexlebens.net + siteMonitor: http://pgadmin.pgadmin:80 + statusStyle: dot + - Secrets: + icon: sh-hashicorp-vault.svg + description: Vault + href: https://vault.alexlebens.net + siteMonitor: http://vault.vault:8200 + statusStyle: dot + - Object Storage (Outline): + icon: sh-minio.svg + description: Minio Tenant + href: https://minio-outline.alexlebens.net + siteMonitor: http://minio-outline-console.outline:9090 + statusStyle: dot + - Object Storage (Directus): + icon: sh-minio.svg + description: Minio Tenant + href: https://minio-directus.alexlebens.net + siteMonitor: http://minio-directus-console.directus:9090 + statusStyle: dot + - TV Shows: + - Sonarr: + icon: sh-sonarr.svg + description: TV Shows + href: https://sonarr.alexlebens.net + siteMonitor: http://sonarr4.sonarr4:80 + statusStyle: dot + widget: + type: sonarr + url: http://sonarr4.sonarr4:80 + key: {{ "{{HOMEPAGE_VAR_SONARR_KEY}}" }} + fields: ["wanted", "queued", "series"] + enableQueue: false + - Sonarr 4K: + icon: sh-sonarr.svg + description: TV Shows 4K + href: https://sonarr-4k.alexlebens.net + siteMonitor: http://sonarr4-4k.sonarr4-4k:80 + statusStyle: dot + widget: + type: sonarr + url: http://sonarr4-4k.sonarr4-4k:80 + key: {{ "{{HOMEPAGE_VAR_SONARR4K_KEY}}" }} + fields: ["wanted", "queued", "series"] + enableQueue: false + - Sonarr Anime: + icon: sh-sonarr.svg + description: Anime Shows + href: https://sonarr-anime.alexlebens.net + siteMonitor: http://sonarr4-anime.sonarr4-anime:80 + statusStyle: dot + widget: + type: sonarr + url: http://sonarr4-anime.sonarr4-anime:80 + key: {{ "{{HOMEPAGE_VAR_SONARRANIME_KEY}}" }} + fields: ["wanted", "queued", "series"] + enableQueue: false + - Movies: + - Radarr: + icon: sh-radarr.svg + description: Movies + href: https://radarr.alexlebens.net + siteMonitor: http://radarr5.radarr5:80 + statusStyle: dot + widget: + type: radarr + url: http://radarr5.radarr5:80 + key: {{ "{{HOMEPAGE_VAR_RADARR_KEY}}" }} + fields: ["wanted", "queued", "movies"] + enableQueue: false + - Radarr 4K: + icon: sh-radarr.svg + description: Movies 4K + href: https://radarr-4k.alexlebens.net + siteMonitor: http://radarr5-4k.radarr5-4k:80 + statusStyle: dot + widget: + type: radarr + url: http://radarr5-4k.radarr5-4k:80 + key: {{ "{{HOMEPAGE_VAR_RADARR4K_KEY}}" }} + fields: ["wanted", "queued", "movies"] + enableQueue: false + - Radarr Anime: + icon: sh-radarr.svg + description: Anime Movies + href: https://radarr-anime.alexlebens.net + siteMonitor: http://radarr5-anime.radarr5-anime:80 + statusStyle: dot + widget: + type: radarr + url: http://radarr5-anime.radarr5-anime:80 + key: {{ "{{HOMEPAGE_VAR_RADARRANIME_KEY}}" }} + fields: ["wanted", "queued", "movies"] + enableQueue: false + - Radarr Stand Up: + icon: sh-radarr.svg + description: Stand Up + href: https://radarr-standup.alexlebens.net + siteMonitor: http://radarr5-standup.radarr5-standup:80 + statusStyle: dot + widget: + type: radarr + url: http://radarr5-standup.radarr5-standup:80 + key: {{ "{{HOMEPAGE_VAR_RADARRSTANDUP_KEY}}" }} + fields: ["wanted", "queued", "movies"] + enableQueue: false + - Music: + - Lidarr: + icon: sh-lidarr.svg + description: Music + href: https://lidarr.alexlebens.net + siteMonitor: http://lidarr2.lidarr2:80 + statusStyle: dot + widget: + type: lidarr + url: http://lidarr2.lidarr2:80 + key: {{ "{{HOMEPAGE_VAR_LIDARR2_KEY}}" }} + fields: ["wanted", "queued", "artists"] + - LidaTube: + icon: sh-lidatube.png + description: Searches for Music + href: https://lidatube.alexlebens.net + siteMonitor: http://lidatube.lidatube:80 + statusStyle: dot + - Services (Servarr): + - qBittorrent: + icon: sh-qbittorrent.svg + description: P2P Downloads + href: https://qbittorrent.alexlebens.net + siteMonitor: http://qbittorrent.qbittorrent:8080 + statusStyle: dot + widget: + type: qbittorrent + url: http://qbittorrent.qbittorrent:8080 + enableLeechProgress: true + - Prowlarr: + icon: sh-prowlarr.svg + description: Indexers + href: https://prowlarr.alexlebens.net + siteMonitor: http://prowlarr.prowlarr:80 + statusStyle: dot + - Soulseek: + icon: sh-slskd.png + description: slskd + href: https://slskd.alexlebens.net + siteMonitor: http://slskd.slskd:5030 + statusStyle: dot + - CWA Downloader: + icon: sh-calibre.png + description: Calibre Web Automated Book Downloader + href: https://calibre-downloader.alexlebens.net + siteMonitor: http://calibre-web-automated-downloader.calibre-web-automated:8084 + statusStyle: dot + - Tdarr: + icon: sh-tdarr.png + description: Media transcoding and health checks + href: https://tdarr.alexlebens.net + siteMonitor: http://tdarr-web.tdarr:8265 + statusStyle: dot + widget: + type: tdarr + url: http://tdarr-web.tdarr:8265 + - Other Homes: + - Dev: + icon: sh-homepage.png + description: Public Homepage + href: https://home.alexlebens.dev + siteMonitor: https://home.alexlebens.dev + statusStyle: dot + - Lebens Home: + icon: sh-homepage.png + description: Lebens Homepage + href: https://home-ps10rp.boreal-beaufort.ts.net + siteMonitor: https://home-ps10rp.boreal-beaufort.ts.net + statusStyle: dot + bookmarks.yaml: | + - External Services: + - Github: + - abbr: GH + href: https://github.com/alexlebens/infrastructure + - Renovate: + - abbr: RN + href: https://developer.mend.io/[platform]/alexlebens/infrastructure + - Digital Ocean: + - abbr: DO + href: https://www.digitalocean.com/ + - AWS: + - abbr: AW + href: https://aws.amazon.com/console/ + - Cloudflare: + - abbr: CF + href: https://dash.cloudflare.com/b76e303258b84076ee01fd0f515c0768 + - Tailscale: + - abbr: TS + href: https://login.tailscale.com/admin/machines + - ProtonVPN: + - abbr: PV + href: https://account.protonvpn.com/ + - Unifi: + - abbr: UF + href: https://unifi.ui.com/ + - Pushover: + - abbr: PO + href: https://pushover.net + - ReCaptcha: + - abbr: RC + href: https://www.google.com/recaptcha/admin/site/698983587 + - Trackers: + - Torrentleech: + - abbr: TL + href: https://www.torrentleech.org + - Avistaz: + - abbr: AV + href: https://avistaz.to + - Cinemaz: + - abbr: CM + href: https://cinemaz.to + - Cathode Ray Tube: + - abbr: CRT + href: https://www.cathode-ray.tube + - Alpha Ratio: + - abbr: AL + href: https://alpharatio.cc/ + - MV Group: + - abbr: MV + href: https://forums.mvgroup.org + service: + http: + controller: main + ports: + http: + port: 80 + targetPort: 3000 + protocol: HTTP + persistence: + config: + enabled: true + type: configMap + name: homepage-config + advancedMounts: + main: + main: + - path: /app/config/bookmarks.yaml + readOnly: true + mountPropagation: None + subPath: bookmarks.yaml + - path: /app/config/docker.yaml + readOnly: true + mountPropagation: None + subPath: docker.yaml + - path: /app/config/kubernetes.yaml + readOnly: true + mountPropagation: None + subPath: kubernetes.yaml + - path: /app/config/services.yaml + readOnly: true + mountPropagation: None + subPath: services.yaml + - path: /app/config/settings.yaml + readOnly: true + mountPropagation: None + subPath: settings.yaml + - path: /app/config/widgets.yaml + readOnly: true + mountPropagation: None + subPath: widgets.yaml