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: "guild-logo.png" # icon: "fas fa-skull-crossbones" # Optional icon header: true #footer: '

Created with ❤️ with bulma, vuejs & font awesome // Fork me on

' # set false if you want to hide it. footer: false # Optional theme customization theme: default colors: light: highlight-primary: "#3367d6" highlight-secondary: "#4285f4" highlight-hover: "#5a95f5" background: "#f5f5f5" card-background: "#ffffff" text: "#363636" text-header: "#ffffff" text-title: "#303030" text-subtitle: "#424242" card-shadow: rgba(0, 0, 0, 0.1) link: "#3273dc" link-hover: "#363636" background-image: "../assets/logos/wallpaper.jpg" dark: highlight-primary: "#3367d6" highlight-secondary: "#4285f4" highlight-hover: "#5a95f5" background: "#131313" card-background: "#2b2b2b" text: "#eaeaea" text-header: "#ffffff" text-title: "#fafafa" text-subtitle: "#f5f5f5" card-shadow: rgba(0, 0, 0, 0.4) link: "#3273dc" link-hover: "#ffdd57" background-image: "../assets/logos/wallpaper.jpg" # Optional message message: url: https://homer.apps.undercloud.dev style: "is-dark" # See https://bulma.io/documentation/components/message/#colors for styling options. title: "Welcome" #icon: "fa fa-grin" content: "Welcome to the Undercloud Dashboard.
A comprehensive link collection of all Webapps in the Undercloud Network" # 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: "Apps" icon: "fas fa-cloud" items: - name: "Gitea" logo: "assets/logos/gitea.png" subtitle: "git" tag: "gitea" keywords: "kubernetes gitea" url: "https://gitea.apps.undercloud.dev" - name: "vaultwarden" 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: "Bookstack" logo: "assets/logos/bookstack.png" subtitle: "wiki" tag: "wiki" keywords: "bookstack wiki" url: "https://bookstack.apps.undercloud.dev" - name: "Nextcloud" logo: "assets/logos/nextcloud.png" subtitle: "nextcloud" tag: "nextcloud" keywords: "nextcloud owncloud" url: "https://nextcloud.apps.undercloud.dev" - name: "Jellyfin" logo: "assets/logos/jellyfin.png" subtitle: "jellyfin" tag: "jellyfin" keywords: "jellyfin movies music" url: "https://jellyfin.apps.undercloud.dev" - name: "Website" logo: "assets/logos/wordpress.png" subtitle: "wordpress" tag: "wordpress" keywords: "wordpress website blog" url: "https://wordpress.apps.undercloud.dev" - name: "Forum" logo: "assets/logos/phpbb.png" subtitle: "phpbb" tag: "forum" keywords: "forum phpbb" url: "https://forum.apps.undercloud.dev" - name: "Paperless" 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: "Polly" logo: "assets/logos/doodle.png" subtitle: "find Appointments" tag: "polly" keywords: "doodle polly termine appointments" url: "https://polly.apps.undercloud.dev" - name: "Authentik" logo: "assets/logos/doodle.png" subtitle: "SSO" tag: "authentik" keywords: "auth sso authentik" url: "https://auth.apps.undercloud.dev" - name: "Communication" icon: "fas fa-cloud" items: - name: "element" logo: "assets/logos/element.png" subtitle: "matrix client" tag: "element" keywords: "matrix element server" url: "https://element.apps.undercloud.dev" - name: "Jitsi" logo: "assets/logos/jitsi.png" subtitle: "video conferencing" tag: "jitsi" keywords: "jitsi video conference telephony" url: "https://jitsi.apps.undercloud.dev" - name: "Roundcube" logo: "assets/logos/roundcube.png" subtitle: "webmail" tag: "webmail" keywords: "webmail mail" url: "https://roundcube.apps.undercloud.dev" - name: "Admin" icon: "fas fa-cloud" items: - name: "code-server" logo: "assets/logos/code-server.png" subtitle: "web ide" tag: "code-server" keywords: "kubernetes code-server" url: "https://code-server.apps.undercloud.dev" - name: "LDAP" logo: "assets/logos/phpldapadmin.png" subtitle: "LDAP Account Manager" tag: "ldap" keywords: "ldap lam" url: "https://lam.apps.undercloud.dev" - name: "Fileserver" logo: "assets/logos/filebrowser.png" subtitle: "filebrowser" tag: "fileserver" keywords: "filebrowser fileserver files" url: "https://fileserver.apps.undercloud.dev" - name: "Netbox" logo: "assets/logos/netbox.png" subtitle: "IP Address Management" tag: "netbox" keywords: "ip address" url: "https://netbox.apps.undercloud.dev" - name: "Kubernetes" icon: "fas fa-cloud" items: - name: "ArgoCD" logo: "assets/logos/argocd.png" subtitle: "Argocd" tag: "argocd" keywords: "kubernetes argocd" url: "https://argocd.apps.undercloud.dev" - name: "Portainer" logo: "assets/logos/portainer.png" subtitle: "portainer - kubernetes" tag: "portainer" keywords: "portainer" url: "https://portainer.apps.undercloud.dev" - name: "Kubevirt" logo: "assets/logos/kubevirt.png" subtitle: "virtual Machines" tag: "kubevirt" keywords: "kubevirt virtual machines" url: "https://kubevirt.apps.undercloud.dev" - name: "Harbor" logo: "assets/logos/kubevirt.png" subtitle: "docker Repository" tag: "harbor" keywords: "harbor docker repository" url: "https://docker-repo.apps.undercloud.dev" - name: "openbao" logo: "assets/logos/netbox.png" subtitle: "secret management" 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: "Network" icon: "fas fa-cloud" items: - name: "Lancom" logo: "assets/logos/sophos.png" subtitle: "Lancom Router" 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/userportal.png" subtitle: "VPN Portal" tag: "firewall xg user userportal" url: "https://firewall-vpn.apps.undercloud.dev" - name: "SophosXG" logo: "assets/logos/userportal.png" subtitle: "Userportal" 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: "Heitzraumswitch" logo: "assets/logos/mikrotik.png" subtitle: "mikrotik main switch" tag: "switch" url: "http://heitzraumswitch.apps.undercloud.dev" - name: "Unifi" logo: "assets/logos/unifi.png" subtitle: "Unifi" tag: "unifi" keywords: "unifi" url: "https://unifi.apps.undercloud.dev" #target: "_blank" # optional html a tag target attribute - name: "Pihole" logo: "assets/logos/pihole.png" subtitle: "pihole" tag: "pihole dns" keywords: "pihole" url: "https://pihole.apps.undercloud.dev/admin" #target: "_blank" # optional html a tag target attribute - name: "Fritzbox" logo: "assets/logos/unifi.png" subtitle: "Fritzbox" 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/cockpit.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/cockpit.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/cockpit.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: "hyper1" logo: "assets/logos/cockpit.png" subtitle: "proxmox" tag: "hypervisor" keywords: "hyper1 proxmox" url: "https://hyper1.apps.undercloud.dev" #target: "_blank" # optional html a tag target attribute - name: "Ceph" logo: "assets/logos/cockpit.png" subtitle: "Ceph-hyper1" tag: "hypervisor" keywords: "hyper1 proxmox ceph" url: "https://hyper1-ceph.apps.undercloud.dev" #target: "_blank" # optional html a tag target attribute - name: "hyper2" logo: "assets/logos/cockpit.png" subtitle: "proxmox" tag: "hypervisor" keywords: "hyper2 proxmox" url: "https://hyper2.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: "hyper3" logo: "assets/logos/cockpit.png" subtitle: "proxmox" tag: "hypervisor" keywords: "hyper3 proxmox" url: "https://hyper3.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: "pbs" logo: "assets/logos/cockpit.png" subtitle: "proxmox" tag: "hypervisor" keywords: "pbs proxmox" url: "https://pbs.apps.undercloud.dev" #target: "_blank" # optional html a tag target attribute - name: "Remote" 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: "sshwifty" logo: "assets/logos/ssh.png" subtitle: "http ssh client" 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: "Guacamole" logo: "assets/logos/guacamole.png" subtitle: "RDP, VNC, SSH" tag: "guacamole" keywords: "ssh guacamole rdp vnc gateway" url: "https://guacamole.apps.undercloud.dev" - name: "Monitoring" icon: "fas fa-cloud" items: - name: "VMAgent" logo: "assets/logos/prometheus.png" subtitle: "prometheus" tag: "prometheus" keywords: "prometheus monitoring vmagent victoria" url: "https://vmagent.apps.undercloud.dev/" - name: "Grafana" logo: "assets/logos/grafana.png" subtitle: "grafana" 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: "checkmk" logo: "assets/logos/netbox.png" subtitle: "IP Address Management" tag: "checkmk" keywords: "checkmk monitoring" url: "https://checkmk.apps.undercloud.dev" - name: "uptime-kuma" logo: "assets/logos/netbox.png" subtitle: "monitoring" tag: "uptime-kuma" keywords: "monitoring uptime kuma" url: "https://uptime-kuma.apps.undercloud.dev" - name: "Test" icon: "fas fa-cloud" items: - name: "Demo" logo: "assets/logos/demo.png" subtitle: "test ngnix" 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" icon: "fas fa-cloud" items: - name: "Ceph" logo: "assets/logos/cockpit.png" subtitle: "Ceph-Dashboard" 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 Links" 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: "Tunnelbroker" logo: "assets/logos/he.png" subtitle: "6in4 Tunnel from Hurricane Electric" tag: "tunnelbroker" keywords: "ipv6 tunnelbroker" url: "https://tunnelbroker.net/" - name: "Hurricane Electric DNS" logo: "assets/logos/he.png" subtitle: "free DNS Service" 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=" alertmanager.png app.png argocd.png bgsound.jpg ceph.png cockpit.png code-server.png demo.png drive.png freenom.png gitea.png gmail.png grafana.png he.png kubernetes.png lancom.png mikrotik.png phpldapadmin.png pihole.png portainer.png prometheus.png roundcube.png snappymail.png ssh.png unifi.png userportal.png vaultwarden.png kibana.png guacamole.png bastillion.png sophos.png bookstack.png nextcloud.png funkwhale.png filebrowser.png jellyfin.png wordpress.png phpbb.png matrix.png element.png jitsi.png openhab.png paperless.png netbox.png keycloak.png emulatorjs.png smokeping.png mstream.png kubevirt.png doodle.png wekan.png minio.png wallpaper.jpg guild-logo.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; } ---