[ci skip] add Homepage gethomepage.dev annotations to all services
Add Kubernetes ingress annotations for Homepage auto-discovery across ~88 services organized into 11 groups. Enable serviceAccount for RBAC, configure group layouts, and add Grafana/Frigate/Speedtest widgets.
This commit is contained in:
parent
f7994e012e
commit
af74aa297d
76 changed files with 722 additions and 95 deletions
|
|
@ -14,6 +14,10 @@ variable "budget_encryption_password" {
|
|||
sensitive = true
|
||||
}
|
||||
variable "nfs_server" { type = string }
|
||||
variable "homepage_annotations" {
|
||||
type = map(string)
|
||||
default = {}
|
||||
}
|
||||
|
||||
module "nfs_data" {
|
||||
source = "../../../modules/kubernetes/nfs_volume"
|
||||
|
|
@ -103,6 +107,7 @@ module "ingress" {
|
|||
name = "budget-${var.name}"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
rybbit_site_id = "3e6b6b68088a"
|
||||
extra_annotations = var.homepage_annotations
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -44,6 +44,14 @@ module "viktor" {
|
|||
tier = local.tiers.edge
|
||||
budget_encryption_password = lookup(var.actualbudget_credentials["viktor"], "password", null)
|
||||
sync_id = lookup(var.actualbudget_credentials["viktor"], "sync_id", null)
|
||||
homepage_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Budget Viktor"
|
||||
"gethomepage.dev/description" = "Personal budget"
|
||||
"gethomepage.dev/icon" = "actual-budget.png"
|
||||
"gethomepage.dev/group" = "Finance & Personal"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
||||
# https://budget-anca.viktorbarzin.me/
|
||||
|
|
@ -57,6 +65,14 @@ module "anca" {
|
|||
tier = local.tiers.edge
|
||||
budget_encryption_password = lookup(var.actualbudget_credentials["anca"], "password", null)
|
||||
sync_id = lookup(var.actualbudget_credentials["anca"], "sync_id", null)
|
||||
homepage_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Budget Anca"
|
||||
"gethomepage.dev/description" = "Personal budget"
|
||||
"gethomepage.dev/icon" = "actual-budget.png"
|
||||
"gethomepage.dev/group" = "Finance & Personal"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
||||
# https://budget-emo.viktorbarzin.me/
|
||||
|
|
@ -70,4 +86,12 @@ module "emo" {
|
|||
tier = local.tiers.edge
|
||||
budget_encryption_password = lookup(var.actualbudget_credentials["emo"], "password", null)
|
||||
sync_id = lookup(var.actualbudget_credentials["emo"], "sync_id", null)
|
||||
homepage_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Budget Emo"
|
||||
"gethomepage.dev/description" = "Personal budget"
|
||||
"gethomepage.dev/icon" = "actual-budget.png"
|
||||
"gethomepage.dev/group" = "Finance & Personal"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -231,4 +231,12 @@ module "ingress" {
|
|||
name = "affine"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
max_body_size = "500m"
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Affine"
|
||||
"gethomepage.dev/description" = "Knowledge base"
|
||||
"gethomepage.dev/icon" = "affine.png"
|
||||
"gethomepage.dev/group" = "Other"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -193,4 +193,12 @@ module "ingress" {
|
|||
name = "audiobookshelf"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
rybbit_site_id = "b38fda4285df"
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Audiobookshelf"
|
||||
"gethomepage.dev/description" = "Audiobook library"
|
||||
"gethomepage.dev/icon" = "audiobookshelf.png"
|
||||
"gethomepage.dev/group" = "Media & Entertainment"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -113,6 +113,14 @@ module "ingress" {
|
|||
full_host = "viktorbarzin.me"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
rybbit_site_id = "da853a2438d0"
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Blog"
|
||||
"gethomepage.dev/description" = "Personal blog"
|
||||
"gethomepage.dev/icon" = "hugo.png"
|
||||
"gethomepage.dev/group" = "Other"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
||||
module "ingress-www" {
|
||||
|
|
|
|||
|
|
@ -270,7 +270,7 @@ module "ingress" {
|
|||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/description" = "Book library"
|
||||
# gethomepage.dev/group: Media
|
||||
"gethomepage.dev/group" = "Media & Entertainment"
|
||||
"gethomepage.dev/icon" : "calibre-web.png"
|
||||
"gethomepage.dev/name" = "Calibre"
|
||||
"gethomepage.dev/widget.type" = "calibreweb"
|
||||
|
|
@ -371,4 +371,7 @@ module "stacks-ingress" {
|
|||
tls_secret_name = var.tls_secret_name
|
||||
protected = true
|
||||
rybbit_site_id = "ce5f8aed6bbb"
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "false"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -160,4 +160,12 @@ module "ingress" {
|
|||
name = "changedetection"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
protected = true
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Changedetection"
|
||||
"gethomepage.dev/description" = "Website change monitor"
|
||||
"gethomepage.dev/icon" = "changedetection-io.png"
|
||||
"gethomepage.dev/group" = "Automation"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -92,4 +92,12 @@ module "ingress" {
|
|||
name = "city-guesser"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
protected = true
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "City Guesser"
|
||||
"gethomepage.dev/description" = "Geography game"
|
||||
"gethomepage.dev/icon" = "globe.png"
|
||||
"gethomepage.dev/group" = "Other"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -99,4 +99,12 @@ module "ingress" {
|
|||
name = "cc"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
rybbit_site_id = "7c460afc68c4"
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "CyberChef"
|
||||
"gethomepage.dev/description" = "Data transformation toolkit"
|
||||
"gethomepage.dev/icon" = "cyberchef.png"
|
||||
"gethomepage.dev/group" = "Development & CI"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -345,4 +345,12 @@ module "ingress" {
|
|||
name = "dawarich"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
rybbit_site_id = "0abfd409f2fb"
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Dawarich"
|
||||
"gethomepage.dev/description" = "Location history"
|
||||
"gethomepage.dev/icon" = "dawarich.png"
|
||||
"gethomepage.dev/group" = "Smart Home"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -246,6 +246,14 @@ module "ingress" {
|
|||
name = "ebook2audiobook"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
protected = true
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Ebook2Audiobook"
|
||||
"gethomepage.dev/description" = "Book to audio converter"
|
||||
"gethomepage.dev/icon" = "audiobookshelf.png"
|
||||
"gethomepage.dev/group" = "AI & Data"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -421,4 +429,12 @@ module "audiblez-web-ingress" {
|
|||
tls_secret_name = var.tls_secret_name
|
||||
protected = true
|
||||
max_body_size = "500m" # Allow large EPUB uploads
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Audiblez"
|
||||
"gethomepage.dev/description" = "Book to audio converter"
|
||||
"gethomepage.dev/icon" = "audiobookshelf.png"
|
||||
"gethomepage.dev/group" = "AI & Data"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -125,4 +125,12 @@ module "ingress" {
|
|||
name = "draw"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
protected = true
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Excalidraw"
|
||||
"gethomepage.dev/description" = "Collaborative whiteboard"
|
||||
"gethomepage.dev/icon" = "excalidraw.png"
|
||||
"gethomepage.dev/group" = "Development & CI"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -128,4 +128,12 @@ module "ingress" {
|
|||
tls_secret_name = var.tls_secret_name
|
||||
rybbit_site_id = "7e69786f66d5"
|
||||
exclude_crowdsec = true
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "F1 Stream"
|
||||
"gethomepage.dev/description" = "Formula 1 live streams"
|
||||
"gethomepage.dev/icon" = "f1.png"
|
||||
"gethomepage.dev/group" = "Media & Entertainment"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -121,4 +121,12 @@ module "ingress" {
|
|||
namespace = kubernetes_namespace.forgejo.metadata[0].name
|
||||
name = "forgejo"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Forgejo"
|
||||
"gethomepage.dev/description" = "Git hosting"
|
||||
"gethomepage.dev/icon" = "forgejo.png"
|
||||
"gethomepage.dev/group" = "Development & CI"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,6 +47,10 @@ variable "memory_request" {
|
|||
type = string
|
||||
default = "64Mi"
|
||||
}
|
||||
variable "extra_annotations" {
|
||||
type = map(string)
|
||||
default = {}
|
||||
}
|
||||
|
||||
|
||||
resource "kubernetes_deployment" "freedify" {
|
||||
|
|
@ -144,9 +148,10 @@ resource "kubernetes_service" "freedify" {
|
|||
}
|
||||
|
||||
module "ingress" {
|
||||
source = "../../../modules/kubernetes/ingress_factory"
|
||||
namespace = "freedify"
|
||||
name = "music-${var.name}"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
protected = var.protected
|
||||
source = "../../../modules/kubernetes/ingress_factory"
|
||||
namespace = "freedify"
|
||||
name = "music-${var.name}"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
protected = var.protected
|
||||
extra_annotations = var.extra_annotations
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,6 +45,14 @@ module "viktor" {
|
|||
dab_session = lookup(var.freedify_credentials["viktor"], "dab_session", null)
|
||||
dab_visitor_id = lookup(var.freedify_credentials["viktor"], "dab_visitor_id", null)
|
||||
gemini_api_key = lookup(var.freedify_credentials["viktor"], "gemini_api_key", null)
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Freedify (Viktor)"
|
||||
"gethomepage.dev/description" = "Music streaming"
|
||||
"gethomepage.dev/icon" = "navidrome.png"
|
||||
"gethomepage.dev/group" = "Media & Entertainment"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
||||
# https://music-emo.viktorbarzin.me/
|
||||
|
|
@ -58,4 +66,12 @@ module "emo" {
|
|||
protected = true
|
||||
genius_token = lookup(var.freedify_credentials["emo"], "genius_token", null)
|
||||
gemini_api_key = lookup(var.freedify_credentials["emo"], "gemini_api_key", null)
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Freedify (Emo)"
|
||||
"gethomepage.dev/description" = "Music streaming"
|
||||
"gethomepage.dev/icon" = "navidrome.png"
|
||||
"gethomepage.dev/group" = "Media & Entertainment"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -147,4 +147,12 @@ module "ingress" {
|
|||
name = "rss"
|
||||
service_name = "freshrss"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "FreshRSS"
|
||||
"gethomepage.dev/description" = "RSS feed reader"
|
||||
"gethomepage.dev/icon" = "freshrss.png"
|
||||
"gethomepage.dev/group" = "Productivity"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -243,6 +243,16 @@ module "ingress" {
|
|||
tls_secret_name = var.tls_secret_name
|
||||
protected = true
|
||||
rybbit_site_id = "0d4044069ff5"
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Frigate"
|
||||
"gethomepage.dev/description" = "NVR & object detection"
|
||||
"gethomepage.dev/icon" = "frigate.png"
|
||||
"gethomepage.dev/group" = "Media & Entertainment"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
"gethomepage.dev/widget.type" = "frigate"
|
||||
"gethomepage.dev/widget.url" = "http://frigate.frigate.svc.cluster.local:5000"
|
||||
}
|
||||
}
|
||||
|
||||
module "ingress-internal" {
|
||||
|
|
@ -255,4 +265,7 @@ module "ingress-internal" {
|
|||
tls_secret_name = var.tls_secret_name
|
||||
allow_local_access_only = true
|
||||
ssl_redirect = false
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "false"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -304,4 +304,12 @@ module "ingress" {
|
|||
tls_secret_name = var.tls_secret_name
|
||||
max_body_size = "500m"
|
||||
protected = true
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "GrampsWeb"
|
||||
"gethomepage.dev/description" = "Family tree"
|
||||
"gethomepage.dev/icon" = "grampsweb.png"
|
||||
"gethomepage.dev/group" = "Other"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -168,4 +168,12 @@ module "ingress" {
|
|||
namespace = kubernetes_namespace.hackmd.metadata[0].name
|
||||
name = "hackmd"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "HackMD"
|
||||
"gethomepage.dev/description" = "Collaborative markdown"
|
||||
"gethomepage.dev/icon" = "hedgedoc.png"
|
||||
"gethomepage.dev/group" = "Development & CI"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -147,4 +147,12 @@ module "ingress" {
|
|||
name = "health"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
max_body_size = "100m"
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Health"
|
||||
"gethomepage.dev/description" = "Health dashboard"
|
||||
"gethomepage.dev/icon" = "healthchecks.png"
|
||||
"gethomepage.dev/group" = "Core Platform"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,20 +5,10 @@ image:
|
|||
# Enable RBAC. RBAC is necessary to use Kubernetes integration
|
||||
enableRbac: true
|
||||
|
||||
extraClusterRoles:
|
||||
# - apiGroups:
|
||||
# - some-group
|
||||
# resources:
|
||||
# - some-resource
|
||||
# verbs:
|
||||
# - get
|
||||
|
||||
serviceAccount:
|
||||
# Specify a different service account name. When blank it will default to the release
|
||||
# name if *create* is enabled, otherwise it will refer to the default service account.
|
||||
name: ""
|
||||
# Create service account. Needed when RBAC is enabled.
|
||||
create: false
|
||||
# Create service account. Needed when RBAC is enabled for K8s annotation auto-discovery.
|
||||
create: true
|
||||
|
||||
service:
|
||||
main:
|
||||
|
|
@ -37,13 +27,11 @@ ingress:
|
|||
main:
|
||||
enabled: true
|
||||
labels:
|
||||
# This label will enable discover of this deployment in Homepage
|
||||
gethomepage.dev/enabled: "true"
|
||||
annotations:
|
||||
# These annotations will configure how this deployment is shown in Homepage
|
||||
gethomepage.dev/name: "Homepage"
|
||||
gethomepage.dev/description: "A modern, secure, highly customizable application dashboard."
|
||||
gethomepage.dev/group: "A New Group"
|
||||
gethomepage.dev/description: "Service dashboard"
|
||||
gethomepage.dev/group: "Core Platform"
|
||||
gethomepage.dev/icon: "homepage.png"
|
||||
ingressClassName: "traefik"
|
||||
hosts:
|
||||
|
|
@ -58,32 +46,14 @@ ingress:
|
|||
|
||||
# All the config files for Homepage can be specified under their relevant config block.
|
||||
config:
|
||||
# To use an existing ConfigMap uncomment this line and specify the name
|
||||
# useExistingConfigMap: existing-homepage-configmap
|
||||
bookmarks:
|
||||
- Developer:
|
||||
- Github:
|
||||
- abbr: Viktor Barzin
|
||||
href: https://github.com/viktorbarzin
|
||||
services:
|
||||
# - My First Group:
|
||||
# - My First Service:
|
||||
# href: http://localhost/
|
||||
# description: Homepage is awesome
|
||||
|
||||
# - My Second Group:
|
||||
# - My Second Service:
|
||||
# href: http://localhost/
|
||||
# description: Homepage is the best
|
||||
|
||||
# - My Third Group:
|
||||
# - My Third Service:
|
||||
# href: http://localhost/
|
||||
# description: Homepage is 😎
|
||||
services: [] # All services via K8s annotation auto-discovery
|
||||
widgets:
|
||||
- resources:
|
||||
# change backend to 'kubernetes' to use Kubernetes integration. Requires RBAC.
|
||||
# backend: resources
|
||||
backend: kubernetes
|
||||
expanded: true
|
||||
cpu: true
|
||||
|
|
@ -91,7 +61,6 @@ config:
|
|||
- search:
|
||||
provider: duckduckgo
|
||||
target: _blank
|
||||
## Uncomment to enable Kubernetes integration
|
||||
- kubernetes:
|
||||
cluster:
|
||||
show: true
|
||||
|
|
@ -105,51 +74,49 @@ config:
|
|||
memory: true
|
||||
showLabel: true
|
||||
kubernetes:
|
||||
# change mode to 'cluster' to use RBAC service account
|
||||
# mode: disable
|
||||
mode: cluster
|
||||
docker:
|
||||
settings:
|
||||
layout:
|
||||
Core Platform:
|
||||
style: row
|
||||
columns: 4
|
||||
Identity & Security:
|
||||
style: row
|
||||
columns: 3
|
||||
Infrastructure:
|
||||
style: row
|
||||
columns: 4
|
||||
Development & CI:
|
||||
style: row
|
||||
columns: 4
|
||||
Automation:
|
||||
style: row
|
||||
columns: 3
|
||||
Productivity:
|
||||
style: row
|
||||
columns: 4
|
||||
Media & Entertainment:
|
||||
style: row
|
||||
columns: 4
|
||||
Smart Home:
|
||||
style: row
|
||||
columns: 3
|
||||
AI & Data:
|
||||
style: row
|
||||
columns: 3
|
||||
Finance & Personal:
|
||||
style: row
|
||||
columns: 3
|
||||
Other:
|
||||
style: row
|
||||
columns: 4
|
||||
|
||||
# -- Main environment variables. Template enabled.
|
||||
# Syntax options:
|
||||
# A) TZ: UTC
|
||||
# B) PASSWD: '{{ .Release.Name }}'
|
||||
# C) PASSWD:
|
||||
# configMapKeyRef:
|
||||
# name: config-map-name
|
||||
# key: key-name
|
||||
# D) PASSWD:
|
||||
# valueFrom:
|
||||
# secretKeyRef:
|
||||
# name: secret-name
|
||||
# key: key-name
|
||||
# ...
|
||||
# E) - name: TZ
|
||||
# value: UTC
|
||||
# F) - name: TZ
|
||||
# value: '{{ .Release.Name }}'
|
||||
env:
|
||||
HOMEPAGE_ALLOWED_HOSTS: home.viktorbarzin.me
|
||||
|
||||
|
||||
# To include environment variables from other configs or other secrets for use in
|
||||
# Homepage's variable substitutions. Refer to them here.
|
||||
# envFrom:
|
||||
# - secretRef:
|
||||
# name: my-secret
|
||||
# - configMapRef:
|
||||
# name: my-configmap
|
||||
|
||||
persistence:
|
||||
logs:
|
||||
enabled: true
|
||||
type: emptyDir
|
||||
mountPath: /app/config/logs
|
||||
# resources:
|
||||
# requests:
|
||||
# memory: 10Mi
|
||||
# cpu: 10m
|
||||
# limits:
|
||||
# memory: 200Mi
|
||||
# cpu: 500m
|
||||
|
|
|
|||
|
|
@ -593,6 +593,7 @@ module "ingress-immich" {
|
|||
"gethomepage.dev/description" = "Photos library"
|
||||
"gethomepage.dev/icon" = "immich.png"
|
||||
"gethomepage.dev/name" = "Immich"
|
||||
"gethomepage.dev/group" = "Media & Entertainment"
|
||||
"gethomepage.dev/widget.type" = "immich"
|
||||
"gethomepage.dev/widget.url" = "https://immich.viktorbarzin.me"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
|
|
|
|||
|
|
@ -81,4 +81,12 @@ module "ingress" {
|
|||
namespace = kubernetes_namespace.jsoncrack.metadata[0].name
|
||||
name = "json"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "JSON Crack"
|
||||
"gethomepage.dev/description" = "JSON visualizer"
|
||||
"gethomepage.dev/icon" = "json.png"
|
||||
"gethomepage.dev/group" = "Development & CI"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -94,6 +94,14 @@ module "ingress" {
|
|||
protected = true
|
||||
backend_protocol = "HTTPS"
|
||||
port = 443
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Kubernetes Dashboard"
|
||||
"gethomepage.dev/description" = "Cluster dashboard"
|
||||
"gethomepage.dev/icon" = "kubernetes-dashboard.png"
|
||||
"gethomepage.dev/group" = "Core Platform"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
||||
# create token with
|
||||
|
|
|
|||
|
|
@ -120,6 +120,14 @@ module "ingress" {
|
|||
namespace = kubernetes_namespace.kms.metadata[0].name
|
||||
name = "kms"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "KMS"
|
||||
"gethomepage.dev/description" = "License activation server"
|
||||
"gethomepage.dev/icon" = "microsoft.png"
|
||||
"gethomepage.dev/group" = "Other"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
||||
resource "kubernetes_deployment" "windows_kms" {
|
||||
|
|
|
|||
|
|
@ -141,4 +141,12 @@ module "ingress" {
|
|||
namespace = kubernetes_namespace.linkwarden.metadata[0].name
|
||||
name = "linkwarden"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Linkwarden"
|
||||
"gethomepage.dev/description" = "Bookmark manager"
|
||||
"gethomepage.dev/icon" = "linkwarden.png"
|
||||
"gethomepage.dev/group" = "Productivity"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -108,4 +108,12 @@ module "ingress" {
|
|||
namespace = kubernetes_namespace.matrix.metadata[0].name
|
||||
name = "matrix"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Matrix"
|
||||
"gethomepage.dev/description" = "Secure messaging"
|
||||
"gethomepage.dev/icon" = "matrix.png"
|
||||
"gethomepage.dev/group" = "Other"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -183,4 +183,12 @@ module "ingress" {
|
|||
tls_secret_name = var.tls_secret_name
|
||||
port = 443
|
||||
protected = true
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "MeshCentral"
|
||||
"gethomepage.dev/description" = "Remote management"
|
||||
"gethomepage.dev/icon" = "meshcentral.png"
|
||||
"gethomepage.dev/group" = "Infrastructure"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -162,4 +162,12 @@ module "ingress" {
|
|||
namespace = kubernetes_namespace.n8n.metadata[0].name
|
||||
name = "n8n"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "n8n"
|
||||
"gethomepage.dev/description" = "Workflow automation"
|
||||
"gethomepage.dev/icon" = "n8n.png"
|
||||
"gethomepage.dev/group" = "Automation"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -152,4 +152,12 @@ module "ingress" {
|
|||
name = "navidrome"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
rybbit_site_id = "8a3844ff75ba"
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Navidrome"
|
||||
"gethomepage.dev/description" = "Music streaming"
|
||||
"gethomepage.dev/icon" = "navidrome.png"
|
||||
"gethomepage.dev/group" = "Media & Entertainment"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -196,4 +196,12 @@ module "ingress" {
|
|||
name = "netbox"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
protected = true
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Netbox"
|
||||
"gethomepage.dev/description" = "Network documentation"
|
||||
"gethomepage.dev/icon" = "netbox.png"
|
||||
"gethomepage.dev/group" = "Infrastructure"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -93,4 +93,12 @@ module "ingress" {
|
|||
tls_secret_name = var.tls_secret_name
|
||||
protected = true
|
||||
rybbit_site_id = "50e38577e41c"
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Networking Toolbox"
|
||||
"gethomepage.dev/description" = "Network diagnostic tools"
|
||||
"gethomepage.dev/icon" = "networking.png"
|
||||
"gethomepage.dev/group" = "Development & CI"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -190,6 +190,14 @@ module "ingress" {
|
|||
tls_secret_name = var.tls_secret_name
|
||||
port = 8080
|
||||
rybbit_site_id = "5a3bfe59a3fe"
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Nextcloud"
|
||||
"gethomepage.dev/description" = "Cloud productivity suite"
|
||||
"gethomepage.dev/icon" = "nextcloud.png"
|
||||
"gethomepage.dev/group" = "Productivity"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
||||
module "whiteboard_ingress" {
|
||||
|
|
|
|||
|
|
@ -171,4 +171,12 @@ module "ingress" {
|
|||
namespace = kubernetes_namespace.ntfy.metadata[0].name
|
||||
name = "ntfy"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "ntfy"
|
||||
"gethomepage.dev/description" = "Push notifications"
|
||||
"gethomepage.dev/icon" = "ntfy.png"
|
||||
"gethomepage.dev/group" = "Productivity"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -160,6 +160,9 @@ module "ollama-ingress" {
|
|||
allow_local_access_only = true
|
||||
ssl_redirect = false
|
||||
port = 11434
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "false"
|
||||
}
|
||||
}
|
||||
|
||||
# Ollama API ingress for external access (basicAuth protected)
|
||||
|
|
@ -212,6 +215,7 @@ module "ollama-api-ingress" {
|
|||
port = 11434
|
||||
extra_annotations = {
|
||||
"traefik.ingress.kubernetes.io/router.middlewares" = "ollama-ollama-api-basic-auth@kubernetescrd,traefik-rate-limit@kubernetescrd,traefik-crowdsec@kubernetescrd"
|
||||
"gethomepage.dev/enabled" = "false"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -306,4 +310,12 @@ module "ingress" {
|
|||
tls_secret_name = var.tls_secret_name
|
||||
port = 80
|
||||
rybbit_site_id = "e73bebea399f"
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Ollama"
|
||||
"gethomepage.dev/description" = "Local LLM inference"
|
||||
"gethomepage.dev/icon" = "ollama.png"
|
||||
"gethomepage.dev/group" = "AI & Data"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -199,4 +199,12 @@ module "ingress" {
|
|||
name = "onlyoffice"
|
||||
service_name = "onlyoffice-document-server"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "OnlyOffice"
|
||||
"gethomepage.dev/description" = "Document editor"
|
||||
"gethomepage.dev/icon" = "onlyoffice.png"
|
||||
"gethomepage.dev/group" = "Other"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -650,6 +650,14 @@ module "ingress" {
|
|||
tls_secret_name = var.tls_secret_name
|
||||
port = 80
|
||||
protected = true
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "OpenClaw"
|
||||
"gethomepage.dev/description" = "AI assistant"
|
||||
"gethomepage.dev/icon" = "openai.png"
|
||||
"gethomepage.dev/group" = "AI & Data"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
||||
# --- CronJob: Scheduled cluster health check ---
|
||||
|
|
|
|||
|
|
@ -161,6 +161,12 @@ module "ingress" {
|
|||
port = 443
|
||||
extra_annotations = {
|
||||
"traefik.ingress.kubernetes.io/router.middlewares" = "owntracks-basic-auth@kubernetescrd,traefik-rate-limit@kubernetescrd,traefik-csp-headers@kubernetescrd,traefik-crowdsec@kubernetescrd"
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "OwnTracks"
|
||||
"gethomepage.dev/description" = "Location tracking"
|
||||
"gethomepage.dev/icon" = "owntracks.png"
|
||||
"gethomepage.dev/group" = "Smart Home"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -186,7 +186,7 @@ module "ingress" {
|
|||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/description" = "Document library"
|
||||
# gethomepage.dev/group: Media
|
||||
"gethomepage.dev/group" = "Productivity"
|
||||
"gethomepage.dev/icon" : "paperless-ngx.png"
|
||||
"gethomepage.dev/name" = "Paperless-ngx"
|
||||
"gethomepage.dev/widget.type" = "paperlessngx"
|
||||
|
|
|
|||
|
|
@ -59,6 +59,14 @@ module "ingress" {
|
|||
name = "authentik"
|
||||
service_name = "goauthentik-server"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Authentik"
|
||||
"gethomepage.dev/description" = "Identity provider"
|
||||
"gethomepage.dev/icon" = "authentik.png"
|
||||
"gethomepage.dev/group" = "Identity & Security"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
||||
module "ingress-outpost" {
|
||||
|
|
|
|||
|
|
@ -109,6 +109,7 @@ lapi:
|
|||
gethomepage.dev/description: "Web Application Firewall"
|
||||
gethomepage.dev/icon: "crowdsec.png"
|
||||
gethomepage.dev/name: "CrowdSec"
|
||||
gethomepage.dev/group: "Identity & Security"
|
||||
gethomepage.dev/widget.type: "crowdsec"
|
||||
gethomepage.dev/widget.url: "http://crowdsec-service.crowdsec.svc.cluster.local:8080"
|
||||
gethomepage.dev/widget.username: "${homepage_username}"
|
||||
|
|
|
|||
|
|
@ -251,6 +251,14 @@ module "ingress" {
|
|||
name = "headscale"
|
||||
port = 8080
|
||||
tls_secret_name = var.tls_secret_name
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Headscale"
|
||||
"gethomepage.dev/description" = "VPN mesh network"
|
||||
"gethomepage.dev/icon" = "headscale.png"
|
||||
"gethomepage.dev/group" = "Identity & Security"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
||||
module "ingress-ui" {
|
||||
|
|
|
|||
|
|
@ -121,6 +121,14 @@ module "ingress" {
|
|||
name = "k8s-portal"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
protected = true # Require Authentik login
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "K8s Portal"
|
||||
"gethomepage.dev/description" = "Kubernetes portal"
|
||||
"gethomepage.dev/icon" = "kubernetes.png"
|
||||
"gethomepage.dev/group" = "Core Platform"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
||||
# Unprotected ingress for the setup script (needs to be curl-able without auth)
|
||||
|
|
|
|||
|
|
@ -217,4 +217,12 @@ module "ingress" {
|
|||
service_name = "roundcubemail"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
rybbit_site_id = "082f164faa7d"
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Roundcube Mail"
|
||||
"gethomepage.dev/description" = "Webmail client"
|
||||
"gethomepage.dev/icon" = "roundcube.png"
|
||||
"gethomepage.dev/group" = "Other"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,16 @@ ingress:
|
|||
annotations:
|
||||
traefik.ingress.kubernetes.io/router.middlewares: "traefik-rate-limit@kubernetescrd,traefik-csp-headers@kubernetescrd,traefik-crowdsec@kubernetescrd"
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: "websecure"
|
||||
gethomepage.dev/enabled: "true"
|
||||
gethomepage.dev/name: "Grafana"
|
||||
gethomepage.dev/description: "Dashboards & observability"
|
||||
gethomepage.dev/icon: "grafana.png"
|
||||
gethomepage.dev/group: "Core Platform"
|
||||
gethomepage.dev/pod-selector: ""
|
||||
gethomepage.dev/widget.type: "grafana"
|
||||
gethomepage.dev/widget.url: "http://monitoring-grafana.monitoring.svc.cluster.local"
|
||||
gethomepage.dev/widget.username: "admin"
|
||||
gethomepage.dev/widget.password: "${grafana_admin_password}"
|
||||
tls:
|
||||
- secretName: "tls-secret"
|
||||
hosts:
|
||||
|
|
|
|||
|
|
@ -15,6 +15,12 @@ alertmanager:
|
|||
annotations:
|
||||
traefik.ingress.kubernetes.io/router.middlewares: "traefik-rate-limit@kubernetescrd,traefik-csp-headers@kubernetescrd,traefik-crowdsec@kubernetescrd,traefik-authentik-forward-auth@kubernetescrd"
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: "websecure"
|
||||
gethomepage.dev/enabled: "true"
|
||||
gethomepage.dev/name: "Alertmanager"
|
||||
gethomepage.dev/description: "Alert routing"
|
||||
gethomepage.dev/icon: "alertmanager.png"
|
||||
gethomepage.dev/group: "Core Platform"
|
||||
gethomepage.dev/pod-selector: ""
|
||||
tls:
|
||||
- secretName: "tls-secret"
|
||||
hosts:
|
||||
|
|
@ -151,6 +157,7 @@ server:
|
|||
gethomepage.dev/description: "Prometheus"
|
||||
gethomepage.dev/icon: "prometheus.png"
|
||||
gethomepage.dev/name: "Prometheus"
|
||||
gethomepage.dev/group: "Core Platform"
|
||||
gethomepage.dev/widget.type: "prometheus"
|
||||
gethomepage.dev/widget.url: "http://prometheus-server.monitoring.svc.cluster.local:80"
|
||||
gethomepage.dev/pod-selector: ""
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ module "pfsense" {
|
|||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" : "true"
|
||||
"gethomepage.dev/description" : "Cluster Firewall"
|
||||
# gethomepage.dev/group: Media
|
||||
"gethomepage.dev/group" : "Identity & Security"
|
||||
"gethomepage.dev/icon" : "pfsense.png"
|
||||
"gethomepage.dev/name" : "pFsense"
|
||||
"gethomepage.dev/widget.type" : "pfsense"
|
||||
|
|
@ -58,6 +58,14 @@ module "nas" {
|
|||
max_body_size = "0m"
|
||||
depends_on = [kubernetes_namespace.reverse-proxy]
|
||||
rybbit_site_id = "1e11f8449f7d"
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Synology NAS"
|
||||
"gethomepage.dev/description" = "Network storage"
|
||||
"gethomepage.dev/icon" = "synology.png"
|
||||
"gethomepage.dev/group" = "Infrastructure"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
||||
# https://files.viktorbarzin.me/
|
||||
|
|
@ -72,6 +80,7 @@ module "nas-files" {
|
|||
ingress_path = ["/sharing", "/scripts", "/webman", "/wfmlogindialog.js", "/fsdownload"]
|
||||
max_body_size = "0m"
|
||||
depends_on = [kubernetes_namespace.reverse-proxy]
|
||||
extra_annotations = { "gethomepage.dev/enabled" = "false" }
|
||||
}
|
||||
|
||||
# https://idrac.viktorbarzin.me/
|
||||
|
|
@ -83,7 +92,14 @@ module "idrac" {
|
|||
tls_secret_name = var.tls_secret_name
|
||||
backend_protocol = "HTTPS"
|
||||
strip_auth_headers = true
|
||||
extra_annotations = {}
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "iDRAC"
|
||||
"gethomepage.dev/description" = "Server management"
|
||||
"gethomepage.dev/icon" = "dell.png"
|
||||
"gethomepage.dev/group" = "Infrastructure"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
depends_on = [kubernetes_namespace.reverse-proxy]
|
||||
}
|
||||
|
||||
|
|
@ -99,7 +115,7 @@ module "tp-link-gateway" {
|
|||
depends_on = [kubernetes_namespace.reverse-proxy]
|
||||
protected = true
|
||||
strip_auth_headers = true
|
||||
extra_annotations = {}
|
||||
extra_annotations = { "gethomepage.dev/enabled" = "false" }
|
||||
}
|
||||
|
||||
# https://truenas.viktorbarzin.me/
|
||||
|
|
@ -114,7 +130,7 @@ module "truenas" {
|
|||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" : "true"
|
||||
"gethomepage.dev/description" : "TrueNAS"
|
||||
# gethomepage.dev/group: Media
|
||||
"gethomepage.dev/group" : "Infrastructure"
|
||||
"gethomepage.dev/icon" : "truenas.png"
|
||||
"gethomepage.dev/name" : "TrueNAS"
|
||||
"gethomepage.dev/widget.type" : "truenas"
|
||||
|
|
@ -136,6 +152,14 @@ module "r730" {
|
|||
tls_secret_name = var.tls_secret_name
|
||||
backend_protocol = "HTTPS"
|
||||
depends_on = [kubernetes_namespace.reverse-proxy]
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "R730"
|
||||
"gethomepage.dev/description" = "Dell PowerEdge server"
|
||||
"gethomepage.dev/icon" = "dell.png"
|
||||
"gethomepage.dev/group" = "Infrastructure"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
||||
# https://proxmox.viktorbarzin.me/
|
||||
|
|
@ -149,6 +173,14 @@ module "proxmox" {
|
|||
max_body_size = "0" # unlimited
|
||||
depends_on = [kubernetes_namespace.reverse-proxy]
|
||||
rybbit_site_id = "190a7ad3e1c7"
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Proxmox"
|
||||
"gethomepage.dev/description" = "Hypervisor"
|
||||
"gethomepage.dev/icon" = "proxmox.png"
|
||||
"gethomepage.dev/group" = "Infrastructure"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
||||
# https://registry.viktorbarzin.me/
|
||||
|
|
@ -162,6 +194,12 @@ module "docker-registry-ui" {
|
|||
extra_annotations = {
|
||||
# Override middleware chain to remove rate-limit; the UI fires many API calls to list repos/tags
|
||||
"traefik.ingress.kubernetes.io/router.middlewares" = "traefik-csp-headers@kubernetescrd,traefik-crowdsec@kubernetescrd,traefik-authentik-forward-auth@kubernetescrd"
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Docker Registry"
|
||||
"gethomepage.dev/description" = "Container registry"
|
||||
"gethomepage.dev/icon" = "docker.png"
|
||||
"gethomepage.dev/group" = "Infrastructure"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -174,6 +212,7 @@ module "valchedrym" {
|
|||
port = 80
|
||||
backend_protocol = "HTTP"
|
||||
depends_on = [kubernetes_namespace.reverse-proxy]
|
||||
extra_annotations = { "gethomepage.dev/enabled" = "false" }
|
||||
}
|
||||
|
||||
# https://ip150.viktorbarzin.me/
|
||||
|
|
@ -199,6 +238,7 @@ module "mladost3" {
|
|||
port = 8080
|
||||
tls_secret_name = var.tls_secret_name
|
||||
depends_on = [kubernetes_namespace.reverse-proxy]
|
||||
extra_annotations = { "gethomepage.dev/enabled" = "false" }
|
||||
}
|
||||
|
||||
# # https://server-switch.viktorbarzin.me/
|
||||
|
|
@ -221,6 +261,14 @@ module "ha-sofia" {
|
|||
depends_on = [kubernetes_namespace.reverse-proxy]
|
||||
protected = false
|
||||
rybbit_site_id = "590fc392690a"
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Home Assistant Sofia"
|
||||
"gethomepage.dev/description" = "Smart home hub"
|
||||
"gethomepage.dev/icon" = "home-assistant.png"
|
||||
"gethomepage.dev/group" = "Smart Home"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
||||
# https://ha-london.viktorbarzin.me/
|
||||
|
|
@ -232,6 +280,14 @@ module "ha-london" {
|
|||
tls_secret_name = var.tls_secret_name
|
||||
depends_on = [kubernetes_namespace.reverse-proxy]
|
||||
protected = false
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Home Assistant London"
|
||||
"gethomepage.dev/description" = "Smart home hub"
|
||||
"gethomepage.dev/icon" = "home-assistant.png"
|
||||
"gethomepage.dev/group" = "Smart Home"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
||||
# https://london.viktorbarzin.me/
|
||||
|
|
@ -266,6 +322,7 @@ module "pi-lights" {
|
|||
tls_secret_name = var.tls_secret_name
|
||||
protected = true
|
||||
depends_on = [kubernetes_namespace.reverse-proxy]
|
||||
extra_annotations = { "gethomepage.dev/enabled" = "false" }
|
||||
}
|
||||
|
||||
# module "ups" { # .NET app doesn't work well behind host
|
||||
|
|
@ -292,4 +349,5 @@ module "mbp14" {
|
|||
tls_secret_name = var.tls_secret_name
|
||||
protected = true
|
||||
depends_on = [kubernetes_namespace.reverse-proxy]
|
||||
extra_annotations = { "gethomepage.dev/enabled" = "false" }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -291,7 +291,7 @@ module "ingress" {
|
|||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/description" = "Internal DNS Server and Recursive Resolver"
|
||||
# gethomepage.dev/group: Media
|
||||
"gethomepage.dev/group" = "Infrastructure"
|
||||
"gethomepage.dev/icon" : "technitium.png"
|
||||
"gethomepage.dev/name" = "Technitium"
|
||||
"gethomepage.dev/widget.type" = "technitium"
|
||||
|
|
|
|||
|
|
@ -267,6 +267,14 @@ module "ingress" {
|
|||
port = 8080
|
||||
tls_secret_name = var.tls_secret_name
|
||||
protected = true
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Traefik"
|
||||
"gethomepage.dev/description" = "Reverse proxy & ingress"
|
||||
"gethomepage.dev/icon" = "traefik.png"
|
||||
"gethomepage.dev/group" = "Core Platform"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
||||
# Bot-block resilience proxy: nginx reverse proxy in front of Poison Fountain
|
||||
|
|
|
|||
|
|
@ -148,7 +148,7 @@ module "ingress" {
|
|||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/description" = "Uptime monitor"
|
||||
# gethomepage.dev/group: Media
|
||||
"gethomepage.dev/group" = "Core Platform"
|
||||
"gethomepage.dev/icon" : "uptime-kuma.png"
|
||||
"gethomepage.dev/name" = "Uptime Kuma"
|
||||
"gethomepage.dev/widget.type" = "uptimekuma"
|
||||
|
|
|
|||
|
|
@ -178,4 +178,12 @@ module "ingress" {
|
|||
name = "vaultwarden"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
rybbit_site_id = "b8fc85e18683"
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Vaultwarden"
|
||||
"gethomepage.dev/description" = "Password manager"
|
||||
"gethomepage.dev/icon" = "vaultwarden.png"
|
||||
"gethomepage.dev/group" = "Other"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -84,6 +84,14 @@ module "ingress" {
|
|||
port = 80
|
||||
tls_secret_name = var.tls_secret_name
|
||||
protected = true
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Goldilocks"
|
||||
"gethomepage.dev/description" = "Resource recommendations"
|
||||
"gethomepage.dev/icon" = "goldilocks.png"
|
||||
"gethomepage.dev/group" = "Core Platform"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
|
||||
depends_on = [helm_release.goldilocks]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -108,4 +108,12 @@ module "ingress" {
|
|||
tls_secret_name = var.tls_secret_name
|
||||
|
||||
custom_content_security_policy = "default-src 'self' blob: data:; img-src 'self' data: blob:; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' blob:; worker-src 'self' blob:; connect-src 'self' blob:; frame-ancestors 'self' *.viktorbarzin.me viktorbarzin.me"
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Plotting Book"
|
||||
"gethomepage.dev/description" = "Interactive fiction"
|
||||
"gethomepage.dev/icon" = "book.png"
|
||||
"gethomepage.dev/group" = "Other"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -211,6 +211,14 @@ module "ingress" {
|
|||
skip_default_rate_limit = true
|
||||
exclude_crowdsec = true
|
||||
anti_ai_scraping = false
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Poison Fountain"
|
||||
"gethomepage.dev/description" = "AI bot trap"
|
||||
"gethomepage.dev/icon" = "shield.png"
|
||||
"gethomepage.dev/group" = "Other"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
||||
# CronJob to fetch and cache poisoned content from Poison Fountain
|
||||
|
|
|
|||
|
|
@ -118,4 +118,12 @@ module "ingress" {
|
|||
tls_secret_name = var.tls_secret_name
|
||||
rybbit_site_id = "3ae810b0476d"
|
||||
custom_content_security_policy = "script-src 'self' 'unsafe-inline' 'unsafe-eval' 'wasm-unsafe-eval' https://rybbit.viktorbarzin.me"
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "PrivateBin"
|
||||
"gethomepage.dev/description" = "Encrypted pastebin"
|
||||
"gethomepage.dev/icon" = "privatebin.png"
|
||||
"gethomepage.dev/group" = "Development & CI"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -261,6 +261,14 @@ module "ingress" {
|
|||
service_name = "realestate-crawler-ui"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
rybbit_site_id = "edee05de453d"
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Wrongmove"
|
||||
"gethomepage.dev/description" = "Property search"
|
||||
"gethomepage.dev/icon" = "home-assistant.png"
|
||||
"gethomepage.dev/group" = "Other"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
||||
module "ingress-api" {
|
||||
|
|
@ -271,6 +279,9 @@ module "ingress-api" {
|
|||
service_name = "realestate-crawler-api"
|
||||
ingress_path = ["/api"]
|
||||
tls_secret_name = var.tls_secret_name
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "false"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -295,4 +295,12 @@ module "ingress" {
|
|||
namespace = kubernetes_namespace.resume.metadata[0].name
|
||||
name = "resume"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Resume"
|
||||
"gethomepage.dev/description" = "Online resume"
|
||||
"gethomepage.dev/icon" = "resume.png"
|
||||
"gethomepage.dev/group" = "Other"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -444,6 +444,14 @@ module "ingress" {
|
|||
service_name = "rybbit-client"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
rybbit_site_id = "3c476801a777"
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Rybbit"
|
||||
"gethomepage.dev/description" = "Web analytics"
|
||||
"gethomepage.dev/icon" = "rybbit.png"
|
||||
"gethomepage.dev/group" = "Finance & Personal"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
||||
module "ingress-api" {
|
||||
|
|
@ -454,4 +462,7 @@ module "ingress-api" {
|
|||
service_name = "rybbit"
|
||||
ingress_path = ["/api"]
|
||||
tls_secret_name = var.tls_secret_name
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "false"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -138,4 +138,12 @@ module "ingress" {
|
|||
tls_secret_name = var.tls_secret_name
|
||||
port = 1443
|
||||
rybbit_site_id = "c1b8f8aa831b"
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Send"
|
||||
"gethomepage.dev/description" = "Encrypted file sharing"
|
||||
"gethomepage.dev/icon" = "firefox-send.png"
|
||||
"gethomepage.dev/group" = "Productivity"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -118,4 +118,12 @@ module "ingress" {
|
|||
name = "aiostreams"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
# protected = true
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "AIOStreams"
|
||||
"gethomepage.dev/description" = "Streaming addon manager"
|
||||
"gethomepage.dev/icon" = "stremio.png"
|
||||
"gethomepage.dev/group" = "Media & Entertainment"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,8 +67,12 @@ module "ingress" {
|
|||
name = "flaresolverr"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
protected = true
|
||||
# extra_annotations = {
|
||||
# "nginx.ingress.kubernetes.io/proxy-body-size" : "1G" // allow uploading .torrent files
|
||||
# }
|
||||
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "FlareSolverr"
|
||||
"gethomepage.dev/description" = "Captcha solver proxy"
|
||||
"gethomepage.dev/icon" = "flaresolverr.png"
|
||||
"gethomepage.dev/group" = "Media & Entertainment"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -112,4 +112,12 @@ module "ingress" {
|
|||
name = "listenarr"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
protected = true
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Listenarr"
|
||||
"gethomepage.dev/description" = "Podcast manager"
|
||||
"gethomepage.dev/icon" = "podcast.png"
|
||||
"gethomepage.dev/group" = "Media & Entertainment"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -122,4 +122,12 @@ module "ingress" {
|
|||
name = "prowlarr"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
protected = true
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Prowlarr"
|
||||
"gethomepage.dev/description" = "Indexer manager"
|
||||
"gethomepage.dev/icon" = "prowlarr.png"
|
||||
"gethomepage.dev/group" = "Media & Entertainment"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -155,4 +155,12 @@ module "ingress" {
|
|||
name = "qbittorrent"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
protected = true
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "qBittorrent"
|
||||
"gethomepage.dev/description" = "BitTorrent client"
|
||||
"gethomepage.dev/icon" = "qbittorrent.png"
|
||||
"gethomepage.dev/group" = "Media & Entertainment"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -173,4 +173,14 @@ module "ingress" {
|
|||
name = "speedtest"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
protected = true
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Speedtest"
|
||||
"gethomepage.dev/description" = "Internet speed tracker"
|
||||
"gethomepage.dev/icon" = "speedtest-tracker.png"
|
||||
"gethomepage.dev/group" = "Infrastructure"
|
||||
"gethomepage.dev/widget.type" = "speedtest"
|
||||
"gethomepage.dev/widget.url" = "https://speedtest.viktorbarzin.me"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -112,4 +112,12 @@ module "ingress" {
|
|||
name = "stirling-pdf"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
rybbit_site_id = "a55ac54ec749"
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Stirling PDF"
|
||||
"gethomepage.dev/description" = "PDF toolkit"
|
||||
"gethomepage.dev/icon" = "stirling-pdf.png"
|
||||
"gethomepage.dev/group" = "Productivity"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -199,4 +199,12 @@ module "ingress" {
|
|||
namespace = kubernetes_namespace.tandoor.metadata[0].name
|
||||
name = "tandoor"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Tandoor"
|
||||
"gethomepage.dev/description" = "Recipe manager"
|
||||
"gethomepage.dev/icon" = "tandoor.png"
|
||||
"gethomepage.dev/group" = "Productivity"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -484,4 +484,12 @@ module "ingress" {
|
|||
service_name = "trading-bot-frontend"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
protected = true
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Trading Bot"
|
||||
"gethomepage.dev/description" = "Automated trading"
|
||||
"gethomepage.dev/icon" = "alpaca.png"
|
||||
"gethomepage.dev/group" = "Finance & Personal"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -101,4 +101,12 @@ module "ingress" {
|
|||
name = "travel"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
service_name = "travel-blog"
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Travel Blog"
|
||||
"gethomepage.dev/description" = "Travel stories"
|
||||
"gethomepage.dev/icon" = "ghost.png"
|
||||
"gethomepage.dev/group" = "Other"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -120,4 +120,12 @@ module "ingress" {
|
|||
namespace = kubernetes_namespace.tuya-bridge.metadata[0].name
|
||||
name = "tuya-bridge"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Tuya Bridge"
|
||||
"gethomepage.dev/description" = "Smart device bridge"
|
||||
"gethomepage.dev/icon" = "tuya-smart.png"
|
||||
"gethomepage.dev/group" = "Smart Home"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -204,12 +204,19 @@ resource "kubernetes_service" "shlink" {
|
|||
}
|
||||
|
||||
module "ingress" {
|
||||
source = "../../modules/kubernetes/ingress_factory"
|
||||
namespace = kubernetes_namespace.shlink.metadata[0].name
|
||||
name = "url"
|
||||
service_name = "shlink"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
extra_annotations = {}
|
||||
source = "../../modules/kubernetes/ingress_factory"
|
||||
namespace = kubernetes_namespace.shlink.metadata[0].name
|
||||
name = "url"
|
||||
service_name = "shlink"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Shlink"
|
||||
"gethomepage.dev/description" = "URL shortener"
|
||||
"gethomepage.dev/icon" = "shlink.png"
|
||||
"gethomepage.dev/group" = "Productivity"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -341,4 +348,12 @@ module "ingress-web" {
|
|||
service_name = "shlink-web"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
protected = true
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "false"
|
||||
"gethomepage.dev/name" = "Shlink Web"
|
||||
"gethomepage.dev/description" = "URL shortener web client"
|
||||
"gethomepage.dev/icon" = "shlink.png"
|
||||
"gethomepage.dev/group" = "Productivity"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -151,4 +151,12 @@ module "ingress" {
|
|||
name = "wealthfolio"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
protected = true
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Wealthfolio"
|
||||
"gethomepage.dev/description" = "Investment portfolio tracker"
|
||||
"gethomepage.dev/icon" = "wealthfolio.png"
|
||||
"gethomepage.dev/group" = "Finance & Personal"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -218,4 +218,12 @@ module "ingress" {
|
|||
name = "webhook-handler"
|
||||
host = "webhook"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Webhook Handler"
|
||||
"gethomepage.dev/description" = "Webhook relay"
|
||||
"gethomepage.dev/icon" = "webhook.png"
|
||||
"gethomepage.dev/group" = "Automation"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -205,4 +205,12 @@ module "ingress" {
|
|||
name = "ci"
|
||||
service_name = "woodpecker-server"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "Woodpecker CI"
|
||||
"gethomepage.dev/description" = "CI/CD pipelines"
|
||||
"gethomepage.dev/icon" = "woodpecker-ci.png"
|
||||
"gethomepage.dev/group" = "Development & CI"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -154,6 +154,14 @@ module "ingress" {
|
|||
name = "ytdlp"
|
||||
tls_secret_name = var.tls_secret_name
|
||||
host = "yt"
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "yt-dlp"
|
||||
"gethomepage.dev/description" = "Video downloader"
|
||||
"gethomepage.dev/icon" = "youtube-dl.png"
|
||||
"gethomepage.dev/group" = "Media & Entertainment"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
||||
# ----------------------
|
||||
|
|
@ -349,4 +357,12 @@ module "highlights_ingress" {
|
|||
tls_secret_name = var.tls_secret_name
|
||||
host = "yt-highlights"
|
||||
protected = true
|
||||
extra_annotations = {
|
||||
"gethomepage.dev/enabled" = "true"
|
||||
"gethomepage.dev/name" = "YT Highlights"
|
||||
"gethomepage.dev/description" = "AI video highlights"
|
||||
"gethomepage.dev/icon" = "youtube.png"
|
||||
"gethomepage.dev/group" = "Media & Entertainment"
|
||||
"gethomepage.dev/pod-selector" = ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue