Skip to main content

Frontend customization

Integration using JWT​

Integration with JWT can be used if you are white-labeling the UI and wish to integrate CCX with your service panel. JWT allows a way to authenticate users from your service panel in CCX. Read more in the JWT Authentication guide.

Theming and white-labeling​

Colours, the logo and the favicon can be changed without modifying the application. Read more in the Theming and white-labeling guide.

Environment Variables​

A number of variables is used to control the frontend. The enviroment variables are set under ccx.services.uiapp in the values.yaml for ccx.

- name: FE_REACT_APP_FAVICON_URL
value: app favicon path
- name: FE_REACT_APP_LOGO_URL
value: app logo path
- name: FE_VPC_DISABLED
value: hide VPCs entirely (sidebar entry, the VPCs page, and the create-VPC option in the deployment wizard)
- name: FE_ONBOARDING_DISABLED
value: disable the onboarding hints and welcome flow
- name: FE_USER_MENU_DISABLED
value: control visibility of the menu on the top right of the page
- name: FE_HIDE_CLOUD_PROVIDER
value: hide the cloud provider selector in the deployment wizard (single-cloud mode). It no longer affects the footer; use FE_HIDE_FOOTER for that
- name: FE_HIDE_FOOTER
value: hide the footer
# Migration note: the previous UI hid the footer with FE_HIDE_CLOUD_PROVIDER. Set FE_HIDE_FOOTER=true as well if you relied on that.
- name: FE_EULA
value: require EULA acceptance in the deployment wizard (link from FE_EULA_URL)
- name: FE_HIDE_HEADER
value: hide the header bar across the app (the sidebar remains for navigation)
- name: FE_HIDE_BREADCRUMBS
value: hide breadcrumbs
- name: FE_HIDE_FEEDBACK
value: hide feedback button at the bottom left of the page
- name: FE_USE_PRIVATE_IPS
value: show private IPs instead of public ones in connection details and node cards
- name: FE_WRONG_GLOBAL_REDIRECT_URL
value: used to specify url which users are not allowed to access directly in case we are using iframe
- name: FE_GLOBAL_REDIRECT_URL
value: used to specify where to send users whenever they try to access FE_WRONG_GLOBAL_REDIRECT_URL directly
- name: FE_AUTH_REDIRECT_URL
value: used to specify where to send users who get a 401 response on any API call, if not specified then they are sent to the default FE_AUTH_APP_URL
- name: FE_AUTH_APP_URL
value: URL where unauthorized users can login or sign up.
- name: FE_AUTH_UI_APP_DISABLED
value: "true" # set it to true if you don't want to use the built-in `ccx-ui-auth` app. FE_AUTH_APP_URL *must* be set for this in order to work.
- name: FE_EXTERNAL_CSS_URL
value: "https://example.com/my.css" # stylesheet loaded at runtime to re-brand the UI. See the Theming and white-labeling guide for the supported theme tokens.

Examples​

The environment variables are set under ccx.services.uiapp.env. The examples below use placeholder domains.

Branding​

Replace the default logo and favicon, and load your own stylesheet:

ccx:
services:
uiapp:
env:
FE_REACT_APP_LOGO_URL: "https://cdn.example.com/brand/logo.svg"
FE_REACT_APP_FAVICON_URL: "https://cdn.example.com/brand/favicon.ico"
FE_EXTERNAL_CSS_URL: "https://cdn.example.com/brand/ccx.css"

Single-cloud white-label installation​

A branded installation on one cloud, with VPCs, onboarding and the feedback button hidden, and login handled outside the built-in ccx-ui-auth app:

ccx:
services:
uiapp:
env:
FE_REACT_APP_LOGO_URL: "https://cdn.example.com/brand/logo.svg"
FE_REACT_APP_FAVICON_URL: "https://cdn.example.com/brand/favicon.ico"
FE_HIDE_CLOUD_PROVIDER: "true"
FE_VPC_DISABLED: "true"
FE_ONBOARDING_DISABLED: "true"
FE_HIDE_FEEDBACK: "true"
FE_AUTH_UI_APP_DISABLED: "true"
FE_AUTH_APP_URL: "/auth/?from=ccx"

Embedded in a service portal​

CCX runs inside an iframe in your own portal. The portal provides navigation, login and the user menu, so CCX hides its own. Users who open CCX directly at https://ccx.example.com are sent back to the portal. FE_WRONG_GLOBAL_REDIRECT_URL and FE_GLOBAL_REDIRECT_URL only take effect when both are set.

ccx:
services:
uiapp:
env:
FE_REACT_APP_LOGO_URL: "https://cdn.example.com/brand/logo.svg"
FE_REACT_APP_FAVICON_URL: "https://cdn.example.com/brand/favicon.ico"
FE_HIDE_HEADER: "true"
FE_HIDE_FOOTER: "true"
FE_HIDE_BREADCRUMBS: "true"
FE_USER_MENU_DISABLED: "true"
FE_HIDE_CLOUD_PROVIDER: "true"
FE_HIDE_FEEDBACK: "true"
FE_ONBOARDING_DISABLED: "true"
FE_VPC_DISABLED: "true"
FE_USE_PRIVATE_IPS: "true"
FE_EULA: "true"
FE_EULA_URL: "https://portal.example.com/eula"
FE_AUTH_REDIRECT_URL: "https://portal.example.com/"
FE_WRONG_GLOBAL_REDIRECT_URL: "https://ccx.example.com"
FE_GLOBAL_REDIRECT_URL: "https://portal.example.com/"