[ci skip] add widgets for qbittorrent, navidrome, nextcloud, freshrss, linkwarden, uptime-kuma

Add API credentials to SOPS and wire homepage_credentials through
stacks. Re-add Uptime Kuma widget with new "infra" status page slug.
This commit is contained in:
Viktor Barzin 2026-03-07 19:03:06 +00:00
parent f9efa902ef
commit 2ebbf364d1
No known key found for this signature in database
GPG key ID: 0EB088298288D958
8 changed files with 289 additions and 222 deletions

File diff suppressed because one or more lines are too long

View file

@ -3,6 +3,10 @@ variable "tls_secret_name" {
sensitive = true
}
variable "nfs_server" { type = string }
variable "homepage_credentials" {
type = map(any)
sensitive = true
}
module "tls_secret" {
@ -148,11 +152,15 @@ module "ingress" {
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" = ""
"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" = ""
"gethomepage.dev/widget.type" = "freshrss"
"gethomepage.dev/widget.url" = "http://freshrss.freshrss.svc.cluster.local"
"gethomepage.dev/widget.username" = var.homepage_credentials["freshrss"]["username"]
"gethomepage.dev/widget.password" = var.homepage_credentials["freshrss"]["password"]
}
}

View file

@ -12,6 +12,10 @@ variable "linkwarden_authentik_client_secret" {
sensitive = true
}
variable "postgresql_host" { type = string }
variable "homepage_credentials" {
type = map(any)
sensitive = true
}
resource "kubernetes_namespace" "linkwarden" {
@ -148,5 +152,8 @@ module "ingress" {
"gethomepage.dev/icon" = "linkwarden.png"
"gethomepage.dev/group" = "Productivity"
"gethomepage.dev/pod-selector" = ""
"gethomepage.dev/widget.type" = "linkwarden"
"gethomepage.dev/widget.url" = "http://linkwarden.linkwarden.svc.cluster.local:3000"
"gethomepage.dev/widget.key" = var.homepage_credentials["linkwarden"]["api_key"]
}
}

View file

@ -3,6 +3,10 @@ variable "tls_secret_name" {
sensitive = true
}
variable "nfs_server" { type = string }
variable "homepage_credentials" {
type = map(any)
sensitive = true
}
resource "kubernetes_namespace" "navidrome" {
@ -159,5 +163,10 @@ module "ingress" {
"gethomepage.dev/icon" = "navidrome.png"
"gethomepage.dev/group" = "Media & Entertainment"
"gethomepage.dev/pod-selector" = ""
"gethomepage.dev/widget.type" = "navidrome"
"gethomepage.dev/widget.url" = "http://navidrome.navidrome.svc.cluster.local:4533"
"gethomepage.dev/widget.user" = var.homepage_credentials["navidrome"]["user"]
"gethomepage.dev/widget.token" = var.homepage_credentials["navidrome"]["token"]
"gethomepage.dev/widget.salt" = var.homepage_credentials["navidrome"]["salt"]
}
}

View file

@ -9,6 +9,10 @@ variable "nextcloud_db_password" {
variable "nfs_server" { type = string }
variable "redis_host" { type = string }
variable "mysql_host" { type = string }
variable "homepage_credentials" {
type = map(any)
sensitive = true
}
module "tls_secret" {
@ -191,12 +195,16 @@ module "ingress" {
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" = ""
"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" = ""
"gethomepage.dev/widget.type" = "nextcloud"
"gethomepage.dev/widget.url" = "http://nextcloud.nextcloud.svc.cluster.local"
"gethomepage.dev/widget.username" = var.homepage_credentials["nextcloud"]["username"]
"gethomepage.dev/widget.password" = var.homepage_credentials["nextcloud"]["password"]
}
}

View file

@ -152,6 +152,9 @@ module "ingress" {
"gethomepage.dev/icon" : "uptime-kuma.png"
"gethomepage.dev/name" = "Uptime Kuma"
"gethomepage.dev/pod-selector" = ""
"gethomepage.dev/widget.type" = "uptimekuma"
"gethomepage.dev/widget.url" = "http://uptime-kuma.uptime-kuma.svc.cluster.local:3001"
"gethomepage.dev/widget.slug" = "infra"
}
rybbit_site_id = "8fef77b1f7fe"
}

View file

@ -41,10 +41,11 @@ module "prowlarr" {
}
module "qbittorrent" {
source = "./qbittorrent"
tls_secret_name = var.tls_secret_name
tier = local.tiers.aux
nfs_server = var.nfs_server
source = "./qbittorrent"
tls_secret_name = var.tls_secret_name
tier = local.tiers.aux
nfs_server = var.nfs_server
homepage_credentials = var.homepage_credentials
}
module "flaresolverr" {

View file

@ -1,6 +1,10 @@
variable "tls_secret_name" {}
variable "tier" { type = string }
variable "nfs_server" { type = string }
variable "homepage_credentials" {
type = map(any)
sensitive = true
}
module "nfs_data" {
@ -156,11 +160,15 @@ module "ingress" {
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" = ""
"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" = ""
"gethomepage.dev/widget.type" = "qbittorrent"
"gethomepage.dev/widget.url" = "http://qbittorrent.servarr.svc.cluster.local:8080"
"gethomepage.dev/widget.username" = var.homepage_credentials["qbittorrent"]["username"]
"gethomepage.dev/widget.password" = var.homepage_credentials["qbittorrent"]["password"]
}
}