Skip to content
/ Horus Public

Horus is a customizable browser startpage/dashboard with Kubernetes application discovery and Uptime Kuma integration

License

Notifications You must be signed in to change notification settings

Y0ngg4n/Horus

Repository files navigation

Horus

Horus is a Hajimari similar startpage designed to be the entrypoint for your self-hosted Kubernetes cluster. It can scan all your Ingress to provide them via the page and does even support sub-pages. Thanks to Hajimari for the great inspiration!

Screenshots

Screenshot1 Screenshot2

Features

  • Dynamically list apps discovered from Kubernetes ingresses
  • Display replica status for ingress endpoints
  • Support for non-Kubernetes apps via custom apps config
  • Customizable list of bookmarks
  • Change colors
  • Add subpages so you show applications only on specific paths

Installation

Kubernetes

Currently, I did not have the time to provide a helm chart. But i have put a default deployment vie Kustomize in the deployment/kustomization folder. You can also just apply all files one by on via kubectl apply -f FILENAME. Just make sure you keep the same order as in the deployment/kustomization/kustomization.yaml file.

To update the container to the latest image, just delete the pod, and it will pull the latest. Currently, I did not have the time to provide proper versioning.

Docker

You can also just use the Docker image. This will work fine, but you have to provide all apps via customApps. Also just ignore the ingress errors.

Usage

Ingresses

Horus looks for specific annotations on ingresses.

Add the following annotations to your ingresses in order for it to be discovered by Horus:

Annotation Description Required
horus/enabled Add this with value true to the ingress of the app you want to show true
horus/name A custom name for your application. Use if you don't want to use the name of the ingress false
horus/group A custom group name. Use if you want the application to show in a different group than the namespace it is running in false
horus/description A short description of the app false
horus/uptime-kuma Your App ID in Uptime Kuma. If not provided it will disable showing the status. false
horus/icon-url Icon URL, if not provided Favicon is used (if online it will show an offline icon) false
horus/url A URL for the app (This will override the ingress URL). It MUST begin with a scheme i.e., http:// or https:// false
horus/target-blank Determines if links should open in new tabs/windows false
horus/sub-pages A comma-seperated list of subPages. This is helpful to show applications only on subPages. E.g. if you set sub-pages to "foo,bar", this app will only gets displayed if you go on https://example.com/foo and https://example.com/bar false

Config

Hajimari supports the following configuration options that can be modified by either ConfigMap or values.yaml if you are using Helm

Field Description Default Type
greeting Your Greeting String "Welcome, Searcher!" string
title Browser title for this Hajimari instance "Horus" string
backgroundColor Hex Color to use as background "#232530" string
primaryColor Hex Color to use as primary color "#232530" string
accentColor Hex Color to use as accent color "#232530" string
onlineColor Hex Color to use as offline status color "#232530" string
offlineColor Hex Color to use as online status color "#232530" string
showGreeting Toggle showing the greeting true bool
showSearch Toggle showing the search true bool
showAppGroups Toggle grouping apps by group (namespaces) true bool
showAppUrls Toggle displaying app URLs true bool
showAppDescription Toggle showing app description false bool
showAppStatus Toggle showing app Uptime Kuma status true bool
showGlobalBookmarks Toggle showing global bookmarks on custom startpages false bool
alwaysTargetBlank Set to true to open apps/bookmarks in a new window by default false bool
uptimeKumaPollSeconds Seconds schedule to poll Uptime Kuma 30 int
ingressPollSeconds Seconds schedule to poll Ingress 60 int
excludeIngress A list on ingress names to exclude [] string[]
customApps A list of custom apps to add to the discovered apps [] []AppGroup
globalBookmarks A list of bookmark groups to add [] []BookmarkGroup
ingress Settings for Ingress selection [] []IngressSettings
uptime-kuma Settings for Uptime Kuma [] []UptimeKumaSettings

IngressSettings

It is a selector for selecting namespaces either selecting all namespaces or a list of namespaces

Field Description Default Type
disable Disable ingress scanning. Use this if you only want to use customApps false bool
any Boolean describing whether all namespaces are selected in contrast to a list restricting them true bool
anyEnabled Boolean describing whether all ingress are enabled and showed (only if subPages is not defined) true bool
namespaces List of namespace names null []string

UptimeKumaSettings

This are the Setting for connection with Uptime Kuma.

Field Description Default Type
disabled Disable Uptime Kuma scanning false bool
url The URL of your Uptime Kuma instance "" string
username The Uptime Kuma username "" string
password The Uptime Kuma password "" string

AppGroup

If you want to add any apps that are not exposed through ingresses or are external to the cluster, you can use the custom apps feature. You can pass a list of custom apps inside the config.

Field Description Type
group Name of the group (namespace) String
apps A list of custom apps []App
App

Custom apps can be added by configuring a list of apps under an app group.

Field Description Type
name Name of the custom app (Required) String
icon Icon name or URL for the custom app String
url URL of the custom app String
description Short description of the custom app String
targetBlank Open app in a new window/tab Bool
uptimeKuma The Uptime Kuma ID String
subPages A comma-seperated list of sub-pages. This is helpful to show applications only on sub-pages. E.g. if you set sub-pages to "foo,bar", this app will only gets displayed if you go on https://example.com/foo and https://example.com/bar. If you want to show it on sub-pages and also on the / page you can add the sub-page "default" to the comma-seperated list. String

BookmarkGroup

Bookmark groups can be added by creating a list of groups and associated bookmarks.

Field Description Type
group Name of the bookmark group String
bookmarks Array of bookmarks []Bookmark

Bookmarks can be added by configuring a list of bookmarks under a group.

Bookmark
Field Description Type
name Name of the bookmark (Required) String
icon Icon name or URL for the bookmark String
url URL of the bookmark (Required) String
targetBlank Open bookmark in a new window/tab Bool
subPages A comma-seperated list of sub-pages. This is helpful to show applications only on sub-pages. E.g. if you set sub-pages to "foo,bar", this app will only gets displayed if you go on https://example.com/foo and https://example.com/bar. If you want to show it on sub-pages and also on the / page you can add the sub-page "default" to the comma-seperated list. String

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

About

Why Horus?

I wanted to choose a name that starts with an H to credit Hajimari´s work.

Thank you / dependencies

About

Horus is a customizable browser startpage/dashboard with Kubernetes application discovery and Uptime Kuma integration

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published