Skip to Content
Self-HostingOpenShiftInstallation

Installation

Last updated: May 26, 2026


1. Requirements

xltrail can be installed on an OpenShift cluster via Helm chart. You’ll need the following prerequisites:

  • OpenShift cluster
  • oc , the OpenShift CLI
  • Helm , the Kubernetes package manager

This tutorial covers the installation of xltrail into your OpenShift cluster.

This guide does not cover setting up routes or ingress options.

2. Install xltrail

2.1 Namespace

Create a namespace for xltrail. We’ll be using xltrail throughout these instructions, but you may want to call it differently, e.g., xltrail-prod etc.

oc create namespace xltrail

Since the remaining commands will have to be run in this namespace, the easiest way is to set your current context to this namespace:

oc config set-context --current --namespace=xltrail

Confirm that the namespace has been correctly set:

oc config view --minify | grep namespace:

Instead of changing the current context, you could also add the --namespace=xltrail or -n=xltrail argument to the commands.

2.2 Secrets

Run the following commands to create the required secrets.

  • Docker Registry (make sure to replace both <USERNAME> and <PASSWORD> with the actual values provided by email)

    oc create secret docker-registry xltrail-registry-credentials --docker-server=registry.gitlab.com --docker-username=<USERNAME> --docker-password=<PASSWORD>

    You also need to link the image pull secret (xltrail-registry-credentials) to the default service account in the xltrail namespace. This is necessary so that OpenShift can use the secret to authenticate when pulling the images during pod creation.

    oc secrets link default xltrail-registry-credentials --for=pull
  • Secret Key

    oc create secret generic xltrail-secret-key --from-literal=SECRET_KEY=$(head -c 512 /dev/urandom | LC_ALL=C tr -cd 'a-zA-Z0-9' | head -c 64)
  • Postgres

    oc create secret generic xltrail-postgresql-password --from-literal=POSTGRES_PASSWORD=$(head -c 512 /dev/urandom | LC_ALL=C tr -cd 'a-zA-Z0-9' | head -c 64)

    In case you’re using an externally hosted PostgreSQL instance, provide the password instead of generating a random one.

  • Minio

    oc create secret generic xltrail-minio-secret-key --from-literal=MINIO_SECRET_KEY=$(head -c 512 /dev/urandom | LC_ALL=C tr -cd 'a-zA-Z0-9' | head -c 64)
  • LDAP (optional)
    If you intend to use LDAP for authentication, set the Bind Password here.

    oc create secret generic xltrail-ldap-bind-password --from-literal=LDAP_BIND_PASSWORD=<PASSWORD>
  • SMTP Password (optional)
    If you intend to use an SMTP server to send password reset emails, set the SMTP Password here.

    oc create secret generic xltrail-smtp-password --from-literal=SMTP_PASSWORD=<PASSWORD>

You should back up the generated secrets, so you can move them to a new cluster if you have to. For example, if you want to retrieve the password of the Postgres user, you could do:

oc get secret xltrail-postgresql-password -ojsonpath='{.data.POSTGRES_PASSWORD}' | base64 --decode ; echo

3. Install xltrail

With secrets created and values.yaml configured (see Configuration), install xltrail with the following Helm commands:

helm repo add xltrail https://xltrail.com/charts helm repo update helm upgrade --install xltrail xltrail/xltrail -f values.yaml --version=<VERSION>

Note that the installation will take a couple of minutes. Confirm that all pods show their status as Running by running the following command.

oc get pods
Last updated on