Skip to content

Startpunkt is a clean start page designed to display links to all your self-hosted resources in your kubernetes cluster. It automatically detects running services in the cluster and adds them to the start page, while offering customization using labels and CRDs.

License

Notifications You must be signed in to change notification settings

ullbergm/startpunkt

 
 

Repository files navigation

Startpunkt

Startpunkt is a clean start page designed to display links to all your self-hosted resources in your kubernetes cluster.

Startpunkt

Current Version Last commit License MIT Link checker
Security Rating Reliability Rating Maintainability Rating
Code Smells Test Coverage
buy me a coffee offer me a job

Report a Bug · Request a Feature · Ask a Question

Startpunkt

Table of Contents

🎯 Features

  • 🔐 Local execution. Everything is executed locally on your cluster.
  • Automatic. Services are automatically added / removed as they are deployed to the cluster.
  • 🗂️ Service Groups. Group services by namespace or custom groups.
  • 🏷️ Bookmarks. Create a list of bookmarks using CRDs.
  • 👌 GitOps Ready. Manage the services and bookmarks using CRDs and the rest of the application is configured with YAML.
  • Integrated. Supports displaying services defined in
    • Startpunkt annotations/CRDs
    • Kubernetes Ingress
    • OpenShift Routes
    • Hajimari CRDs
    • Istio VirtualServices.
  • 🚀 Fast. Using Quarkus natively compiled binaries makes them really fast.
  • 🌎 Internationalized. Supports multiple languages.
  • 🎨 Themes. Supports themes.

🚀 Getting started

Kubernetes

The kubectl yaml needed is included in the repo.

NOTE: This will deploy to the 'default' namespace.

JVM based containers (supports amd64 and arm64)

kubectl apply -f https://raw.githubusercontent.com/ullbergm/startpunkt/main/deploy/kubernetes/startpunkt-jvm.yaml

Native containers (supports amd64)

kubectl apply -f https://raw.githubusercontent.com/ullbergm/startpunkt/main/deploy/kubernetes/startpunkt-native.yaml

OpenShift

The openshift yaml needed is included in the repo.

NOTE: This will deploy to the 'default' namespace.

JVM based containers (supports amd64 and arm64)

oc apply -f https://raw.githubusercontent.com/ullbergm/startpunkt/main/deploy/openshift/startpunkt-jvm.yaml

Native containers (supports amd64)

oc apply -f https://raw.githubusercontent.com/ullbergm/startpunkt/main/deploy/openshift/startpunkt-native.yaml

⚙️ Configuration

✍️ Application settings

If you want to update the default configuration, mount a file in /work/config/application.yaml with your desired configuration:

startpunkt:
  # Default protocol for links if not specified in the resource
  defaultProtocol: "http"

  # Default language for the web UI
  defaultLanguage: "en-US"

  # Namespace selector determines which namespaces to look for resources in
  namespaceSelector:
    any: true  # If true, look for resources in all namespaces
    # matchNames:  # Uncomment and specify namespace names to limit the search to specific namespaces
    #   - default
    #   - startpunkt

  # Kubernetes integration, read ingress resources
  ingress:
    enabled: false  # If true, enable the reading of ingress resources
    onlyAnnotated: true  # Only consider resources with the annotation 'startpunkt.ullberg.us/enabled: "true"'

  # OpenShift integration, read OpenShift Routes
  openshift:
    enabled: false  # If true, enable the reading of OpenShift Route resources
    onlyAnnotated: true  # Only consider resources with the annotation 'startpunkt.ullberg.us/enabled: "true"'

  # Hajimari integration, read Hajimari Applications and Bookmarks
  hajimari:
    enabled: false  # If true, enable the reading of Hajimari Applications and Bookmarks

  # Istio Virtual Service integration, read Istio VirtualService resources
  istio:
    virtualservice:
      enabled: false  # If true, enable the reading of Hajimari Applications and Bookmarks
      onlyAnnotated: true  # Only consider resources with the annotation 'startpunkt.ullberg.us/enabled: "true"'

  # Web ui configuration
  web:
    title: "Startpunkt"  # Title of the web UI
    githubLink:
      enabled: true  # If true, enable the GitHub link in the web UI
    checkForUpdates: true  # If true, check for updates and show a notification in the web UI
    theme:
      light:
        bodyBgColor: "#F8F6F1"
        bodyColor: "#696969"
        emphasisColor: "#000000"
        textPrimaryColor: "#4C432E"
        textAccentColor: "#AA9A73"
      dark:
        bodyBgColor: "#232530"
        bodyColor: "#696969"
        emphasisColor: "#FAB795"
        textPrimaryColor: "#FAB795"
        textAccentColor: "#E95678"

📝 Custom applications

To add applications, that are either outside of the cluster or are using an ingress method that is not supported (yet), you can use the CRDs:

apiVersion: startpunkt.ullberg.us/v1alpha1
kind: Application
metadata:
  name: nas
  namespace: default
spec:
  name: Synology
  group: Infrastructure
  icon: nas
  url: http://nas:5000/
  info: Storage

🗒️ Annotations

You can use annotations to customize how the applications you have are displayed in Startpunkt.

The annotations can go on Ingresses or OpenShift Routes.

Annotation Description Required
startpunkt.ullberg.us/enabled Add this with value true if you want the application to show up in Startpunk No
startpunkt.ullberg.us/icon Icon/Image URL of the application. Icons can come from material design, etc. No
startpunkt.ullberg.us/iconColor Color to display the icon in. No
startpunkt.ullberg.us/name A custom name for your application. Use if you don’t want to use the name of the ingress/route No
startpunkt.ullberg.us/url A URL for the application. This will override the ingress URL. No
startpunkt.ullberg.us/targetBlank Determines if links should open in new tabs/windows. No
startpunkt.ullberg.us/info A short description of the application. No
startpunkt.ullberg.us/protocol Protocol to use for links if not known. No

NOTE: There is compatibility built in to process Hajimari and Forecastle annotations as well.

👌 Built With

Quarkus provides a way to compile the java code to native binaries, making the container really small and quick to start up.

It also provides several libraries that simplify the development immensely.

  • Rest client
  • Kubernetes client
  • Caching
  • Health checks
  • Prometheus monitoring
  • Deploying a static website builder in the same application

🗂️ Roadmap

See the open issues for a list of proposed features (and known issues).

🏷️ Support

Reach out to the maintainer at one of the following places:

🚀 Project assistance

If you want to say thank you or/and support active development of Startpunkt:

🗂️ Contributing

First off, thanks for taking the time to contribute! Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make will benefit everybody else and are greatly appreciated.

Please read our contribution guidelines, and thank you for being involved!

🏆 Authors & contributors

The original setup of this repository is by Magnus Ullberg.

For a full list of all authors and contributors, see the contributors page.

🗂️ Security

Startpunkt follows good practices of security, but 100% security cannot be assured. Startpunkt is provided "as is" without any warranty. Use at your own risk.

For more information and to report security issues, please refer to our security documentation.

📄 License

This project is licensed under the MIT License.

See LICENSE for more information.

🌎 Acknowledgements

About

Startpunkt is a clean start page designed to display links to all your self-hosted resources in your kubernetes cluster. It automatically detects running services in the cluster and adds them to the start page, while offering customization using labels and CRDs.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages