White-label the dashboard
Replace the Omnia name, logo, colours and fonts in the dashboard with your own brand.
Prerequisites
Section titled “Prerequisites”enterprise.enabled=truein your Helm values.- Either no licence (dev mode, which grants every entitlement) or a licence with the
whiteLabelentitlement. Without the entitlement the dashboard ignores the brand and shows the Omnia defaults. See Install a licence. - Your logo and favicon as SVG files, hosted at an HTTPS URL or ready to mount in the logo section.
Set the brand
Section titled “Set the brand”-
Add
dashboard.brandingto a values file.productNameis required: the chart emits no branding without it.enterprise:enabled: truedashboard:branding:productName: "Acme Cloud"logoDarkUrl: "https://assets.acme.example/acme-dark.svg"faviconUrl: "https://assets.acme.example/acme-favicon.svg"colors:primary: "#EA580C"primaryAction: "#F59E0B"accent: "#DC2626"sidebar: "#7C2D12"textHeading: "#FFF7ED"fonts:family: "Poppins"mono: "JetBrains Mono"url: "https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;700&display=swap"links:sales: "sales@acme.example"upgradeUrl: "https://acme.example/enterprise"The values above are illustrative. Dashboard branding reference lists every key
colorsaccepts, including the Atlas aliases such astextHeading. -
Upgrade the release. management-api, which serves the brand to the browser, restarts when the branding values change. Reload an open dashboard tab to see the new brand.
Terminal window helm upgrade omnia oci://ghcr.io/altairalabs/charts/omnia --devel \--namespace omnia-system --reuse-values -f brand.yaml
Set dark-mode surfaces
Section titled “Set dark-mode surfaces”Values in colors apply in both themes. A surface that must differ by theme goes in
colorsDark, which wins in the dark theme. The default theme is dark.
dashboard: branding: colors: primary: "#EA580C" background: "#FFF7ED" card: "#FFFFFF" foreground: "#431407" colorsDark: background: "#1A120B" card: "#251A11" foreground: "#FFF7ED" mutedForeground: "#FDBA74" border: "rgba(253, 186, 116, 0.14)"Accent colours (primary, category1 to category8, chart1 to chart5) usually
read well in both themes, so set them once in colors.
Serve logos from the dashboard (mount via Helm)
Section titled “Serve logos from the dashboard (mount via Helm)”Skip this section if your logos are hosted at an HTTPS URL.
logoDarkUrl and faviconUrl accept a path served by the dashboard. The dashboard
serves /usr/share/nginx/html/ at the site root, so a file at
/usr/share/nginx/html/brand/logo-dark.svg is served at /brand/logo-dark.svg.
-
Put the assets in a ConfigMap in the release namespace.
Terminal window kubectl create configmap dashboard-logos -n omnia-system \--from-file=logo-dark.svg=./acme-dark.svg \--from-file=favicon.svg=./acme-favicon.svg -
Mount each file under
/usr/share/nginx/html/brand/and point the branding values at those paths.dashboard:branding:productName: "Acme Cloud"logoDarkUrl: "/brand/logo-dark.svg"faviconUrl: "/brand/favicon.svg"extraVolumes:- name: brand-logosconfigMap:name: dashboard-logosextraVolumeMounts:- name: brand-logosmountPath: /usr/share/nginx/html/brand/logo-dark.svgsubPath: logo-dark.svgreadOnly: true- name: brand-logosmountPath: /usr/share/nginx/html/brand/favicon.svgsubPath: favicon.svgreadOnly: truepodOverrides.extraVolumesandpodOverrides.extraVolumeMountsappend to the same lists.
The licence gate applies to mounted files too. Mounting a file over the built-in
/logo-omnia.svg to bypass the gate is a licence violation. Keep custom assets on a
distinct path such as /brand/.
Load a custom font
Section titled “Load a custom font”fonts.url must be a CSS stylesheet URL, such as a Google Fonts href, not a font
file. The default Content-Security-Policy allows fonts.googleapis.com and
fonts.gstatic.com. For another host, set OMNIA_CSP_POLICY on the dashboard. It
replaces the whole default policy, so copy every directive you still need. If the
font fails to load, the interface falls back to the system sans-serif stack.
Set the link-preview card
Section titled “Set the link-preview card”A link to the dashboard pasted into Slack, Teams or LinkedIn unfurls into a card,
/og-image.png. The dashboard is built once for every install, so the card it ships
carries the Omnia brand, and so does the page title a scraper reads: it runs no
JavaScript, so it never sees your brand. Point /og-image.png at your own card, a
1200x630 PNG at an HTTPS URL:
dashboard: branding: ogImageUrl: "https://assets.acme.example/acme-card.png"The dashboard answers /og-image.png with a redirect to it. Set dashboard.baseUrl
too, so the card’s URL in the page names your public address rather than the one each
request arrived on.
Verify
Section titled “Verify”-
Forward the dashboard and read the resolved brand.
Terminal window kubectl port-forward -n omnia-system svc/omnia-dashboard 3000:3000curl -s http://localhost:3000/api/v1/configThe
brand.productNamefield in the JSON is your product name. It isOmniawhen the licence lackswhiteLabelor the chart emitted no branding. -
Open
http://localhost:3000. The sidebar shows your product name and logo, and the browser tab reads<productName> Dashboardonce the page has loaded its configuration.
To preview a brand without a cluster, run the dashboard in dev or demo mode and use
Brand preset (dev) in the More actions menu, or open /dev/theme. See
Preview controls.
Troubleshooting
Section titled “Troubleshooting”The dashboard still shows Omnia
Section titled “The dashboard still shows Omnia”Check three conditions: enterprise.enabled is true, dashboard.branding.productName
is set, and the licence carries whiteLabel. Run
kubectl describe configmap omnia-dashboard -n omnia-system and confirm
NEXT_PUBLIC_BRAND_PRODUCT_NAME is present.
One colour does not change
Section titled “One colour does not change”colors ignores keys it does not recognise, so a typo costs that one colour. Use the
camelCase keys from the colour keys table,
not CSS variable names. No key sets --destructive.
The logo does not load
Section titled “The logo does not load”An http: image URL is blocked by the default Content-Security-Policy. Use an HTTPS URL
or a mounted path.
Related pages
Section titled “Related pages”- Dashboard branding reference: Helm values, environment variables, colour keys, Atlas aliases and precedence.
- Install a licence
- Licensing
- Helm values reference