Files
k8s-apps/homer/configmaps.yaml
2026-04-07 10:24:58 +00:00

841 lines
27 KiB
YAML

apiVersion: v1
kind: ConfigMap
metadata:
name: homer-custom-css
namespace: homer
data:
custom.css: |
.dark {
--background-image: url("/assets/logos/grid.jpg");
}
.light {
--background-image: url("/assets/logos/grid.jpg");
}
#app {
background-image: var(--background-image) !important;
background-repeat: repeat !important;
background-size: 300px !important;
background-attachment: fixed !important;
}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: config
namespace: homer
data:
# file-like keys
config.yml: |
---
# Homepage configuration
# See https://fontawesome.com/v5/search for icons options
title: "Undercloud Dashboard"
subtitle: "undercloud"
logo: "/assets/logos/trioptimum-logo.png"
# icon: "fas fa-skull-crossbones" # Optional icon
header: true
#footer: '<p>Created with <span class="has-text-danger">❤️</span> with <a href="https://bulma.io/">bulma</a>, <a href="https://vuejs.org/">vuejs</a> & <a href="https://fontawesome.com/">font awesome</a> // Fork me on <a href="https://github.com/bastienwirtz/homer"><i class="fab fa-github-alt"></i></a></p>' # set false if you want to hide it.
footer: false
stylesheet:
- "assets/custom.css"
# Optional theme customization
theme: default
colors:
dark:
# accents (less neon, more controlled)
highlight-primary: "#10BB50"
highlight-secondary: "#00cc00"
highlight-hover: "#00cfa0"
# backgrounds
background: "#040608" # deeper, slightly neutral black
card-background: "#0e141a" # more contrast vs background
# TEXT (this is the important fix)
text: "#cfd6d1"
text-header: "#00cc00"
text-title: "#00cc00"
text-subtitle: "#00bb00"
# shadows
card-shadow: rgba(0, 255, 156, 0.08)
# links
link: "#00aaff"
link-hover: "#00cfa0"
# background image
background-image: "../assets/logos/grid.jpg"
light:
highlight-primary: "#00c27a"
highlight-secondary: "#007acc"
highlight-hover: "#33d699"
background: "#f5f7fa"
card-background: "#ffffff"
text: "#1a1a1a"
text-header: "#007acc"
text-title: "#111"
text-subtitle: "#555"
card-shadow: rgba(0, 0, 0, 0.1)
link: "#007acc"
link-hover: "#00c27a"
background-image: "../assets/logos/grid.jpg"
# Optional message
message:
url: https://homer.apps.undercloud.dev
style: "is-dark"
title: "Undercloud System Interface"
content: "All systems nominal.<br />Access authorized services and infrastructure modules below."
# Optional navbar
# links: [] # Allows for navbar (dark mode, layout, and search) without any links
links:
- name: "Contribute"
icon: "fab fa-github"
url: "https://github.com/bastienwirtz/homer"
target: "_blank" # optional html a tag target attribute
- name: "Wiki"
icon: "fas fa-book"
url: "https://bookstack.apps.undercloud.dev/"
# this will link to a second homer page that will load config from additional-page.yml and keep default config values as in config.yml file
# see url field and assets/additional-page.yml.dist used in this example:
#- name: "another page!"
# icon: "fas fa-file-alt"
# url: "#additional-page"
# Services
# First level array represent a group.
# Leave only a "items" key if not using group (group name, icon & tagstyle are optional, section separation will not be displayed).
services:
- name: "Core Systems"
icon: "fas fa-cloud"
items:
- name: "Code Repository"
logo: "assets/logos/gitea.png"
subtitle: "git"
tag: "gitea"
keywords: "kubernetes gitea"
url: "https://gitea.apps.undercloud.dev"
- name: "Credential Vault"
logo: "assets/logos/vaultwarden.png"
subtitle: "password manager (bitwarden)"
tag: "vaultwarden"
keywords: "vaultwarden bitwarden password"
url: "https://vaultwarden.apps.undercloud.dev"
#- name: "pihole"
# logo: "assets/logos/pihole.png"
# subtitle: "pihole admin"
# tag: "pihole"
# keywords: "pihole dns"
# url: "https://pihole.apps.undercloud.dev/admin"
#- name: "LDAP"
# logo: "assets/logos/phpldapadmin.png"
# subtitle: "phpldapadmin"
# tag: "ldap"
# keywords: "ldap phpldapadmin"
# url: "https://phpldapadmin.apps.undercloud.dev"
- name: "LDAP-Password"
logo: "assets/logos/phpldapadmin.png"
subtitle: "self-service-password"
tag: "ldap"
keywords: "ldap password self-service"
url: "https://password.apps.undercloud.dev"
- name: "Knowledge Base"
logo: "assets/logos/bookstack.png"
subtitle: "wiki"
tag: "wiki"
keywords: "bookstack wiki"
url: "https://bookstack.apps.undercloud.dev"
- name: "Data Hub"
logo: "assets/logos/nextcloud.png"
subtitle: "nextcloud"
tag: "nextcloud"
keywords: "nextcloud owncloud"
url: "https://nextcloud.apps.undercloud.dev"
- name: "Media System"
logo: "assets/logos/jellyfin.png"
subtitle: "jellyfin"
tag: "jellyfin"
keywords: "jellyfin movies music"
url: "https://jellyfin.apps.undercloud.dev"
- name: "Public Access Terminal"
logo: "assets/logos/wordpress.png"
subtitle: "wordpress"
tag: "wordpress"
keywords: "wordpress website blog"
url: "https://wordpress.apps.undercloud.dev"
- name: "Discussion Hub"
logo: "assets/logos/phpbb.png"
subtitle: "phpbb"
tag: "forum"
keywords: "forum phpbb"
url: "https://forum.apps.undercloud.dev"
- name: "Document Archive"
logo: "assets/logos/paperless.png"
subtitle: "documents"
tag: "paperless"
keywords: "paperless documents scan"
url: "https://paperless.apps.undercloud.dev"
#- name: "OpenHAB"
# logo: "assets/logos/openhab.png"
# subtitle: "home automation"
# tag: "openhab"
# keywords: "openhab home automation"
# url: "https://openhab.apps.undercloud.dev"
#- name: "Keycloak"
# logo: "assets/logos/keycloak.png"
# subtitle: "Sigle Sign On"
# tag: "keycloak"
# keywords: "single sign on sso keycloak"
# url: "https://keycloak.apps.undercloud.dev"
- name: "Emulator"
logo: "assets/logos/emulatorjs.png"
subtitle: "emulatorjs"
tag: "emulatorjs"
keywords: "emulator"
url: "https://emulator.apps.undercloud.dev"
#- name: "Emulator Backend"
# logo: "assets/logos/emulatorjs.png"
# subtitle: "backend"
# tag: "emulatorjs"
# keywords: "emulator"
# url: "https://emulator-backend.apps.undercloud.dev"
#- name: "MStream"
# logo: "assets/logos/mstream.png"
# subtitle: "music streaming"
# tag: "mstream"
# keywords: "mstream music streaming"
# url: "https://mstream.apps.undercloud.dev"
#- name: "Wekan"
# logo: "assets/logos/wekan.png"
# subtitle: "Kanban Board"
# tag: "kanban"
# keywords: "kanban"
# url: "https://kanban.apps.undercloud.dev"
- name: "Coordination"
logo: "assets/logos/doodle.png"
subtitle: "find Appointments"
tag: "polly"
keywords: "doodle polly termine appointments"
url: "https://polly.apps.undercloud.dev"
- name: "Identity Services"
logo: "assets/logos/authentik.png"
subtitle: "Authentik"
tag: "authentik"
keywords: "auth sso authentik"
url: "https://auth.apps.undercloud.dev"
- name: "Habitat Control"
logo: "assets/logos/home-assistant.png"
subtitle: "Home-Assistant"
tag: "home automation"
keywords: "home automation zigbee"
url: "https://home.apps.undercloud.dev/auth/oidc/welcome"
- name: "Surveillance"
logo: "assets/logos/frigate.png"
subtitle: "Frigate"
tag: "surveillance"
keywords: "camera surveillance"
url: "https://frigate.apps.undercloud.dev"
- name: "Task Board"
logo: "assets/logos/wekan.png"
subtitle: "Wekan"
tag: "kanban"
keywords: "kanban board"
url: "https://wekan.apps.undercloud.dev"
- name: "Document Tools"
logo: "assets/logos/stirling.png"
subtitle: "Stirling PDF"
tag: "pdf"
keywords: "pdf tools"
url: "https://pdf.apps.undercloud.dev"
- name: "Graph Engine"
logo: "assets/logos/graphviz.png"
subtitle: "GraphViz"
tag: "graph"
keywords: "graphviz diagrams"
url: "https://graphviz.apps.undercloud.dev"
- name: "Communications"
icon: "fas fa-cloud"
items:
- name: "Messaging"
subtitle: "Element (Matrix)"
logo: "assets/logos/element.png"
tag: "element"
keywords: "matrix element server"
url: "https://element.apps.undercloud.dev"
- name: "Video Conferencing"
subtitle: "Jitsi"
logo: "assets/logos/jitsi.png"
tag: "jitsi"
keywords: "jitsi video conference telephony"
url: "https://jitsi.apps.undercloud.dev"
- name: "Mail Interface"
subtitle: "Roundcube"
logo: "assets/logos/roundcube.png"
tag: "webmail"
keywords: "webmail mail"
url: "https://roundcube.apps.undercloud.dev"
- name: "Operations"
icon: "fas fa-cloud"
items:
- name: "Development Environment"
subtitle: "code-server"
logo: "assets/logos/code-server.png"
tag: "code-server"
keywords: "kubernetes code-server"
url: "https://code-server.apps.undercloud.dev"
- name: "Directory Management"
subtitle: "LDAP Account Manager"
logo: "assets/logos/lam.png"
tag: "ldap"
keywords: "ldap lam"
url: "https://lam.apps.undercloud.dev"
- name: "File Management"
subtitle: "Filebrowser"
logo: "assets/logos/filebrowser.png"
tag: "fileserver"
keywords: "filebrowser fileserver files"
url: "https://fileserver.apps.undercloud.dev"
- name: "Network Topology"
logo: "assets/logos/netbox.png"
subtitle: "IP Address Management"
tag: "netbox"
keywords: "ip address"
url: "https://netbox.apps.undercloud.dev"
- name: "Habitat Control (Local)"
subtitle: "Home Assistant"
logo: "assets/logos/home-assistant.png"
tag: "home automation"
keywords: "home automation zigbee"
url: "https://home.apps.undercloud.dev"
- name: "Compute Control Plane"
icon: "fas fa-cloud"
items:
- name: "Deployment Control"
subtitle: "ArgoCD"
logo: "assets/logos/argocd.png"
tag: "argocd"
keywords: "kubernetes argocd"
url: "https://argocd.apps.undercloud.dev"
- name: "Container Management"
subtitle: "Portainer"
logo: "assets/logos/portainer.png"
tag: "portainer"
keywords: "portainer"
url: "https://portainer.apps.undercloud.dev"
- name: "Virtualization"
subtitle: "KubeVirt"
logo: "assets/logos/kubevirt.png"
tag: "kubevirt"
keywords: "kubevirt virtual machines"
url: "kubevirt.apps.undercloud.dev"
- name: "Image Registry"
subtitle: "Harbor"
logo: "assets/logos/kubevirt.png"
tag: "harbor"
keywords: "harbor docker repository"
url: "https://docker-repo.apps.undercloud.dev"
- name: "Secrets Management"
subtitle: "OpenBao"
logo: "assets/logos/openbao.png"
tag: "openbao"
keywords: "secrets openbao"
url: "https://openbao.apps.undercloud.dev"
- name: "Communication Backend"
icon: "fas fa-cloud"
items:
- name: "Autodiscover"
logo: "assets/logos/roundcube.png"
subtitle: "Support Page"
tag: "mail"
keywords: "webmail mail"
url: "https://autodiscover.apps.undercloud.dev"
- name: "matrix"
logo: "assets/logos/matrix.png"
subtitle: "matrix server"
tag: "matrix"
keywords: "matrix synapse server"
url: "https://matrix.apps.undercloud.dev"
- name: "collabora"
logo: "assets/logos/nextcloud.png"
subtitle: "collabora server"
tag: "collabora"
keywords: "collabora office nextcloud"
url: "https://collabora.apps.undercloud.dev"
- name: "Physical Network Operations"
icon: "fas fa-cloud"
items:
- name: "Edge Router"
subtitle: "Lancom"
logo: "assets/logos/lancom.png"
tag: "app"
keywords: "lancom router"
url: "https://lancom.apps.undercloud.dev"
- name: "SophosXG"
logo: "assets/logos/sophos.png"
subtitle: "Admin Webinterface"
tag: "app"
keywords: "firewall xg admin"
url: "https://firewall-admin.apps.undercloud.dev"
#target: "_blank" # optional html a tag target attribute
- name: "SophosXG"
logo: "assets/logos/sophosvpn.png"
subtitle: "VPN Portal"
tag: "firewall xg user userportal"
url: "https://firewall-vpn.apps.undercloud.dev"
- name: "User Access Portal"
subtitle: "Sophos User Portal"
logo: "assets/logos/userportal.png"
tag: "firewall xg user userportal"
url: "https://firewall-userportal.apps.undercloud.dev"
- name: "Coreswitch"
logo: "assets/logos/mikrotik.png"
subtitle: "mikrotik main switch"
tag: "switch"
url: "http://coreswitch.apps.undercloud.dev"
- name: "Access Switch"
subtitle: "MikroTik (Heizraum)"
logo: "assets/logos/mikrotik.png"
tag: "switch"
url: "http://heitzraumswitch.apps.undercloud.dev"
- name: "Wireless Control"
subtitle: "UniFi"
logo: "assets/logos/unifi.png"
tag: "unifi"
keywords: "unifi"
url: "https://unifi.apps.undercloud.dev"
#target: "_blank" # optional html a tag target attribute
- name: "DNS Filtering"
subtitle: "Pi-hole"
logo: "assets/logos/pihole.png"
tag: "pihole dns"
keywords: "pihole"
url: "https://pihole.apps.undercloud.dev/admin"
#target: "_blank" # optional html a tag target attribute
- name: "Comms Relay"
subtitle: "Fritzbox"
logo: "assets/logos/fritzbox.png"
tag: "fritzbox"
keywords: "fritzbix telefon"
url: "https://fritzbox.apps.undercloud.dev/admin"
#target: "_blank" # optional html a tag target attribute
- name: "Backup"
icon: "fas fa-cloud"
items:
- name: "PBS"
logo: "assets/logos/proxmox.png"
subtitle: "proxmox backup server"
tag: "backup"
keywords: "pbs backup"
url: "https://pbs.apps.undercloud.dev"
#target: "_blank" # optional html a tag target attribute
- name: "Minio"
logo: "assets/logos/minio.png"
subtitle: "pbs minio"
tag: "minio"
keywords: "pbs minio"
url: "https://pbs-minio.apps.undercloud.dev"
#target: "_blank" # optional html a tag target attribute
- name: "velero"
logo: "assets/logos/velero.png"
subtitle: "velero-ui"
tag: "velero"
keywords: "backup velero kubernetes"
url: "https://velero-ui.apps.undercloud.dev"
#target: "_blank" # optional html a tag target attribute
- name: "Build-Node"
icon: "fas fa-cloud"
items:
- name: "build-Node Cockpit"
logo: "assets/logos/cockpit.png"
subtitle: "proxmox backup server"
tag: "cockpit"
keywords: "build-node cockpit"
url: "https://build-node-cockpit.apps.undercloud.dev"
#target: "_blank" # optional html a tag target attribute
#- name: "Gitea"
# logo: "assets/logos/cockpit.png"
# subtitle: "gitea"
# tag: "gitea"
# keywords: "gitea build-node"
# url: "https://build-node-gitea.apps.undercloud.dev"
# #target: "_blank" # optional html a tag target attribute
- name: "Hypervisor"
icon: "fas fa-cloud"
items:
- name: "Mainfraime Cluster"
logo: "assets/logos/proxmox.png"
subtitle: "proxmox"
tag: "hypervisor"
keywords: "hyper proxmox"
url: "https://proxmox.apps.undercloud.dev"
#target: "_blank" # optional html a tag target attribute
- name: "Remote Operations"
icon: "fas fa-cloud"
items:
#- name: "Warpgate"
# logo: "assets/logos/ssh.png"
# subtitle: "ssh gateway"
# tag: "ssh"
# keywords: "ssh warpgate gateway"
# url: "https://warpgate.apps.undercloud.dev"
#- name: "wetty"
# logo: "assets/logos/ssh.png"
# subtitle: "http ssh client"
# tag: "ssh"
# keywords: "ssh wetty gateway"
# url: "https://wetty.apps.undercloud.dev"
- name: "SSH Gateway"
subtitle: "SSHwifty"
logo: "assets/logos/ssh.png"
tag: "ssh"
keywords: "sshwifty gateway"
url: "https://sshwifty.apps.undercloud.dev"
#- name: "Bastillion"
# logo: "assets/logos/bastillion.png"
# subtitle: "http ssh client"
# tag: "ssh"
# keywords: "ssh bastillion gateway"
# url: "https://bastillion.apps.undercloud.dev"
- name: "Remote Access Platform"
subtitle: "Guacamole"
logo: "assets/logos/guacamole.png"
keywords: "ssh guacamole rdp vnc gateway"
url: "https://guacamole.apps.undercloud.dev"
- name: "System Monitoring"
icon: "fas fa-cloud"
items:
- name: "Metrics Ingestion"
subtitle: "VictoriaMetrics (vmagent)"
logo: "assets/logos/victoria.png"
tag: "prometheus"
keywords: "prometheus monitoring vmagent victoria"
url: "https://vmagent.apps.undercloud.dev/"
- name: "Visualization"
subtitle: "Grafana"
logo: "assets/logos/grafana.png"
tag: "grafana"
keywords: "grafana monitoring"
url: "https://grafana.apps.undercloud.dev"
#- name: "Alert Manager"
# logo: "assets/logos/alertmanager.png"
# subtitle: "alertmanager"
# tag: "alertmanager"
# keywords: "alertmanager monitoring"
# url: "https://alertmanager.apps.undercloud.dev"
#- name: "Kibana"
# logo: "assets/logos/kibana.png"
# subtitle: "kibana"
# tag: "kibana"
# keywords: "kibana logging monitoring"
# url: "https://kibana.apps.undercloud.dev"
- name: "Infrastructure Monitoring"
subtitle: "Checkmk"
logo: "assets/logos/checkmk.png"
tag: "checkmk"
keywords: "checkmk monitoring"
url: "https://checkmk.apps.undercloud.dev"
- name: "Uptime Monitoring"
subtitle: "Uptime Kuma"
logo: "assets/logos/uptime.png"
tag: "uptime-kuma"
keywords: "monitoring uptime kuma"
url: "https://uptime-kuma.apps.undercloud.dev"
- name: "Validation"
icon: "fas fa-cloud"
items:
- name: "Test Endpoint"
subtitle: "NGINX Demo"
logo: "assets/logos/demo.png"
tag: "nginx"
keywords: "kubernetes nginx demo"
url: "https://demo.apps.undercloud.dev"
#- name: "kuard"
# logo: "assets/logos/app.png"
# subtitle: "browser test (v6 only it seems)"
# tag: "kuard"
# keywords: "kubernetes kuard"
# url: "https://kuard.apps.undercloud.dev"
#- name: "Smokeping"
# logo: "assets/logos/smokeping.png"
# subtitle: "ping"
# tag: "smokeping"
# keywords: "ping smokeping"
# url: "https://smokeping.apps.undercloud.dev/smokeping/smokeping.cgi"
- name: "Storage Core"
icon: "fas fa-cloud"
items:
- name: "Storage Engine"
subtitle: "Ceph"
logo: "assets/logos/ceph.png"
tag: "ceph"
keywords: "storage proxmox ceph"
url: "https://ceph-dashboard.apps.undercloud.dev"
#target: "_blank" # optional html a tag target attribute
#- name: "Ceph"
# logo: "assets/logos/cockpit.png"
# subtitle: "Ceph-hyper2"
# tag: "hypervisor"
# keywords: "hyper2 proxmox ceph"
# url: "https://hyper2-ceph.apps.undercloud.dev"
# #target: "_blank" # optional html a tag target attribute
#- name: "Ceph"
# logo: "assets/logos/cockpit.png"
# subtitle: "Ceph-hyper3"
# tag: "hypervisor"
# keywords: "hyper3 proxmox ceph"
# url: "https://hyper3-ceph.apps.undercloud.dev"
# #target: "_blank" # optional html a tag target attribute
- name: "External Systems"
icon: "fas fa-cloud"
items:
- name: "Google Mail"
logo: "assets/logos/gmail.png"
subtitle: "webmail"
tag: "google"
keywords: "mail gmail google webmail"
url: "https://mail.google.com/"
- name: "Google Drive"
logo: "assets/logos/drive.png"
subtitle: "web storage by google"
tag: "google"
keywords: "google drive"
url: "https://drive.google.com/drive/my-drive"
#- name: "Freenom"
# logo: "assets/logos/freenom.png"
# subtitle: "DNS Registrar (apps.undercloud.dev)"
# tag: "dns"
# keywords: "dns regostrar"
# url: "https://www.freenom.com/"
- name: "IPv6 Gateway"
subtitle: "Tunnelbroker"
logo: "assets/logos/he.png"
keywords: "ipv6 tunnelbroker"
url: "https://tunnelbroker.net/"
- name: "DNS Provider"
subtitle: "Hurricane Electric"
logo: "assets/logos/he.png"
tag: "dns"
keywords: "he dns"
url: "https://dns.he.net/"
---
apiVersion: v1
kind: ConfigMap
metadata:
name: startup
namespace: homer
data:
startup.sh: |
#!/bin/sh
set -eu
echo "startup..."
BASE="http://gitea.gitea.svc.k8s.undercloud.local:3000"
OWNER="Undercloud"
REPO="assets"
REF="main"
OUT="/www/assets/logos"
mkdir -p "$OUT"
# Auth header (token prioritaire, sinon Basic)
if [ -n "${GITEA_TOKEN:-}" ]; then
AUTH="Authorization: token $GITEA_TOKEN"
else
: "${GITEA_USER:?GITEA_USER manquant}"
: "${GITEA_PASSWORD:?GITEA_PASSWORD manquant}"
B64="$(printf '%s' "$GITEA_USER:$GITEA_PASSWORD" | base64 | tr -d '\n')"
AUTH="Authorization: Basic $B64"
fi
files="
graphviz.png
stirling.png
frigate.png
home-assistant.png
trioptimum-logo.png
grid.jpg
alertmanager.png
app.png
argocd.png
authentik.png
bastillion.png
bgsound.jpg
bookstack.png
ceph.png
checkmk.png
cockpit.png
code-server.png
demo.png
doodle.png
drive.png
emulatorjs.png
filebrowser.png
freenom.png
fritzbox.png
funkwhale.png
gitea.png
gmail.png
grafana.png
guacamole.png
guild-logo.png
he.png
jellyfin.png
jitsi.png
keycloak.png
kibana.png
kubernetes.png
kubevirt.png
lam.png
lancom.png
matrix.png
mikrotik.png
minio.png
mstream.png
netbox.png
nextcloud.png
openbao.png
openhab.png
paperless.png
phpbb.png
phpldapadmin.png
pihole.png
portainer.png
prometheus.png
proxmox.png
roundcube.png
selfservicepw.png
smokeping.png
snappymail.png
sophos.png
sophosvpn.png
ssh.png
unifi.png
uptime.png
userportal.png
vaultwarden.png
velero.png
victoria.png
wallpaper.jpg
wekan.png
wordpress.png
"
fetch_one() {
f="$1"
# Essaye plusieurs endpoints "un par un", stop au premier succès
for URL in \
"$BASE/api/v1/repos/$OWNER/$REPO/raw/homer/$f?ref=$REF" \
"$BASE/$OWNER/$REPO/raw/branch/$REF/homer/$f" \
"$BASE/$OWNER/$REPO/src/branch/$REF/homer/$f?raw=1"
do
if wget -q -O "$OUT/$f" --header "$AUTH" "$URL"; then
[ -s "$OUT/$f" ] && return 0
fi
done
return 1
}
FAIL=0
for f in $files; do
if fetch_one "$f"; then
echo "ok: $f"
else
echo "fail: $f" >&2
FAIL=1
fi
done
[ "$FAIL" -eq 0 ] && echo "startup done." || { echo "some files failed"; exit 1; }
---