Homepage is a application dashboard for homeservers with Docker and Kubernetes integration to detect the health of deployments and automatically discover apps.
Homepage can be deployed to Kubernetes with the Dan6erbond/homepage/kubernetes
Terraform module, with documentation that can be found on Gitea.
The module will automatically create a ServiceAccount with ClusterRole bindings allowing Homepage to discover pods and configures Homepage to use the cluster
mode for its Kubernetes integration.
Use the module by importing it in your Terraform configuration:
module "homepage" {
source = "Dan6erbond/homepage/kubernetes"
version = "1.0.0"
namespace = "homepage"
volumes = [
{
name = "ssd"
persistent_volume_claim = local.homepage_ssd_pvc
mount_path = "/mnt/ssd"
read_only = false
},
{
name = "media"
host_path = {
path = "/mnt/media"
}
mount_path = "/mnt/media"
}
]
ingress_annotations = {
"traefik.ingress.kubernetes.io/router.entrypoints" = "websecure"
"traefik.ingress.kubernetes.io/router.tls.certresolver" = "letsencrypt"
}
services_config = [
{ Admin = [
{ Grafana = {
icon = "grafana.png"
href = "https://grafana.ravianand.me"
namespace = "monitoring"
app = "grafana"
} },
}
]
widgets_config = [
{
resources = {
label = "System"
cpu = true
memory = true
disk = "/mnt/ssd"
}
},
{
resources = {
label = "Media"
disk = "/mnt/media"
}
},
{
datetime = {
text_size = "xl"
format = {
timeStyle = "short"
hour12 = false
}
}
}
]
settings = {
title = "Dan6erbond Homelab"
background = "https://images.unsplash.com/photo-1579567761406-4684ee0c75b6?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=987&q=80"
backgroundOpacity = "0.15"
theme = "dark"
layout = {
Media = {
icon = "mdi-filmstrip"
style = "row"
columns = 4
}
}
}
}
This example configures Homepage with additional volume mounts to display storage of external drives, settings to customize the layout, and adds widgets including Kubernetes integration.
For more details on configuring Homepage, see their docs.