Skip to content

Installation

To deploy the 5N Dashboard, you’ll need to complete these steps:

  • Configure an OIDC application for the 5N Dashboard UI.
  • Install the software into your Kubernetes cluster using our public Helm chart.
  • Expose the deployment via an ingress.
  • (Upcoming) To enable database backups, provide your database address and S3 credentials.

Setup

5N Dashboard is ideally deployed in the same cluster where your validator runs.

Configure an OIDC application for the 5N Dashboard UI.

Follow the steps for setting up either an auth0 or an External OIDC Provider. Specifically, create a new application similar to the wallet/cns and call it 5N Dashboard UI. Once this has been created, take note of your app URL, its client id and audience.

Example, with Auth0, the value looks like this

  • OIDC Authentication App URL: https://<tenand-id>.<region>.auth0.com.
  • Client id: <some-id>@clients
  • Audience: the audience of your app

You can usually reuse the same setup and URL configuration as your wallet UI app, but specify a different client ID or audience if needed.

Install the software into your Kubernetes cluster using our public Helm chart.

Once you have the above values, deploy the latest version using Helm:

helm upgrade --install 5n-dashboard \
    oci://ghcr.io/fivenorth-io/helm/5n-dashboard \
    -n <namespace> \
    --version <version> \
    --set auth.url=<auth-app-url> --set auth.clientId=<client-id> --set auth.audience=<audience>

To find the latest version, visit the release note

Expose the deployment via an ingress.

The dashboard uses a single deployment for both UI and backend to simplify routing.

Here’s an example NGINX ingress:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: dashboard-ingress
  namespace: <name-space>
  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: "128M"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
spec:
  tls:
  - hosts:
    - host-name-to-access-the-dashboard
  - secretName: <secret-name-for-cert-of-our-ingress>
  ingressClassName: nginx
  rules:
  - host: host-name
    http:
      paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: fivenorth-dashboard
              port:
                number: 8080

If your DAR files are small and you usually won't bundle with multi upload, you can adjust the annotations to a reasonable number to match your expectation.

If your setup has TLS termination outside the cluster(such as at AWS/ALB load balancer, and the request just pass plaintext HTTP into the ingress service), your can simplify ingress to just

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: dashboard-ingress
  namespace: <name-space>
  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: "128M"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
spec:
  ingressClassName: nginx
  rules:
  - host: host-name
    http:
      paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: fivenorth-dashboard
              port:
                number: 8080

Access the dashboard

Once deployed, log in using a user whose primary party matches your validator operator party. This is typically the same user you use to access your validator wallet.

Upgrade to a new version

To upgrade to a new version simply re-run the helm command with the right version

helm upgrade --install 5n-dashboard \
    oci://ghcr.io/fivenorth-io/helm/5n-dashboard \
    -n <namespace> \
    --version <new-version> \
    --set auth.url=<auth-app-url> --set auth.clientId=<client-id> --set auth.audience=<audience>