blob: db82242d6f9806a30462b5496fdfbeef68bd6ee2 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Advanced configuration options for the Che server component :: Eclipse Che Documentation</title>
<link rel="canonical" href="https://www.eclipse.org/che/docs/che-7/installation-guide/advanced-configuration-options-for-the-che-server-component/">
<meta name="keywords" content="installation-guide, advanced-configuration-options-for-the-che-server-component">
<meta name="generator" content="Antora 2.3.4">
<link rel="stylesheet" href="../../../_/css/site.css">
<link rel="stylesheet" href="../../../_/css/extra.css">
<link rel="stylesheet" href="../../../_/font-awesome-4.7.0/css/font-awesome.min.css">
<link rel="icon" href="../../../favicon.ico" type="image/x-icon">
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-37306001-2"></script>
<script>function gtag(){dataLayer.push(arguments)};window.dataLayer=window.dataLayer||[];gtag('js',new Date());gtag('config','UA-37306001-2')</script>
<script>var uiRootPath = '../../../_'</script>
</head>
<body class="article">
<header class="header" role="banner">
<nav class="navbar">
<div class="navbar-brand">
<div class="navbar-item">
<button class="navbar-burger" data-target="topbar-nav">
<span></span>
<span></span>
<span></span>
</button>
<img src="../../../_/img/icon-eclipse-che.svg" class="navbar-logo" alt="Eclipse Che logo">
<a href="https://www.eclipse.org/che/docs">Eclipse Che Documentation</a>
</div>
</div>
<div id="topbar-nav" class="navbar-menu">
<div class="navbar-end">
<div class="navbar-item hide-for-print">
<script async src="https://cse.google.com/cse.js?cx=002898025167115630151:gnr5edrg2eo"></script>
<div class="gcse-searchbox" enableAutoComplete="true"></div>
</div>
<a class="navbar-item" href="#">Home</a>
<a class="navbar-item" href="https://che.eclipse.org/">Blog</a>
<a class="navbar-item" href="https://github.com/eclipse/che">Source Code</a>
</div>
</div>
</nav>
<div class="gcse-searchresults"></div>
</header>
<div class="body">
<div class="nav-container" data-component="che-7" data-version="master">
<aside class="nav">
<div class="panels">
<div class="nav-panel-menu is-active" data-panel="menu">
<nav class="nav-menu">
<h3 class="title"><a href="../../overview/introduction-to-eclipse-che/">Documentation</a></h3>
<ul class="nav-list">
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../overview/introduction-to-eclipse-che/">Introduction to Che</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../overview/che-architecture/">Che architecture</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../hosted-che/hosted-che/">Eclipse Che hosted by Red Hat</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<button class="nav-item-toggle"></button>
<span class="nav-text">End-user Guide</span>
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../end-user-guide/navigating-che/">Navigating Che</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/navigating-che-using-the-dashboard/">Navigating Che: dashboard</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/importing-certificates-to-browsers/">Importing certificates to browsers</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/accessing-che-from-openshift-developer-perspective/">Navigating Che from OpenShift Developer Perspective</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../end-user-guide/che-theia-ide-basics/">Che-Theia IDE basics</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/defining-custom-commands-for-che-theia/">Defining custom commands for Che-Theia</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/version-control/">Version Control</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/che-theia-troubleshooting/">Che-Theia Troubleshooting</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/differences-in-how-che-theia-webview-works-on-a-single-host-mode-comparing-to-a-multi-host-mode/">Differences in how Che-Theia Webview works on a single-host mode comparing to a multi-host mode</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../end-user-guide/workspaces-overview/">Using developer workspaces</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/creating-a-workspace-from-code-sample/">Creating a workspace from code sample</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/creating-a-workspace-from-remote-devfile/">Creating a workspace from a remote devfile using the dashboard</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/creating-a-workspace-from-local-devfile-using-chectl/">Creating a workspace from local devfile using chectl</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/creating-a-workspace-by-importing-the-source-code-of-a-project/">Creating a workspace by importing the source code of a project</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/configuring-a-workspace-with-dashboard/">Configuring a workspace</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/configuring-a-workspace-using-a-devfile/">Configuring a workspace using a devfile</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/running-a-workspace-with-dashboard/">Running a workspace</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/importing-kubernetes-applications-into-a-workspace/">Importing Kubernetes applications into a workspace</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/remotely-accessing-workspaces/">Remotely accessing workspaces</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/mounting-a-secret-as-a-file-or-an-environment-variable-into-a-workspace-container/">Mounting a secret as a file or an environment variable into a workspace container</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/authentication-against-bitbucket-server-with-the-personal-access-token/">Authentication against Bitbucket Server with the personal access token</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../end-user-guide/customizing-developer-environments/">Customizing developer environments</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/what-is-a-che-theia-plug-in/">What is a Che-Theia plug-in</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/adding-a-vs-code-extension-to-a-workspace/">Adding a VS Code extension</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/publishing-metadata-for-a-vs-code-extension/">Publishing a VS Code extension</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/testing-a-visual-studio-code-extension-in-che/">Testing a VS Code extension in Che</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../end-user-guide/using-alternative-ides-in-che/">Using alternative IDEs in Che</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../end-user-guide/support-for-jetbrains-ides/">JetBrains IDEs</a>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../end-user-guide/using-jetbrains-intellij-idea-community-edition/">Using IntelliJ Idea Community Edition</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../end-user-guide/using-jetbrains-intellij-idea-ultimate-edition/">Using IntelliJ Idea Ultimate Edition</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../end-user-guide/using-jetbrains-webstorm/">Using WebStorm</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../end-user-guide/provisioning-jetbrains-activation-code-for-offline-use/">Provisioning activation code for offline use</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/adding-tools-to-che-after-creating-a-workspace/">Adding tools to Che after creating a workspace</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../end-user-guide/using-artifact-repositories-in-a-restricted-environment/">Using artifact repositories in a restricted environment</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/using-maven-artifact-repositories/">Using Maven artifact repositories</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/using-gradle-artifact-repositories/">Using Gradle artifact repositories</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/using-python-artifact-repositories/">Using Python artifact repositories</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/using-go-artifact-repositories/">Using Go artifact repositories</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/using-nuget-artifact-repositories/">Using NuGet artifact repositories</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/using-npm-artifact-repositories/">Using npm artifact repositories</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../end-user-guide/troubleshooting-che/">Troubleshooting Che</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/viewing-che-workspaces-logs/">Viewing Che workspaces logs</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/investigating-failures-at-a-workspace-start-using-the-verbose-mode/">Troubleshooting workspace start failures</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/troubleshooting-slow-workspaces/">Troubleshooting slow workspaces</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/troubleshooting-network-problems/">Troubleshooting network problems</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<button class="nav-item-toggle"></button>
<span class="nav-text">Installation Guide</span>
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../supported-platforms/">Supported platforms</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../configuring-the-che-installation/">Configuring the Che installation</a>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../installing-che/">Installing Che</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../installing-che-in-cloud/">Installing Che in cloud</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../installing-che-on-openshift-4-using-operatorhub/">Installing Che on OpenShift 4 using OperatorHub</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../installing-che-on-openshift-4-using-cli/">Installing Che on OpenShift 4 using CLI</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../installing-che-on-openshift-3-using-the-operator/">Installing Che on OpenShift 3</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../installing-che-on-kubespray/">Installing Che on Kubespray</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../installing-che-on-aws/">Installing Che on AWS</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../installing-che-on-google-cloud-platform/">Installing Che on Google Cloud</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../installing-che-on-microsoft-azure/">Installing Che on Microsoft Azure</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../installing-che-locally/">Installing Che locally</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../installing-che-on-codeready-containers/">Installing Che on CodeReady Containers</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../installing-che-on-docker-desktop/">Installing Che on Docker Desktop</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../installing-che-on-minikube/">Installing Che on Minikube</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../installing-che-on-minishift/">Installing Che on Minishift</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../installing-che-on-kind/">Installing Che on Kind</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../using-the-chectl-management-tool/">Using the chectl management tool</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../installing-che-in-a-restricted-environment/">Installing Che in restricted environment</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../advanced-configuration/">Advanced configuration</a>
<ul class="nav-list">
<li class="nav-item is-current-page" data-depth="2">
<a class="nav-link" href="./">Advanced configuration options for Che server</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../configuring-namespace-strategies/">Configuring namespace strategies</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../configuring-storage-strategies/">Configuring storage strategies</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../configuring-storage-types/">Configuring storage types</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../running-more-than-one-workspace-at-a-time/">Running more than one workspace at a time</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../configuring-workspace-exposure-strategies/">Configuring workspace exposure strategies</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../configuring-workspaces-nodeselector/">Configuring workspaces nodeSelector</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../configuring-che-hostname/">Configuring Che hostname</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../configuring-labels-for-ingresses/">Configuring labels for Kubernetes Ingress</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../configuring-labels-for-routes/">Configuring labels for OpenShift Route</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../deploying-che-with-support-for-git-repositories-with-self-signed-certificates/">Deploying Che with support for Git repositories with self-signed certificates</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../installing-che-using-storage-classes/">Installing Che using storage classes</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../importing-untrusted-tls-certificates/">Importing untrusted TLS certificates to Che</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../switching-between-external-and-internal-communication/">Switching between external and internal ways in inter-component communication</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../setting-up-the-keycloak-che-username-readonly-theme-for-the-eclipse-che-login-page/">Setting up the Keycloak che-username-readonly theme for the Eclipse Che login page</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../mounting-a-secret-as-a-file-or-an-environment-variable-into-a-container/">Mounting a secret as a file or an environment variable into a Eclipse&#160;Che container</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../upgrading-che/">Upgrading Che</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../upgrading-che-using-operatorhub/">Upgrading Che using OperatorHub</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../upgrading-che-using-the-cli-management-tool/">Upgrading Che using the CLI management tool</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../upgrading-che-using-the-cli-management-tool-in-restricted-environment/">Upgrading Che in restricted environment</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../uninstalling-che/">Uninstalling Che</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../uninstalling-che-after-operatorhub-installation-using-openshift-web-console/">Using the OpenShift web console</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../uninstalling-che-after-operatorhub-installation-using-openshift-cli/">Using OpenShift CLI</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../uninstalling-che-after-chectl-installation/">Using chectl</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<button class="nav-item-toggle"></button>
<span class="nav-text">Administration Guide</span>
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../administration-guide/che-architecture-overview/">Che architecture</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/che-workspace-controller/">Che workspace controller</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/che-workspaces-architecture/">Che workspaces architecture</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../administration-guide/calculating-che-resource-requirements/">Calculating Che resource requirements</a>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../administration-guide/customizing-the-registries/">Customizing the registries</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/building-custom-registry-images/">Building custom registry images</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/running-custom-registries/">Running custom registries</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../administration-guide/retrieving-che-logs/">Retrieving Che logs</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/configuring-server-logging/">Configuring server logging</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/viewing-kubernetes-events/">Accessing Kubernetes events on OpenShift</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/viewing-operator-events/">Viewing the Operator events on OpenShift</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/viewing-che-server-logs/">Viewing Che server logs</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/viewing-external-service-logs/">Viewing external service logs</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/viewing-plug-in-broker-logs/">Viewing Plug-in broker logs</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/collecting-logs-using-chectl/">Collecting logs using chectl</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../administration-guide/monitoring-che/">Monitoring Che</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../administration-guide/tracing-che/">Tracing Che</a>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../administration-guide/backup-and-disaster-recovery/">Backup and disaster recovery</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/external-database-setup/">External database setup</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/persistent-volumes-backups/">Persistent Volumes backups</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../administration-guide/caching-images-for-faster-workspace-start/">Caching images for faster workspace start</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/defining-the-list-of-images-to-pull/">Defining the list of images</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/defining-the-memory-parameters-for-the-image-puller/">Defining the memory settings</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/installing-image-puller-on-kubernetes-using-the-operator/">Installing using the Operator</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/installing-image-puller-on-openshift-using-operatorhub/">Installing on OpenShift 4</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/installing-image-puller-on-openshift-using-openshift-templates/">Installing on OpenShift 3</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/installing-image-puller-on-kubernetes-using-helm/">Installing using Helm</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../administration-guide/managing-identities-and-authorizations/">Managing identities and authorizations</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/authenticating-users/">Authenticating users</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/authorizing-users/">Authorizing users</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/configuring-authorization/">Configuring authorization</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/configuring-openshift-oauth/">Configuring OpenShift OAuth</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/removing-user-data/">Removing user data</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<button class="nav-item-toggle"></button>
<span class="nav-text">Contributor Guide</span>
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../contributor-guide/branding-che-theia/">Branding Che-Theia</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../contributor-guide/developing-che-theia-plug-ins/">Developing Che-Theia plug-ins</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../contributor-guide/testing-che-theia-plug-ins/">Testing Che-Theia plug-ins</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../contributor-guide/publishing-che-theia-plug-ins/">Publishing Che-Theia plug-ins</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../contributor-guide/adding-support-for-a-new-language/">Adding support for a new language</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../contributor-guide/adding-support-for-a-new-debugger/">Adding support for a new debugger</a>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../contributor-guide/che-extensibility-reference/">Che extensibility reference</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../contributor-guide/che-extension-points/">Che extension points</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../contributor-guide/che-theia-plug-in-api/">Che-Theia plug-in API</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../contributor-guide/debug-adapter-protocol/">Debug Adapter Protocol</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../contributor-guide/language-server-protocol/">Language Server Protocol</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<button class="nav-item-toggle"></button>
<span class="nav-text">Extensions</span>
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../extensions/eclipse-che4z/">Eclipse Che4z</a>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../extensions/openshift-connector-overview/">OpenShift Connector</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../extensions/features-of-openshift-connector/">Features of OpenShift Connector</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../extensions/installing-openshift-connector-in-che/">Installing OpenShift Connector in Eclipse Che</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../extensions/authenticating-with-openshift-connector-from-che/">Authenticating with OpenShift Connector from Eclipse Che</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../extensions/creating-components-with-openshift-connector-in-che/">Creating Components with OpenShift Connector in Eclipse Che</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../extensions/connecting-source-code-from-github-to-a-openshift-component-using-openshift-connector/">Connecting source code from GitHub to a OpenShift Component</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../extensions/telemetry/">Telemetry</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../extensions/creating-a-telemetry-plugin/">Creating A Telemetry Plugin</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../extensions/the-woopra-telemetry-plugin/">The Woopra Telemetry Plugin</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../glossary/che-glossary/">Che glossary</a>
</li>
</ul>
</li>
</ul>
</nav>
</div>
<div class="nav-panel-explore" data-panel="explore">
<div class="context">
<span class="title">Documentation</span>
<span class="version">master</span>
</div>
<ul class="components">
<li class="component is-current">
<a class="title" href="../../overview/introduction-to-eclipse-che/">Documentation</a>
<ul class="versions">
<li class="version is-current is-latest">
<a href="../../overview/introduction-to-eclipse-che/">master</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
</aside>
</div>
<main class="article">
<div class="toolbar" role="navigation">
<button class="nav-toggle"></button>
<a href="../../overview/introduction-to-eclipse-che/" class="home-link"></a>
<nav class="breadcrumbs" aria-label="breadcrumbs">
<ul>
<li><a href="../../overview/introduction-to-eclipse-che/">Documentation</a></li>
<li>Installation Guide</li>
<li><a href="../advanced-configuration/">Advanced configuration</a></li>
<li><a href="./">Advanced configuration options for Che server</a></li>
</ul>
</nav>
<div class="edit-this-page"><a href="https://github.com/eclipse/che-docs/edit/master/modules/installation-guide/pages/advanced-configuration-options-for-the-che-server-component.adoc">Edit this Page</a></div>
</div>
<div class="content">
<aside class="toc sidebar" data-title="Contents" data-levels="2">
<div class="toc-menu"></div>
</aside>
<article class="doc">
<h1 class="page">Advanced configuration options for the Che server component</h1>
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>The following section describes advanced deployment and configuration methods for the Che server component.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="understanding-che-server-advanced-configuration-using-the-operator_che"><a class="anchor" href="#understanding-che-server-advanced-configuration-using-the-operator_che"></a>Understanding Che server advanced configuration using the Operator</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The following section describes the Che server component advanced configuration method for a deployment using the Operator.</p>
</div>
<div class="paragraph">
<p>Advanced configuration is necessary to:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Add environment variables not automatically generated by the Operator from the standard <code>CheCluster</code> Custom Resource fields.</p>
</li>
<li>
<p>Override the properties automatically generated by the Operator from the standard <code>CheCluster</code> Custom Resource fields.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>The <code>customCheProperties</code> field, part of the <code>CheCluster</code> Custom Resource <code>server</code> settings, contains a
map of additional environment variables to apply to the Che server component.</p>
</div>
<div class="exampleblock">
<div class="title">Example 1. Override the default memory limit for workspaces</div>
<div class="content">
<div class="ulist">
<ul>
<li>
<p>Add the <code>CHE_WORKSPACE_DEFAULT__MEMORY__LIMIT__MB</code> property to <code>customCheProperties</code>:</p>
</li>
</ul>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-yaml hljs" data-lang="yaml">apiVersion: org.eclipse.che/v1
kind: CheCluster
# [...]
spec:
server:
# [...]
customCheProperties:
CHE_WORKSPACE_DEFAULT__MEMORY__LIMIT__MB: "2048"
# [...]</code></pre>
</div>
</div>
</div>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="paragraph">
<p>Previous versions of the Che Operator had a configMap named <code>custom</code> to fulfill this role. If the Che Operator finds a <code>configMap</code> with the name <code>custom</code>, it adds the data it contains into the <code>customCheProperties</code> field, redeploys Che, and deletes the <code>custom</code> <code>configMap</code>.</p>
</div>
</td>
</tr>
</table>
</div>
<div class="ulist">
<div class="title">Additional resources</div>
<ul>
<li>
<p>For the list of all parameters available in the <code>CheCluster</code> Custom Resource, see <a href="../configuring-the-che-installation/" class="page">Configuring the Che installation</a>.</p>
</li>
<li>
<p>For the list of all parameters available to configure <code>customCheProperties</code>, see <a href="#che-server-component-system-properties-reference_che">Che server component system properties reference</a>.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="understanding-che-server-advanced-configuration-not-using-the-operator_che"><a class="anchor" href="#understanding-che-server-advanced-configuration-not-using-the-operator_che"></a>Understanding Che server advanced configuration not using the Operator</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The following section describes Che server component advanced configuration method when the installation method is not using the Operator.</p>
</div>
<div class="paragraph">
<p>The user configures Che manually by modifying the <code>configMap</code> object.</p>
</div>
<div class="olist arabic">
<div class="title">Procedure</div>
<ol class="arabic">
<li>
<p>Proceed to the installation to generate the <code>che</code> <code>configMap</code> object.</p>
</li>
<li>
<p>Edit the <code>che</code> <code>configMap</code> template.</p>
</li>
<li>
<p>Apply manual changes to the <code>custom</code> <code>configMap</code> without downtime using the following `kubectl ` command:</p>
<div class="listingblock">
<div class="content">
<pre>$ kubectl rollout restart deployment/che</pre>
</div>
</div>
</li>
</ol>
</div>
<div class="ulist">
<div class="title">Additional resources</div>
<ul>
<li>
<p><a href="https://docs.openshift.com/container-platform/latest/builds/setting-up-trusted-ca.html">Understanding <code>configMaps</code></a></p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="che-server-component-system-properties-reference_che"><a class="anchor" href="#che-server-component-system-properties-reference_che"></a>Che server component system properties reference</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The following document describes all possible configuration properties of the Che server component.</p>
</div>
<div class="sect2">
<h3 id="LChe-server"><a class="anchor" href="#LChe-server"></a>Che server</h3>
<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 1. Che server</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Environment Variable Name</th>
<th class="tableblock halign-left valign-top">Default value</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_DATABASE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>${che.home}/storage</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Folder where Che stores internal data objects.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_API</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>http://${CHE_HOST}:${CHE_PORT}/api</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">API service. Browsers initiate REST communications to Che server with this URL.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_API_INTERNAL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>http://${CHE_HOST}:${CHE_PORT}/api</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">API service internal network url. Back-end services should initiate REST communications to Che server with this URL</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WEBSOCKET_ENDPOINT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>ws://${CHE_HOST}:${CHE_PORT}/api/websocket</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Che websocket major endpoint. Provides basic communication endpoint for major websocket interactions and messaging.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_PROJECTS_STORAGE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>/projects</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Your projects are synchronized from the Che server into the machine running each workspace. This is the directory in the machine where your projects are placed.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_PROJECTS_STORAGE_DEFAULT_SIZE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>1Gi</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Used when Kubernetes or OpenShift-type components in a devfile request project PVC creation (Applied in case of 'unique' and 'per workspace' PVC strategy. In case of the 'common' PVC strategy, it is rewritten with the value of the <code>che.infra.kubernetes.pvc.quantity</code> property.)</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_LOGS_ROOT__DIR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>/workspace_logs</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines the directory inside the machine where all the workspace logs are placed. Provide this value into the machine, for example, as an environment variable. This is to ensure that agent developers can use this directory to back up agent logs.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_HTTP__PROXY</code></p></td>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Configures proxies used by runtimes powering workspaces.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_HTTPS__PROXY</code></p></td>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Configuresproxies used by runtimes powering workspaces.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_NO__PROXY</code></p></td>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Configuresproxiesused by runtimes powering workspaces.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_AUTO__START</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>true</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">By default, when users access a workspace with its URL, the workspace automatically starts (if currently stopped). Set this to <code>false</code> to disable this behavior.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_POOL_TYPE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>fixed</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Workspace threads pool configuration. This pool is used for workspace-related operations that require asynchronous execution, for example, starting and stopping. Possible values are <code>fixed</code> and <code>cached</code>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_POOL_EXACT__SIZE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>30</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">This property is ignored when pool type is different from <code>fixed</code>. It configures the exact size of the pool. When set, the <code>multiplier</code> property is ignored. If this property is not set (<code>0</code>, <code>&lt;0</code>, <code>NULL</code>), then the pool size equals the number of cores. See also <code>che.workspace.pool.cores_multiplier</code>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_POOL_CORES__MULTIPLIER</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>2</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">This property is ignored when pool type is not set to <code>fixed</code>, <code>che.workspace.pool.exact_size</code> is set. When set, the pool size is <code>N_CORES * multiplier</code>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_PROBE__POOL__SIZE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>10</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">This property specifies how many threads to use for workspace server liveness probes.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_HTTP__PROXY__JAVA__OPTIONS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">HTTP proxy setting for workspace JVM.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_JAVA__OPTIONS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>-XX:MaxRAM=150m-XX:MaxRAMFraction=2 -XX:+UseParallelGC -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xms20m -Djava.security.egd=file:/dev/./urandom</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Java command-line options added to JVMs running in workspaces.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_MAVEN__OPTIONS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>-XX:MaxRAM=150m-XX:MaxRAMFraction=2 -XX:+UseParallelGC -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xms20m -Djava.security.egd=file:/dev/./urandom</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Maven command-line options added to JVMs running agents in workspaces.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_DEFAULT__MEMORY__LIMIT__MB</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>1024</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">RAM limit default for each machine that has no RAM settings in its environment. Value less or equal to 0 is interpreted as disabling the limit.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_DEFAULT__MEMORY__REQUEST__MB</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>200</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">RAM request for each container that has no explicit RAM settings in its environment. This amount is allocated when the workspace container is created. This property may not be supported by all infrastructure implementations. Currently it is supported by Kubernetes and OpenShift. A memory request exceeding the memory limit is ignored, and only the limit size is used. Value less or equal to 0 is interpreted as disabling the limit.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_DEFAULT__CPU__LIMIT__CORES</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>-1</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">CPU limit for each container that has no CPU settings in its environment. Specify either in floating point cores number, for example, <code>0.125</code>, or using the Kubernetes format, integer millicores, for example, <code>125m</code>. Value less or equal to 0 is interpreted as disabling the limit.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_DEFAULT__CPU__REQUEST__CORES</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>-1</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">CPU request for each container that has no CPU settings in environment. A CPU request exceeding the CPU limit is ignored, and only limit number is used. Value less or equal to 0 is interpreted as disabling the limit.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_SIDECAR_DEFAULT__MEMORY__LIMIT__MB</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>128</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">RAM limit and request for each sidecar that has no RAM settings in the Che plug-in configuration. Value less or equal to 0 is interpreted as disabling the limit.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_SIDECAR_DEFAULT__MEMORY__REQUEST__MB</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>64</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">RAMlimit and request for each sidecar that has no RAM settings in the Che plug-in configuration. Value less or equal to 0 is interpreted as disabling the limit.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_SIDECAR_DEFAULT__CPU__LIMIT__CORES</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>-1</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">CPU limit and request default for each sidecar that has no CPU settings in the Che plug-in configuration. Specify either in floating point cores number, for example, <code>0.125</code>, or using the Kubernetes format, integer millicores, for example, <code>125m</code>. Value less or equal to 0 is interpreted as disabling the limit.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_SIDECAR_DEFAULT__CPU__REQUEST__CORES</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>-1</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">CPUlimit and request default for each sidecar that has no CPU settings in the Che plug-in configuration. Specify either in floating point cores number, for example, <code>0.125</code>, or using the Kubernetes format, integer millicores, for example, <code>125m</code>. Value less or equal to 0 is interpreted as disabling the limit.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_SIDECAR_IMAGE__PULL__POLICY</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>Always</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines image-pulling strategy for sidecars. Possible values are: <code>Always</code>, <code>Never</code>, <code>IfNotPresent</code>. For any other value, <code>Always</code> is assumed for images with the <code>:latest</code> tag, or <code>IfNotPresent</code> for all other cases.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_ACTIVITY__CHECK__SCHEDULER__PERIOD__S</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>60</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Period of inactive workspaces suspend job execution.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_ACTIVITY__CLEANUP__SCHEDULER__PERIOD__S</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>3600</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The period of the cleanup of the activity table. The activity table can contain invalid or stale data if some unforeseen errors happen, like a server crash at a peculiar point in time. The default is to run the cleanup job every hour.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_ACTIVITY__CLEANUP__SCHEDULER__INITIAL__DELAY__S</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>60</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The delay after server startup to start the first activity clean up job.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_ACTIVITY__CHECK__SCHEDULER__DELAY__S</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>180</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Delay before first workspace idleness check job started to avoid mass suspend if ws master was unavailable for period close to inactivity timeout.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_CLEANUP__TEMPORARY__INITIAL__DELAY__MIN</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>5</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Period of stopped temporary workspaces cleanup job execution.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_CLEANUP__TEMPORARY__PERIOD__MIN</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>180</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Periodof stopped temporary workspaces cleanup job execution.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_SERVER_PING__SUCCESS__THRESHOLD</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>1</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Number of sequential successful pings to server after which it is treated as available. Note: the property is common for all servers e.g. workspace agent, terminal, exec etc.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_SERVER_PING__INTERVAL__MILLISECONDS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>3000</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Interval, in milliseconds, between successive pings to workspace server.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_SERVER_LIVENESS__PROBES</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>wsagent/http,exec-agent/http,terminal,theia,jupyter,dirigible,cloud-shell,intellij</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">List of servers names which require liveness probes</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_STARTUP__DEBUG__LOG__LIMIT__BYTES</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>10485760</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Limit size of the logs collected from single container that can be observed by che-server when debugging workspace startup. default 10MB=10485760</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_STOP_ROLE_ENABLED</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>true</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">If true, 'stop-workspace' role with the edit privileges will be granted to the 'che' ServiceAccount if OpenShift OAuth is enabled. This configuration is mainly required for workspace idling when the OpenShift OAuth is enabled.</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="LAuthentication-parameters"><a class="anchor" href="#LAuthentication-parameters"></a>Authentication parameters</h3>
<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 2. Authentication parameters</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Environment Variable Name</th>
<th class="tableblock halign-left valign-top">Default value</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_AUTH_USER__SELF__CREATION</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>false</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Che has a single identity implementation, so this does not change the user experience. If true, enables user creation at API level</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_AUTH_ACCESS__DENIED__ERROR__PAGE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>/error-oauth</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Authentication error page address</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_AUTH_RESERVED__USER__NAMES</code></p></td>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Reserved user names</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_OAUTH_GITHUB_CLIENTID</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">You can setup GitHub OAuth to automate authentication to remote repositories. You need to first register this application with GitHub OAuth.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_OAUTH_GITHUB_CLIENTSECRET</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Youcan setup GitHub OAuth to automate authentication to remote repositories. You need to first register this application with GitHub OAuth.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_OAUTH_GITHUB_AUTHURI</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>https://github.com/login/oauth/authorize</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Youcansetup GitHub OAuth to automate authentication to remote repositories. You need to first register this application with GitHub OAuth.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_OAUTH_GITHUB_TOKENURI</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>https://github.com/login/oauth/access_token</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YoucansetupGitHub OAuth to automate authentication to remote repositories. You need to first register this application with GitHub OAuth.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_OAUTH_GITHUB_REDIRECTURIS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>http://localhost:${CHE_PORT}/api/oauth/callback</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YoucansetupGitHubOAuth to automate authentication to remote repositories. You need to first register this application with GitHub OAuth.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_OAUTH_OPENSHIFT_CLIENTID</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Configuration of OpenShift OAuth client. Used to obtain OpenShift OAuth token.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_OAUTH_OPENSHIFT_CLIENTSECRET</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Configurationof OpenShift OAuth client. Used to obtain OpenShift OAuth token.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_OAUTH_OPENSHIFT_OAUTH__ENDPOINT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ConfigurationofOpenShift OAuth client. Used to obtain OpenShift OAuth token.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_OAUTH_OPENSHIFT_VERIFY__TOKEN__URL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ConfigurationofOpenShiftOAuth client. Used to obtain OpenShift OAuth token.</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="LInternal"><a class="anchor" href="#LInternal"></a>Internal</h3>
<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 3. Internal</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Environment Variable Name</th>
<th class="tableblock halign-left valign-top">Default value</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SCHEDULE_CORE__POOL__SIZE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>10</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Che extensions can be scheduled executions on a time basis. This configures the size of the thread pool allocated to extensions that are launched on a recurring schedule.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>DB_SCHEMA_FLYWAY_BASELINE_ENABLED</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>true</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">DB initialization and migration configuration</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>DB_SCHEMA_FLYWAY_BASELINE_VERSION</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>5.0.0.8.1</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">DBinitialization and migration configuration</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>DB_SCHEMA_FLYWAY_SCRIPTS_PREFIX</code></p></td>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">DBinitializationand migration configuration</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>DB_SCHEMA_FLYWAY_SCRIPTS_SUFFIX</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>.sql</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">DBinitializationandmigration configuration</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>DB_SCHEMA_FLYWAY_SCRIPTS_VERSION__SEPARATOR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">DBinitializationandmigrationconfiguration</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>DB_SCHEMA_FLYWAY_SCRIPTS_LOCATIONS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>classpath:che-schema</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">DBinitializationandmigrationconfiguration</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="LKubernetes-Infra-parameters"><a class="anchor" href="#LKubernetes-Infra-parameters"></a>Kubernetes Infra parameters</h3>
<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 4. Kubernetes Infra parameters</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Environment Variable Name</th>
<th class="tableblock halign-left valign-top">Default value</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_MASTER__URL</code></p></td>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Configuration of Kubernetes client that Infra will use</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_TRUST__CERTS</code></p></td>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Configurationof Kubernetes client that Infra will use</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_SERVER__STRATEGY</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>multi-host</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines the way how servers are exposed to the world in Kubernetes infra. List of strategies implemented in Che: default-host, multi-host, single-host</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_SINGLEHOST_WORKSPACE_EXPOSURE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>native</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines the way in which the workspace plugins and editors are exposed in the single-host mode. Supported exposures: - 'native': Exposes servers using Kubernetes Ingresses. Works only on Kubernetes. - 'gateway': Exposes servers using reverse-proxy gateway.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_SINGLEHOST_WORKSPACE_DEVFILE__ENDPOINT__EXPOSURE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>multi-host</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines the way how to expose devfile endpoints, thus end-user&#8217;s applications, in single-host server strategy. They can either follow the single-host strategy and be exposed on subpaths, or they can be exposed on subdomains. - 'multi-host': expose on subdomains - 'single-host': expose on subpaths</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_SINGLEHOST_GATEWAY_CONFIGMAP__LABELS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>app=che,component=che-gateway-config</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines labels which will be set to ConfigMaps configuring single-host gateway.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_INGRESS_DOMAIN</code></p></td>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Used to generate domain for a server in a workspace in case property <code>che.infra.kubernetes.server_strategy</code> is set to <code>multi-host</code></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_NAMESPACE</code></p></td>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">DEPRECATED - please do not change the value of this property otherwise the existing workspaces will loose data. Do not set it on new installations. Defines Kubernetes namespace in which all workspaces will be created. If not set, every workspace will be created in a new namespace, where namespace = workspace id It&#8217;s possible to use &lt;username&gt; and &lt;userid&gt; placeholders (e.g.: che-workspace-&lt;username&gt;). In that case, new namespace will be created for each user. Service account with permission to create new namespace must be used. Ignored for OpenShift infra. Use <code>che.infra.openshift.project</code> instead If the namespace pointed to by this property exists, it will be used for all workspaces. If it does not exist, the namespace specified by the che.infra.kubernetes.namespace.default will be created and used.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_NAMESPACE_CREATION__ALLOWED</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>true</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Indicates whether Che server is allowed to create namespaces/projects for user workspaces, or they&#8217;re intended to be created manually by cluster administrator. This property is also used by the OpenShift infra.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_NAMESPACE_DEFAULT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>&lt;username&gt;-che</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines Kubernetes default namespace in which user&#8217;s workspaces are created if user does not override it. It&#8217;s possible to use &lt;username&gt;, &lt;userid&gt; and &lt;workspaceid&gt; placeholders (e.g.: che-workspace-&lt;username&gt;). In that case, new namespace will be created for each user (or workspace). Is used by OpenShift infra as well to specify Project</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_NAMESPACE_LABEL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>true</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines whether che-server should try to label the workspace namespaces.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_NAMESPACE_LABELS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>app.kubernetes.io/part-of=che.eclipse.org,app.kubernetes.io/component=workspaces-namespace</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">List of labels to find Namespaces/Projects that are used for Che Workspaces. They are used to: - find prepared Namespaces/Projects for users in combination with <code>che.infra.kubernetes.namespace.annotations</code>. - actively label namespaces with any workspace.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_NAMESPACE_ANNOTATIONS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>che.eclipse.org/username=&lt;username&gt;</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">List of annotations to find Namespaces/Projects prepared for Che users workspaces. Only Namespaces/Projects matching the <code>che.infra.kubernetes.namespace.labels</code> will be matched against these annotations. Namespaces/Projects that matches both <code>che.infra.kubernetes.namespace.labels</code> and <code>che.infra.kubernetes.namespace.annotations</code> will be preferentially used for User&#8217;s workspaces. It&#8217;s possible to use <code>&lt;username&gt;</code> placeholder to specify the Namespace/Project to concrete user.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_NAMESPACE_ALLOW__USER__DEFINED</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>false</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines if a user is able to specify Kubernetes namespace (or OpenShift project) different from the default. It&#8217;s NOT RECOMMENDED to configured true without OAuth configured. This property is also used by the OpenShift infra.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_SERVICE__ACCOUNT__NAME</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines Kubernetes Service Account name which should be specified to be bound to all workspaces pods. Note that Kubernetes Infrastructure won&#8217;t create the service account and it should exist. OpenShift infrastructure will check if project is predefined(if <code>che.infra.openshift.project</code> is not empty): - if it is predefined then service account must exist there - if it is 'NULL' or empty string then infrastructure will create new OpenShift project per workspace and prepare workspace service account with needed roles there</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_WORKSPACE__SA__CLUSTER__ROLES</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies optional, additional cluster roles to use with the workspace service account. Note that the cluster role names must already exist, and the Che service account needs to be able to create a Role Binding to associate these cluster roles with the workspace service account. The names are comma separated. This property deprecates 'che.infra.kubernetes.cluster_role_name'.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_WORKSPACE__START__TIMEOUT__MIN</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>8</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines time frame that limits the Kubernetes workspace start time</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_INGRESS__START__TIMEOUT__MIN</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>5</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines the timeout in minutes that limits the period for which Kubernetes Ingress become ready</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_WORKSPACE__UNRECOVERABLE__EVENTS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>FailedMount,FailedScheduling,MountVolume.SetUpfailed,Failed to pull image,FailedCreate,ReplicaSetCreateError</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">If during workspace startup an unrecoverable event defined in the property occurs, terminate workspace immediately instead of waiting until timeout Note that this SHOULD NOT include a mere 'Failed' reason, because that might catch events that are not unrecoverable. A failed container startup is handled explicitly by Che server.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_PVC_ENABLED</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>true</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines whether use the Persistent Volume Claim for che workspace needs e.g backup projects, logs etc or disable it.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_PVC_STRATEGY</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>common</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined which strategy will be used while choosing PVC for workspaces. Supported strategies: - 'common' All workspaces in the same Kubernetes Namespace will reuse the same PVC. Name of PVC may be configured with 'che.infra.kubernetes.pvc.name'. Existing PVC will be used or new one will be created if it doesn&#8217;t exist. - 'unique' Separate PVC for each workspace&#8217;s volume will be used. Name of PVC is evaluated as '{che.infra.kubernetes.pvc.name} + '-' + {generated_8_chars}'. Existing PVC will be used or a new one will be created if it doesn&#8217;t exist. - 'per-workspace' Separate PVC for each workspace will be used. Name of PVC is evaluated as '{che.infra.kubernetes.pvc.name} + '-' + {WORKSPACE_ID}'. Existing PVC will be used or a new one will be created if it doesn&#8217;t exist.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_PVC_PRECREATE__SUBPATHS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>true</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines whether to run a job that creates workspace&#8217;s subpath directories in persistent volume for the 'common' strategy before launching a workspace. Necessary in some versions of OpenShift/Kubernetes as workspace subpath volume mounts are created with root permissions, and thus cannot be modified by workspaces running as a user (presents an error importing projects into a workspace in Che). The default is 'true', but should be set to false if the version of Openshift/Kubernetes creates subdirectories with user permissions. Relevant issue: https://github.com/kubernetes/kubernetes/issues/41638 Note that this property has effect only if the 'common' PVC strategy used.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_PVC_NAME</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>claim-che-workspace</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines the settings of PVC name for che workspaces. Each PVC strategy supplies this value differently. See doc for che.infra.kubernetes.pvc.strategy property</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_PVC_STORAGE__CLASS__NAME</code></p></td>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines the storage class of Persistent Volume Claim for the workspaces. Empty strings means 'use default'.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_PVC_QUANTITY</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>10Gi</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines the size of Persistent Volume Claim of che workspace. Format described here: https://docs.openshift.com/container-platform/4.4/storage/understanding-persistent-storage.html</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_PVC_JOBS_IMAGE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>centos:centos7</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Pod that is launched when performing persistent volume claim maintenance jobs on OpenShift</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_PVC_JOBS_IMAGE_PULL__POLICY</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>IfNotPresent</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Image pull policy of container that used for the maintenance jobs on Kubernetes/OpenShift cluster</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_PVC_JOBS_MEMORYLIMIT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>250Mi</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines pod memory limit for persistent volume claim maintenance jobs</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_PVC_ACCESS__MODE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>ReadWriteOnce</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines Persistent Volume Claim access mode. Note that for common PVC strategy changing of access mode affects the number of simultaneously running workspaces. If OpenShift flavor where che running is using PVs with RWX access mode then a limit of running workspaces at the same time bounded only by che limits configuration like(RAM, CPU etc). Detailed information about access mode is described here: https://docs.openshift.com/container-platform/4.4/storage/understanding-persistent-storage.html</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_PVC_WAIT__BOUND</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>true</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines whether Che Server should wait workspaces PVCs to become bound after creating. It&#8217;s used by all PVC strategies. It should be set to <code>false</code> in case if <code>volumeBindingMode</code> is configured to <code>WaitForFirstConsumer</code> otherwise workspace starts will hangs up on phase of waiting PVCs. Default value is true (means that PVCs should be waited to be bound)</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_INSTALLER__SERVER__MIN__PORT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>10000</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined range of ports for installers servers By default, installer will use own port, but if it conflicts with another installer servers then OpenShift infrastructure will reconfigure installer to use first available from this range</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_INSTALLER__SERVER__MAX__PORT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>20000</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Definedrange of ports for installers servers By default, installer will use own port, but if it conflicts with another installer servers then OpenShift infrastructure will reconfigure installer to use first available from this range</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_INGRESS_ANNOTATIONS__JSON</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines annotations for ingresses which are used for servers exposing. Value depends on the kind of ingress controller. OpenShift infrastructure ignores this property because it uses Routes instead of ingresses. Note that for a single-host deployment strategy to work, a controller supporting URL rewriting has to be used (so that URLs can point to different servers while the servers don&#8217;t need to support changing the app root). The che.infra.kubernetes.ingress.path.rewrite_transform property defines how the path of the ingress should be transformed to support the URL rewriting and this property defines the set of annotations on the ingress itself that instruct the chosen ingress controller to actually do the URL rewriting, potentially building on the path transformation (if required by the chosen ingress controller). For example for nginx ingress controller 0.22.0 and later the following value is recommended: {'ingress.kubernetes.io/rewrite-target': '/$1','ingress.kubernetes.io/ssl-redirect': 'false',\ 'ingress.kubernetes.io/proxy-connect-timeout': '3600','ingress.kubernetes.io/proxy-read-timeout': '3600'} and the che.infra.kubernetes.ingress.path.rewrite_transform should be set to '%s(.*)' For nginx ingress controller older than 0.22.0, the rewrite-target should be set to merely '/' and the path transform to '%s' (see the the che.infra.kubernetes.ingress.path.rewrite_transform property). Please consult the nginx ingress controller documentation for the explanation of how the ingress controller uses the regular expression present in the ingress path and how it achieves the URL rewriting.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_INGRESS_PATH__TRANSFORM</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines a 'recipe' on how to declare the path of the ingress that should expose a server. The '%s' represents the base public URL of the server and is guaranteed to end with a forward slash. This property must be a valid input to the String.format() method and contain exactly one reference to '%s'. Please see the description of the che.infra.kubernetes.ingress.annotations_json property to see how these two properties interplay when specifying the ingress annotations and path. If not defined, this property defaults to '%s' (without the quotes) which means that the path is not transformed in any way for use with the ingress controller.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_INGRESS_LABELS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Additional labels to add into every Ingress created by Che server to allow clear identification.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_POD_SECURITY__CONTEXT_RUN__AS__USER</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines security context for pods that will be created by Kubernetes Infra This is ignored by OpenShift infra</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_POD_SECURITY__CONTEXT_FS__GROUP</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Definessecurity context for pods that will be created by Kubernetes Infra This is ignored by OpenShift infra</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_POD_TERMINATION__GRACE__PERIOD__SEC</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>0</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines grace termination period for pods that will be created by Kubernetes / OpenShift infrastructures Grace termination period of Kubernetes / OpenShift workspace&#8217;s pods defaults '0', which allows to terminate pods almost instantly and significantly decrease the time required for stopping a workspace. Note: if <code>terminationGracePeriodSeconds</code> have been explicitly set in Kubernetes / OpenShift recipe it will not be overridden.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_CLIENT_HTTP_ASYNC__REQUESTS_MAX</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>1000</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Number of maximum concurrent async web requests (http requests or ongoing web socket calls) supported in the underlying shared http client of the <code>KubernetesClient</code> instances. Default values are 64, and 5 per-host, which doesn&#8217;t seem correct for multi-user scenarios knowing that Che keeps a number of connections opened (e.g. for command or ws-agent logs)</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_CLIENT_HTTP_ASYNC__REQUESTS_MAX__PER__HOST</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>1000</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Numberof maximum concurrent async web requests (http requests or ongoing web socket calls) supported in the underlying shared http client of the <code>KubernetesClient</code> instances. Default values are 64, and 5 per-host, which doesn&#8217;t seem correct for multi-user scenarios knowing that Che keeps a number of connections opened (e.g. for command or ws-agent logs)</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_CLIENT_HTTP_CONNECTION__POOL_MAX__IDLE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>5</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Max number of idle connections in the connection pool of the Kubernetes-client shared http client</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_CLIENT_HTTP_CONNECTION__POOL_KEEP__ALIVE__MIN</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>5</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Keep-alive timeout of the connection pool of the Kubernetes-client shared http client in minutes</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_TLS__ENABLED</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>false</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Creates Ingresses with Transport Layer Security (TLS) enabled In OpenShift infrastructure, Routes will be TLS-enabled</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_TLS__SECRET</code></p></td>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Name of a secret that should be used when creating workspace ingresses with TLS Ignored by OpenShift infrastructure</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_TLS__KEY</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Data for TLS Secret that should be used for workspaces Ingresses cert and key should be encoded with Base64 algorithm These properties are ignored by OpenShift infrastructure</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_TLS__CERT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Datafor TLS Secret that should be used for workspaces Ingresses cert and key should be encoded with Base64 algorithm These properties are ignored by OpenShift infrastructure</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_RUNTIMES__CONSISTENCY__CHECK__PERIOD__MIN</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>-1</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines the period with which runtimes consistency checks will be performed. If runtime has inconsistent state then runtime will be stopped automatically. Value must be more than 0 or <code>-1</code>, where <code>-1</code> means that checks won&#8217;t be performed at all. It is disabled by default because there is possible Che Server configuration when Che Server doesn&#8217;t have an ability to interact with Kubernetes API when operation is not invoked by user. It DOES work on the following configurations: - workspaces objects are created in the same namespace where Che Server is located; - cluster-admin service account token is mount to Che Server pod; It DOES NOT work on the following configurations: - Che Server communicates with Kubernetes API using token from OAuth provider;</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_TRUSTED__CA_SRC__CONFIGMAP</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Name of cofig map in Che server namespace with additional CA TLS certificates to be propagated into all user&#8217;s workspaces. If the property is set on OpenShift 4 infrastructure, and che.infra.openshift.trusted_ca.dest_configmap_labels includes config.openshift.io/inject-trusted-cabundle=true label, then cluster CA bundle will be propagated too.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_TRUSTED__CA_DEST__CONFIGMAP</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>ca-certs</code></p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_TRUSTED__CA_MOUNT__PATH</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>/public-certs</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Configures path on workspace containers where the CA bundle should be mount. Content of config map specified by che.infra.kubernetes.trusted_ca.dest_configmap is mounted.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_TRUSTED__CA_DEST__CONFIGMAP__LABELS</code></p></td>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Comma separated list of labels to add to the CA certificates config map in user workspace. See che.infra.kubernetes.trusted_ca.dest_configmap property.</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="LOpenShift-Infra-parameters"><a class="anchor" href="#LOpenShift-Infra-parameters"></a>OpenShift Infra parameters</h3>
<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 5. OpenShift Infra parameters</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Environment Variable Name</th>
<th class="tableblock halign-left valign-top">Default value</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_OPENSHIFT_PROJECT</code></p></td>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">DEPRECATED - please do not change the value of this property otherwise the existing workspaces will loose data. Do not set it on new installations. Defines OpenShift namespace in which all workspaces will be created. If not set, every workspace will be created in a new project, where project name = workspace id It&#8217;s possible to use &lt;username&gt; and &lt;userid&gt; placeholders (e.g.: che-workspace-&lt;username&gt;). In that case, new project will be created for each user. OpenShift oauth or service account with permission to create new projects must be used. If the project pointed to by this property exists, it will be used for all workspaces. If it does not exist, the namespace specified by the che.infra.kubernetes.namespace.default will be created and used.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_OPENSHIFT_TRUSTED__CA_DEST__CONFIGMAP__LABELS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>config.openshift.io/inject-trusted-cabundle=true</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Comma separated list of labels to add to the CA certificates config map in user workspace. See che.infra.kubernetes.trusted_ca.dest_configmap property. This default value is used for automatic cluster CA bundle injection in Openshift 4.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_OPENSHIFT_ROUTE_LABELS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Additional labels to add into every Route created by Che server to allow clear identification.</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="LExperimental-properties"><a class="anchor" href="#LExperimental-properties"></a>Experimental properties</h3>
<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 6. Experimental properties</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Environment Variable Name</th>
<th class="tableblock halign-left valign-top">Default value</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_PLUGIN__BROKER_METADATA_IMAGE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>quay.io/eclipse/che-plugin-metadata-broker:v3.4.0</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Docker image of Che plugin broker app that resolves workspace tooling configuration and copies plugins dependencies to a workspace Note these images are overridden by the Che Operator by default; changing the images here will not have an effect if Che is installed via Operator.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_PLUGIN__BROKER_ARTIFACTS_IMAGE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>quay.io/eclipse/che-plugin-artifacts-broker:v3.4.0</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Dockerimage of Che plugin broker app that resolves workspace tooling configuration and copies plugins dependencies to a workspace Note these images are overridden by the Che Operator by default; changing the images here will not have an effect if Che is installed via Operator.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_PLUGIN__BROKER_DEFAULT__MERGE__PLUGINS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>false</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Configures the default behavior of the plugin brokers when provisioning plugins into a workspace. If set to true, the plugin brokers will attempt to merge plugins when possible (i.e. they run in the same sidecar image and do not have conflicting settings). This value is the default setting used when the devfile does not specify otherwise, via the 'mergePlugins' attribute.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_PLUGIN__BROKER_PULL__POLICY</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>Always</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Docker image of Che plugin broker app that resolves workspace tooling configuration and copies plugins dependencies to a workspace</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_PLUGIN__BROKER_WAIT__TIMEOUT__MIN</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>3</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines the timeout in minutes that limits the max period of result waiting for plugin broker.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_PLUGIN__REGISTRY__URL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>https://che-plugin-registry.prod-preview.openshift.io/v3</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Workspace tooling plugins registry endpoint. Should be a valid HTTP URL. Example: http://che-plugin-registry-eclipse-che.192.168.65.2.nip.io In case Che plugins tooling is not needed value 'NULL' should be used</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_PLUGIN__REGISTRY__INTERNAL__URL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Workspace tooling plugins registry 'internal' endpoint. Should be a valid HTTP URL. Example: http://devfile-registry.che.svc.cluster.local:8080 In case Che plugins tooling is not needed value 'NULL' should be used</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_DEVFILE__REGISTRY__URL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>https://che-devfile-registry.prod-preview.openshift.io/</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Devfile Registry endpoint. Should be a valid HTTP URL. Example: http://che-devfile-registry-eclipse-che.192.168.65.2.nip.io In case Che plugins tooling is not needed value 'NULL' should be used</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_DEVFILE__REGISTRY__INTERNAL__URL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Devfile Registry 'internal' endpoint. Should be a valid HTTP URL. Example: http://plugin-registry.che.svc.cluster.local:8080 In case Che plugins tooling is not needed value 'NULL' should be used</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_STORAGE_AVAILABLE__TYPES</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>persistent,ephemeral,async</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The configuration property that defines available values for storage types that clients like Dashboard should propose for users during workspace creation/update. Available values: - 'persistent': Persistent Storage slow I/O but persistent. - 'ephemeral': Ephemeral Storage allows for faster I/O but may have limited storage and is not persistent. - 'async': Experimental feature: Asynchronous storage is combination of Ephemeral and Persistent storage. Allows for faster I/O and keep your changes, will backup on stop and restore on start workspace. Will work only if: - che.infra.kubernetes.pvc.strategy='common' - che.limits.user.workspaces.run.count=1 - che.infra.kubernetes.namespace.allow_user_defined=false - che.infra.kubernetes.namespace.default contains &lt;username&gt; in other cases remove 'async' from the list.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_STORAGE_PREFERRED__TYPE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>persistent</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The configuration property that defines a default value for storage type that clients like Dashboard should propose for users during workspace creation/update. The 'async' value not recommended as default type since it&#8217;s experimental</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_SERVER_SECURE__EXPOSER</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>jwtproxy</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Configures in which way secure servers will be protected with authentication. Suitable values: - 'default': jwtproxy is configured in a pass-through mode. So, servers should authenticate requests themselves. - 'jwtproxy': jwtproxy will authenticate requests. So, servers will receive only authenticated ones.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_SERVER_SECURE__EXPOSER_JWTPROXY_TOKEN_ISSUER</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>wsmaster</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Jwtproxy issuer string, token lifetime and optional auth page path to route unsigned requests to.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_SERVER_SECURE__EXPOSER_JWTPROXY_TOKEN_TTL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>8800h</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Jwtproxyissuer string, token lifetime and optional auth page path to route unsigned requests to.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_SERVER_SECURE__EXPOSER_JWTPROXY_AUTH_LOADER_PATH</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>/_app/loader.html</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Jwtproxyissuerstring, token lifetime and optional auth page path to route unsigned requests to.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_SERVER_SECURE__EXPOSER_JWTPROXY_IMAGE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>quay.io/eclipse/che-jwtproxy:0.10.0</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Jwtproxyissuerstring,token lifetime and optional auth page path to route unsigned requests to.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_SERVER_SECURE__EXPOSER_JWTPROXY_MEMORY__REQUEST</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>15mb</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Jwtproxyissuerstring,tokenlifetime and optional auth page path to route unsigned requests to.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_SERVER_SECURE__EXPOSER_JWTPROXY_MEMORY__LIMIT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>128mb</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Jwtproxyissuerstring,tokenlifetimeand optional auth page path to route unsigned requests to.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_SERVER_SECURE__EXPOSER_JWTPROXY_CPU__REQUEST</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>0.03</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Jwtproxyissuerstring,tokenlifetimeandoptional auth page path to route unsigned requests to.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_SERVER_SECURE__EXPOSER_JWTPROXY_CPU__LIMIT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>0.5</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Jwtproxyissuerstring,tokenlifetimeandoptionalauth page path to route unsigned requests to.</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="LConfiguration-of-major-websocket-endpoint"><a class="anchor" href="#LConfiguration-of-major-websocket-endpoint"></a>Configuration of major "/websocket" endpoint</h3>
<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 7. Configuration of major "/websocket" endpoint</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Environment Variable Name</th>
<th class="tableblock halign-left valign-top">Default value</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_CORE_JSONRPC_PROCESSOR__MAX__POOL__SIZE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>50</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Maximum size of the JSON RPC processing pool in case if pool size would be exceeded message execution will be rejected</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_CORE_JSONRPC_PROCESSOR__CORE__POOL__SIZE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>5</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Initial json processing pool. Minimum number of threads that used to process major JSON RPC messages.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_CORE_JSONRPC_PROCESSOR__QUEUE__CAPACITY</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>100000</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Configuration of queue used to process Json RPC messages.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_METRICS_PORT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>8087</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Port the the http server endpoint that would be exposed with Prometheus metrics</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="LCORS-settings"><a class="anchor" href="#LCORS-settings"></a>CORS settings</h3>
<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 8. CORS settings</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Environment Variable Name</th>
<th class="tableblock halign-left valign-top">Default value</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_CORS_ALLOWED__ORIGINS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>*</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">CORS filter on WS Master is turned off by default. Use environment variable 'CHE_CORS_ENABLED=true' to turn it on 'cors.allowed.origins' indicates which request origins are allowed</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_CORS_ALLOW__CREDENTIALS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>false</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'cors.support.credentials' indicates if it allows processing of requests with credentials (in cookies, headers, TLS client certificates)</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="LFactory-defaults"><a class="anchor" href="#LFactory-defaults"></a>Factory defaults</h3>
<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 9. Factory defaults</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Environment Variable Name</th>
<th class="tableblock halign-left valign-top">Default value</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_FACTORY_DEFAULT__EDITOR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>eclipse/che-theia/latest</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Editor and plugin which will be used for factories which are created from remote git repository which doesn&#8217;t contain any Che-specific workspace descriptor Multiple plugins must be comma-separated, for example: pluginFooPublisher/pluginFooName/pluginFooVersion,pluginBarPublisher/pluginBarName/pluginBarVersion</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_FACTORY_DEFAULT__PLUGINS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>eclipse/che-machine-exec-plugin/latest</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Editorand plugin which will be used for factories which are created from remote git repository which doesn&#8217;t contain any Che-specific workspace descriptor Multiple plugins must be comma-separated, for example: pluginFooPublisher/pluginFooName/pluginFooVersion,pluginBarPublisher/pluginBarName/pluginBarVersion</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_FACTORY_DEFAULT__DEVFILE__FILENAMES</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>devfile.yaml,.devfile.yaml</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Devfile filenames to look on repository-based factories (like GitHub etc). Factory will try to locate those files in the order they enumerated in the property.</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="LDevfile-defaults"><a class="anchor" href="#LDevfile-defaults"></a>Devfile defaults</h3>
<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 10. Devfile defaults</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Environment Variable Name</th>
<th class="tableblock halign-left valign-top">Default value</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_DEVFILE_DEFAULT__EDITOR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>eclipse/che-theia/latest</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Default Editor that should be provisioned into Devfile if there is no specified Editor Format is <code>editorPublisher/editorName/editorVersion</code> value. <code>NULL</code> or absence of value means that default editor should not be provisioned.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_DEVFILE_DEFAULT__EDITOR_PLUGINS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>eclipse/che-machine-exec-plugin/latest</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Default Plugins which should be provisioned for Default Editor. All the plugins from this list that are not explicitly mentioned in the user-defined devfile will be provisioned but only when the default editor is used or if the user-defined editor is the same as the default one (even if in different version). Format is comma-separated <code>pluginPublisher/pluginName/pluginVersion</code> values, and URLs. For example: eclipse/che-theia-exec-plugin/0.0.1,eclipse/che-theia-terminal-plugin/0.0.1,https://cdn.pluginregistry.com/vi-mode/meta.yaml If the plugin is a URL, the plugin&#8217;s meta.yaml is retrieved from that URL.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_PROVISION_SECRET_LABELS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>app.kubernetes.io/part-of=che.eclipse.org,app.kubernetes.io/component=workspace-secret</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines comma-separated list of labels for selecting secrets from a user namespace, which will be mount into workspace containers as a files or env variables. Only secrets that match ALL given labels will be selected.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_DEVFILE_ASYNC_STORAGE_PLUGIN</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>eclipse/che-async-pv-plugin/latest</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Plugin is added in case async storage feature will be enabled in workspace config and supported by environment</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_ASYNC_STORAGE_IMAGE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>quay.io/eclipse/che-workspace-data-sync-storage:0.0.1</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Docker image for the Che async storage</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_POD_NODE__SELECTOR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Optionally configures node selector for workspace pod. Format is comma-separated key=value pairs, e.g: disktype=ssd,cpu=xlarge,foo=bar</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_POD_TOLERATIONS__JSON</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Optionally configures tolerations for workspace pod. Format is a string representing a JSON Array of taint tolerations, or <code>NULL</code> to disable it. The objects contained in the array have to follow this <a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#toleration-v1-core">spec</a>. Example: [{'effect':'NoExecute','key':'aNodeTaint','operator':'Equal','value':'aValue'}]</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_ASYNC_STORAGE_SHUTDOWN__TIMEOUT__MIN</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>120</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The timeout for the Asynchronous Storage Pod shutdown after stopping the last used workspace. Value less or equal to 0 interpreted as disabling shutdown ability.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_KUBERNETES_ASYNC_STORAGE_SHUTDOWN__CHECK__PERIOD__MIN</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>30</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines the period with which the Asynchronous Storage Pod stopping ability will be performed (once in 30 minutes by default)</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INTEGRATION_BITBUCKET_SERVER__ENDPOINTS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL#</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Bitbucket endpoints used for factory integrations. Comma separated list of bitbucket server URLs or NULL if no integration expected.</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="LChe-system"><a class="anchor" href="#LChe-system"></a>Che system</h3>
<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 11. Che system</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Environment Variable Name</th>
<th class="tableblock halign-left valign-top">Default value</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_SYSTEM_SUPER__PRIVILEGED__MODE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>false</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">System Super Privileged Mode. Grants users with the manageSystem permission additional permissions for getByKey, getByNameSpace, stopWorkspaces, and getResourcesInformation. These are not given to admins by default and these permissions allow admins gain visibility to any workspace along with naming themselves with admin privileges to those workspaces.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_SYSTEM_ADMIN__NAME</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>admin</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Grant system permission for 'che.admin.name' user. If the user already exists it&#8217;ll happen on component startup, if not - during the first login when user is persisted in the database.</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="LWorkspace-limits"><a class="anchor" href="#LWorkspace-limits"></a>Workspace limits</h3>
<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 12. Workspace limits</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Environment Variable Name</th>
<th class="tableblock halign-left valign-top">Default value</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_LIMITS_WORKSPACE_ENV_RAM</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>16gb</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Workspaces are the fundamental runtime for users when doing development. You can set parameters that limit how workspaces are created and the resources that are consumed. The maximum amount of RAM that a user can allocate to a workspace when they create a new workspace. The RAM slider is adjusted to this maximum value.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_LIMITS_WORKSPACE_IDLE_TIMEOUT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>1800000</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The length of time that a user is idle with their workspace when the system will suspend the workspace and then stopping it. Idleness is the length of time that the user has not interacted with the workspace, meaning that one of our agents has not received interaction. Leaving a browser window open counts toward idleness.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_LIMITS_WORKSPACE_RUN_TIMEOUT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>0</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The length of time in milliseconds that a workspace will run, regardless of activity, before the system will suspend it. Set this property if you want to automatically stop workspaces after a period of time. The default is zero, meaning that there is no run timeout.</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="LUsers-workspace-limits"><a class="anchor" href="#LUsers-workspace-limits"></a>Users workspace limits</h3>
<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 13. Users workspace limits</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Environment Variable Name</th>
<th class="tableblock halign-left valign-top">Default value</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_LIMITS_USER_WORKSPACES_RAM</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>-1</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The total amount of RAM that a single user is allowed to allocate to running workspaces. A user can allocate this RAM to a single workspace or spread it across multiple workspaces.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_LIMITS_USER_WORKSPACES_COUNT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>-1</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The maximum number of workspaces that a user is allowed to create. The user will be presented with an error message if they try to create additional workspaces. This applies to the total number of both running and stopped workspaces.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_LIMITS_USER_WORKSPACES_RUN_COUNT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>1</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The maximum number of running workspaces that a single user is allowed to have. If the user has reached this threshold and they try to start an additional workspace, they will be prompted with an error message. The user will need to stop a running workspace to activate another.</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="LOrganizations-workspace-limits"><a class="anchor" href="#LOrganizations-workspace-limits"></a>Organizations workspace limits</h3>
<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 14. Organizations workspace limits</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Environment Variable Name</th>
<th class="tableblock halign-left valign-top">Default value</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_LIMITS_ORGANIZATION_WORKSPACES_RAM</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>-1</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The total amount of RAM that a single organization (team) is allowed to allocate to running workspaces. An organization owner can allocate this RAM however they see fit across the team&#8217;s workspaces.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_LIMITS_ORGANIZATION_WORKSPACES_COUNT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>-1</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The maximum number of workspaces that a organization is allowed to own. The organization will be presented an error message if they try to create additional workspaces. This applies to the total number of both running and stopped workspaces.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_LIMITS_ORGANIZATION_WORKSPACES_RUN_COUNT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>-1</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The maximum number of running workspaces that a single organization is allowed. If the organization has reached this threshold and they try to start an additional workspace, they will be prompted with an error message. The organization will need to stop a running workspace to activate another.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_MAIL_FROM__EMAIL__ADDRESS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>che@noreply.com</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Address that will be used as from email for email notifications</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="LOrganizations-notifications-settings"><a class="anchor" href="#LOrganizations-notifications-settings"></a>Organizations notifications settings</h3>
<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 15. Organizations notifications settings</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Environment Variable Name</th>
<th class="tableblock halign-left valign-top">Default value</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_ORGANIZATION_EMAIL_MEMBER__ADDED__SUBJECT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>You'vebeen added to a Che Organization</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Organization notifications sunjects and templates</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_ORGANIZATION_EMAIL_MEMBER__ADDED__TEMPLATE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>st-html-templates/user_added_to_organization</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Organizationnotifications sunjects and templates</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_ORGANIZATION_EMAIL_MEMBER__REMOVED__SUBJECT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>You'vebeen removed from a Che Organization</code></p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_ORGANIZATION_EMAIL_MEMBER__REMOVED__TEMPLATE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>st-html-templates/user_removed_from_organization</code></p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_ORGANIZATION_EMAIL_ORG__REMOVED__SUBJECT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CheOrganization deleted</code></p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_ORGANIZATION_EMAIL_ORG__REMOVED__TEMPLATE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>st-html-templates/organization_deleted</code></p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_ORGANIZATION_EMAIL_ORG__RENAMED__SUBJECT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CheOrganization renamed</code></p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_ORGANIZATION_EMAIL_ORG__RENAMED__TEMPLATE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>st-html-templates/organization_renamed</code></p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="LMulti-user-specific-OpenShift-infrastructure-configuration"><a class="anchor" href="#LMulti-user-specific-OpenShift-infrastructure-configuration"></a>Multi-user-specific OpenShift infrastructure configuration</h3>
<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 16. Multi-user-specific OpenShift infrastructure configuration</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Environment Variable Name</th>
<th class="tableblock halign-left valign-top">Default value</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_INFRA_OPENSHIFT_OAUTH__IDENTITY__PROVIDER</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Alias of the Openshift identity provider registered in Keycloak, that should be used to create workspace OpenShift resources in Openshift namespaces owned by the current Che user. Should be set to NULL if <code>che.infra.openshift.project</code> is set to a non-empty value. For more information see the following documentation: https://www.keycloak.org/docs/latest/server_admin/index.html#openshift-4</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="LKeycloak-configuration"><a class="anchor" href="#LKeycloak-configuration"></a>Keycloak configuration</h3>
<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 17. Keycloak configuration</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Environment Variable Name</th>
<th class="tableblock halign-left valign-top">Default value</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_KEYCLOAK_AUTH__SERVER__URL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>http://${CHE_HOST}:5050/auth</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Url to keycloak identity provider server Can be set to NULL only if <code>che.keycloak.oidcProvider</code> is used</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_KEYCLOAK_AUTH__INTERNAL__SERVER__URL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Internal network service Url to keycloak identity provider server</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_KEYCLOAK_REALM</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>che</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Keycloak realm is used to authenticate users Can be set to NULL only if <code>che.keycloak.oidcProvider</code> is used</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_KEYCLOAK_CLIENT__ID</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>che-public</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Keycloak client id in che.keycloak.realm that is used by dashboard, ide and cli to authenticate users</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_KEYCLOAK_OSO_ENDPOINT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">URL to access OSO oauth tokens</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_KEYCLOAK_GITHUB_ENDPOINT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">URL to access Github oauth tokens</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_KEYCLOAK_ALLOWED__CLOCK__SKEW__SEC</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>3</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The number of seconds to tolerate for clock skew when verifying exp or nbf claims.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_KEYCLOAK_USE__NONCE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>true</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use the OIDC optional <code>nonce</code> feature to increase security.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_KEYCLOAK_JS__ADAPTER__URL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">URL to the Keycloak Javascript adapter we want to use. if set to NULL, then the default used value is <code>${che.keycloak.auth_server_url}/js/keycloak.js</code>, or <code>&lt;che-server&gt;/api/keycloak/OIDCKeycloak.js</code> if an alternate <code>oidc_provider</code> is used</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_KEYCLOAK_OIDC__PROVIDER</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Base URL of an alternate OIDC provider that provides a discovery endpoint as detailed in the following specification https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfig</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_KEYCLOAK_USE__FIXED__REDIRECT__URLS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>false</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Set to true when using an alternate OIDC provider that only supports fixed redirect Urls This property is ignored when <code>che.keycloak.oidc_provider</code> is NULL</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_KEYCLOAK_USERNAME__CLAIM</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Username claim to be used as user display name when parsing JWT token if not defined the fallback value is 'preferred_username'</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_OAUTH_SERVICE__MODE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>delegated</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Configuration of OAuth Authentication Service that can be used in 'embedded' or 'delegated' mode. If set to 'embedded', then the service work as a wrapper to Che&#8217;s OAuthAuthenticator ( as in Single User mode). If set to 'delegated', then the service will use Keycloak IdentityProvider mechanism. Runtime Exception wii be thrown, in case if this property is not set properly.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_KEYCLOAK_CASCADE__USER__REMOVAL__ENABLED</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>false</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Configuration for enabling removing user from Keycloak server on removing user from Che database. By default it&#8217;s disabled. Can be enabled in some special cases when deleting a user in Che database should execute removing related-user from Keycloak. For correct work need to set admin username ${che.keycloak.admin_username} and password ${che.keycloak.admin_password}.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_KEYCLOAK_ADMIN__USERNAME</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Keycloak admin username. Will be used for deleting user from Keycloak on removing user from Che database. Make sense only in case ${che.keycloak.cascade_user_removal_enabled} set to 'true'</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_KEYCLOAK_ADMIN__PASSWORD</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Keycloak admin password. Will be used for deleting user from Keycloak on removing user from Che database. Make sense only in case ${che.keycloak.cascade_user_removal_enabled} set to 'true'</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_KEYCLOAK_USERNAME_REPLACEMENT__PATTERNS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NULL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">User name adjustment configuration. Che needs to use the usernames as part of K8s object names and labels and therefore has stricter requirements on their format than the identity providers usually allow (it needs them to be DNS-compliant). The adjustment is represented by comma-separated key-value pairs. These are sequentially used as arguments to the String.replaceAll function on the original username. The keys are regular expressions, values are replacement strings that replace the characters in the username that match the regular expression. The modified username will only be stored in the Che database and will not be advertised back to the identity provider. It is recommended to use DNS-compliant characters as replacement strings (values in the key-value pairs). Example: <code>\\=-,@=-at-</code> changes <code>\</code> to <code>-</code> and <code>@</code> to <code>-at-</code> so the username <code>org\user@com</code> becomes <code>org-user-at-com.</code></p></td>
</tr>
</tbody>
</table>
<div class="ulist">
<div class="title">Additional resources</div>
<ul>
<li>
<p><a href="../../administration-guide/configuring-authorization/#configuring-che-to-use-external-keycloak_che" class="page">Configuring Che to use an external Keycloak installation</a></p>
</li>
</ul>
</div>
</div>
</div>
</div>
</article>
</div>
</main>
</div>
<footer class="footer">
<div><a href="https://www.eclipse.org" target="_blank">Eclipse Foundation</a> |
<a href="https://www.eclipse.org/legal/privacy.php" target="_blank">Privacy Policy</a> |
<a href="https://www.eclipse.org/legal/termsofuse.php" target="_blank">Terms of Use</a> |
<a href="https://www.eclipse.org/legal/epl-2.0/" target="_blank">Eclipse Public License</a> |
<a href="https://www.eclipse.org/legal" target="_blank">Legal Resources</a></div>
</footer>
<script src="../../../_/js/site.js"></script>
<script async src="../../../_/js/vendor/highlight.js"></script>
</body>
</html>