{
    "componentChunkName": "component---src-templates-doc-tsx",
    "path": "/docs/3.9.x/en/administration/scm-server/",
    "result": {"data":{"navigation":{"nodes":[{"section":"Getting started","entries":[{"frontmatter":{"title":"Installation","subtitle":"Installation of scm-manager","partiallyActive":true},"fields":{"slug":"/docs/3.9.x/en/installation/"}},{"frontmatter":{"title":"First Startup","subtitle":"Administration User Creation","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/first-startup/"}},{"frontmatter":{"title":"Migrate from v1 to v3","subtitle":"How to use the Migration-Wizard","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/migrate-scm-manager-from-v1/"}},{"frontmatter":{"title":"Migrate from v2 to v3","subtitle":"Changes in the configuration","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/migrate-scm-manager-from-v2/"}},{"frontmatter":{"title":"Import existing repositories","subtitle":"How to import existing repositories into SCM-Manager","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/import/"}},{"frontmatter":{"title":"Frequently Asked Questions","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/faq/"}},{"frontmatter":{"title":"Known Issues","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/known-issues/"}}]},{"section":"User-oriented","entries":[{"frontmatter":{"title":"Repository","subtitle":null,"partiallyActive":true},"fields":{"slug":"/docs/3.9.x/en/user/repo/"}},{"frontmatter":{"title":"User","subtitle":null,"partiallyActive":true},"fields":{"slug":"/docs/3.9.x/en/user/user/"}},{"frontmatter":{"title":"Groups","subtitle":null,"partiallyActive":true},"fields":{"slug":"/docs/3.9.x/en/user/group/"}},{"frontmatter":{"title":"Administration","subtitle":null,"partiallyActive":true},"fields":{"slug":"/docs/3.9.x/en/user/admin/"}},{"frontmatter":{"title":"Profile","subtitle":null,"partiallyActive":true},"fields":{"slug":"/docs/3.9.x/en/user/profile/"}},{"frontmatter":{"title":"Notifications","subtitle":null,"partiallyActive":true},"fields":{"slug":"/docs/3.9.x/en/user/notification/"}},{"frontmatter":{"title":"CLI Client","subtitle":null,"partiallyActive":true},"fields":{"slug":"/docs/3.9.x/en/user/cli/"}},{"frontmatter":{"title":"Shortcuts","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/user/shortcuts/"}}]},{"section":"Administration","entries":[{"frontmatter":{"title":"Base Directory","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/administration/basedirectory/"}},{"frontmatter":{"title":"Logging","subtitle":"Configuration and locations of SCM-Manager logging","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/administration/logging/"}},{"frontmatter":{"title":"SCM-Server Configuration","subtitle":"Various configuration options for the SCM-Server","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/administration/scm-server/"}},{"frontmatter":{"title":"Reverse Proxy","subtitle":"How to use SCM-Manager with common reverse proxies","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/administration/reverse-proxies/"}},{"frontmatter":{"title":"Caching for Working Directories","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/administration/workdir_caching/"}}]},{"section":"Development","entries":[{"frontmatter":{"title":"Intellij IDEA Configuration","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/intellij-idea-configuration/"}},{"frontmatter":{"title":"Building SCM-Manager from Source","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/build-from-source/"}},{"frontmatter":{"title":"Architecture overview","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/architecture-overview/"}},{"frontmatter":{"title":"Common pitfall occurred while developing the SCM V2","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/ui-common-pitfall/"}},{"frontmatter":{"title":"Permission Concept","subtitle":"Fine-grained permission for SCM-Manager v2","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/permission-concept/"}},{"frontmatter":{"title":"Decision Table","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/decision-table/"}},{"frontmatter":{"title":"Error Handling","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/error-handling/"}},{"frontmatter":{"title":"Styleguide","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/styleguide/"}},{"frontmatter":{"title":"Testing Guide","subtitle":"Howto write tests for SCM-Manager","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/testing-guide/"}},{"frontmatter":{"title":"Integration Tests","subtitle":"How to run integration tests","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/integration-tests/"}},{"frontmatter":{"title":"UI-Extensions","subtitle":"How to extend the SCM-Manager UI with plugins","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/ui-extensions/"}},{"frontmatter":{"title":"I18n","subtitle":"Howto do internationalization","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/i18n/"}},{"frontmatter":{"title":"Building Forms","subtitle":"Howto build forms for SCM-Manager","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/building-forms/"}},{"frontmatter":{"title":"Javadoc","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/javadoc/"}},{"frontmatter":{"title":"CLI Guidelines","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/cli-guideline/"}},{"frontmatter":{"title":"Definition of Done","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/definition-of-done/"}},{"frontmatter":{"title":"DOD for UI development","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/ui-dod/"}}]},{"section":"Plugin Development","entries":[{"frontmatter":{"title":"Create a plugin","subtitle":"Create a new SCM-Manager plugin","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/plugins/create/"}},{"frontmatter":{"title":"Migrate a v1 plugin","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/plugins/migrate-plugin-from-v1/"}},{"frontmatter":{"title":"Extension Points","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/plugins/extension-points/"}},{"frontmatter":{"title":"i18n for Plugins","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/plugins/i18n-for-plugins/"}},{"frontmatter":{"title":"Plugin Descriptor","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/plugins/plugin-descriptor/"}},{"frontmatter":{"title":"SCM-Manager v2 Plugin Development","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/plugins/plugin-development/"}},{"frontmatter":{"title":"Publish","subtitle":"Publish your Plugin","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/plugins/publish/"}}]}]},"versions":{"group":[{"fieldValue":"1.0.x"},{"fieldValue":"1.x"},{"fieldValue":"2.0.x"},{"fieldValue":"2.1.x"},{"fieldValue":"2.10.x"},{"fieldValue":"2.11.x"},{"fieldValue":"2.12.x"},{"fieldValue":"2.13.x"},{"fieldValue":"2.14.x"},{"fieldValue":"2.15.x"},{"fieldValue":"2.16.x"},{"fieldValue":"2.17.x"},{"fieldValue":"2.18.x"},{"fieldValue":"2.19.x"},{"fieldValue":"2.2.x"},{"fieldValue":"2.20.x"},{"fieldValue":"2.21.x"},{"fieldValue":"2.22.x"},{"fieldValue":"2.23.x"},{"fieldValue":"2.24.x"},{"fieldValue":"2.25.x"},{"fieldValue":"2.26.x"},{"fieldValue":"2.27.x"},{"fieldValue":"2.28.x"},{"fieldValue":"2.29.x"},{"fieldValue":"2.3.x"},{"fieldValue":"2.30.x"},{"fieldValue":"2.31.x"},{"fieldValue":"2.32.x"},{"fieldValue":"2.33.x"},{"fieldValue":"2.34.x"},{"fieldValue":"2.35.x"},{"fieldValue":"2.36.x"},{"fieldValue":"2.37.x"},{"fieldValue":"2.38.x"},{"fieldValue":"2.39.x"},{"fieldValue":"2.4.x"},{"fieldValue":"2.40.x"},{"fieldValue":"2.41.x"},{"fieldValue":"2.42.x"},{"fieldValue":"2.43.x"},{"fieldValue":"2.44.x"},{"fieldValue":"2.45.x"},{"fieldValue":"2.46.x"},{"fieldValue":"2.47.x"},{"fieldValue":"2.48.x"},{"fieldValue":"2.5.x"},{"fieldValue":"2.6.x"},{"fieldValue":"2.7.x"},{"fieldValue":"2.8.x"},{"fieldValue":"2.9.x"},{"fieldValue":"3.0.x"},{"fieldValue":"3.1.x"},{"fieldValue":"3.10.x"},{"fieldValue":"3.11.x"},{"fieldValue":"3.2.x"},{"fieldValue":"3.3.x"},{"fieldValue":"3.4.x"},{"fieldValue":"3.5.x"},{"fieldValue":"3.6.x"},{"fieldValue":"3.7.x"},{"fieldValue":"3.8.x"},{"fieldValue":"3.9.x"}]},"languages":{"group":[{"fieldValue":"de"},{"fieldValue":"en"}]},"markdownRemark":{"html":"<p>SCM-Manager v3 can be configured in several ways. We recommend using <code class=\"language-text\">config.yml</code> to have most of the settings in\none place. However, if required, each option in this configuration can also be set via environment variables.\nSee the relevant topics below for more information.</p>\n<h2 id=\"webserver-configuration\" style=\"position:relative;\"><a href=\"#webserver-configuration\" aria-label=\"webserver configuration permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Webserver Configuration</h2>\n<p>The listener host and port of your SCM-Server can directly be edited in the top level of your <code class=\"language-text\">config.yml</code>.\nIf you want your server without a context path (use <code class=\"language-text\">root path</code>), you can change this option to be <code class=\"language-text\">/</code>.</p>\n<p><strong>config.yml</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># This is the host adresse, `0.0.0.0` means it listens on every interface</span>\n<span class=\"token key atrule\">addressBinding</span><span class=\"token punctuation\">:</span> 0.0.0.0\n<span class=\"token comment\"># This is the exposed port for your application</span>\n<span class=\"token key atrule\">port</span><span class=\"token punctuation\">:</span> <span class=\"token number\">8080</span>\n<span class=\"token key atrule\">contextPath</span><span class=\"token punctuation\">:</span> /\n<span class=\"token key atrule\">httpHeaderSize</span><span class=\"token punctuation\">:</span> <span class=\"token number\">16384</span></code></pre></div>\n<p><strong>Environment variables</strong></p>\n<table>\n<thead>\n<tr>\n<th>Environment Variable</th>\n<th>Corresponding config.yml property</th>\n<th>Example</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>SCM_ADDRESS_BINDING</td>\n<td>addressBinding</td>\n<td>export SCM_ADDRESS_BINDING=0.0.0.0</td>\n</tr>\n<tr>\n<td>SCM_PORT</td>\n<td>port</td>\n<td>export SCM_PORT=8080</td>\n</tr>\n<tr>\n<td>SCM_CONTEXT_PATH</td>\n<td>contextPath</td>\n<td>export SCM_CONTEXT_PATH=/</td>\n</tr>\n<tr>\n<td>SCM_HTTP_HEADER_SIZE</td>\n<td>httpHeaderSize</td>\n<td>export SCM_HTTP_HEADER_SIZE=16384</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"ssl\" style=\"position:relative;\"><a href=\"#ssl\" aria-label=\"ssl permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>SSL</h2>\n<p>In order to use https with SCM-Server, you need a keystore with a certificate and the corresponding secret key.\nIn the following we will use openssl to create a self-signed certificate for demonstration purposes.</p>\n<p><strong>Warning</strong>: Do not use self-signed certificates in production, this is only for demonstration purposes.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">openssl req <span class=\"token parameter variable\">-new</span> <span class=\"token parameter variable\">-x509</span> <span class=\"token parameter variable\">-newkey</span> rsa:2048 <span class=\"token parameter variable\">-sha256</span> <span class=\"token parameter variable\">-keyout</span> tls.key <span class=\"token parameter variable\">-out</span> tls.crt</code></pre></div>\n<p>This command will ask a few questions about metadata for generated certificate:</p>\n<ul>\n<li>PEM pass phrase: This is a password to protect the scret key</li>\n<li>Country Name (2 letter code)</li>\n<li>State or Province Name (full name)</li>\n<li>Locality Name (eg, city)</li>\n<li>Organization Name (eg, company)</li>\n<li>Organizational Unit Name (eg, section)</li>\n<li>Common Name (eg, fully qualified host name)</li>\n<li>Email Address</li>\n</ul>\n<p>Make sure that the common name matches the fqdn, which you are using to access SCM-Manager.</p>\n<h3 id=\"browsers\" style=\"position:relative;\"><a href=\"#browsers\" aria-label=\"browsers permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Browsers</h3>\n<p>In order to use a self-signed certificate the certificate must be imported into you browser.</p>\n<h3 id=\"configure-git\" style=\"position:relative;\"><a href=\"#configure-git\" aria-label=\"configure git permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Configure Git</h3>\n<p>To use git with a self-signed certificate, we have to add the certificate path to the configuration.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">git</span> config http.sslCAInfo /complete/path/to/tls.crt</code></pre></div>\n<h3 id=\"configure-mercurial\" style=\"position:relative;\"><a href=\"#configure-mercurial\" aria-label=\"configure mercurial permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Configure Mercurial</h3>\n<p>To use mercurial with a self-signed certificate, we have to add the certificate path to the configuration.</p>\n<div class=\"gatsby-highlight\" data-language=\"ini\"><pre class=\"language-ini\"><code class=\"language-ini\"><span class=\"token section\"><span class=\"token punctuation\">[</span><span class=\"token section-name selector\">web</span><span class=\"token punctuation\">]</span></span>\n<span class=\"token key attr-name\">cacerts</span> <span class=\"token punctuation\">=</span> <span class=\"token value attr-value\">/complete/path/to/cert.pem</span></code></pre></div>\n<h3 id=\"create-keystore\" style=\"position:relative;\"><a href=\"#create-keystore\" aria-label=\"create keystore permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Create keystore</h3>\n<p>Create a keystore in pkcs12 format. This command can be used with the self-signed certificate from above or with a valid\ncertificate from an authority.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">openssl pkcs12 <span class=\"token parameter variable\">-inkey</span> tls.key <span class=\"token parameter variable\">-in</span> tls.crt <span class=\"token parameter variable\">-export</span> <span class=\"token parameter variable\">-out</span> keystore.pkcs12</code></pre></div>\n<p>If your secret key is protected with a passphrase, you must enter this first. You must then enter an export password to\nprotect your keystore.</p>\n<h3 id=\"server-configuration\" style=\"position:relative;\"><a href=\"#server-configuration\" aria-label=\"server configuration permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Server configuration</h3>\n<p>Adjust your <code class=\"language-text\">config.yml</code> to apply your prepared keystore with configured certificate or set them via environment variables.</p>\n<p><strong>config.yml</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">https</span><span class=\"token punctuation\">:</span>\n  <span class=\"token comment\"># If the key store path is not set, the https config will be ignored entirely.</span>\n  <span class=\"token comment\"># This must be set to your created keystore from above.</span>\n  <span class=\"token key atrule\">keyStorePath</span><span class=\"token punctuation\">:</span> /conf/keystore.pkcs12\n  <span class=\"token comment\"># The password of your keystore.</span>\n  <span class=\"token key atrule\">keyStorePassword</span><span class=\"token punctuation\">:</span> secret\n  <span class=\"token comment\"># The type of your keystore. Use pkcs12 or jks for java keystore.</span>\n  <span class=\"token key atrule\">keyStoreType</span><span class=\"token punctuation\">:</span> PKCS12\n  <span class=\"token comment\"># The port of your https connector</span>\n  <span class=\"token key atrule\">sslPort</span><span class=\"token punctuation\">:</span> <span class=\"token number\">443</span>\n  <span class=\"token comment\"># Automatically redirects incoming http requests to this https connector</span>\n  <span class=\"token key atrule\">redirectHttpToHttps</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span></code></pre></div>\n<p><strong>Environment variables</strong></p>\n<table>\n<thead>\n<tr>\n<th>Environment Variable</th>\n<th>Corresponding config.yml property</th>\n<th>Example</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>SCM_HTTPS_KEY_STORE_PATH</td>\n<td>https.keyStorePath</td>\n<td>export SCM_HTTPS_KEY_STORE_PATH=/conf/keystore.pkcs12</td>\n</tr>\n<tr>\n<td>SCM_HTTPS_KEY_STORE_PASSWORD</td>\n<td>https.keyStorePassword</td>\n<td>export SCM_HTTPS_KEY_STORE_PASSWORD=secret</td>\n</tr>\n<tr>\n<td>SCM_HTTPS_KEY_STORE_TYPE</td>\n<td>https.keyStoreType</td>\n<td>export SCM_HTTPS_KEY_STORE_TYPE=PKCS12</td>\n</tr>\n<tr>\n<td>SCM_HTTPS_SSL_PORT</td>\n<td>https.sslPort</td>\n<td>export SCM_HTTPS_PORT=443</td>\n</tr>\n<tr>\n<td>SCM_HTTPS_REDIRECT_HTTP_TO_HTTPS</td>\n<td>https.redirectHttpToHttps</td>\n<td>export SCM_HTTPS_REDIRECT_HTTP_TO_HTTPS=true</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"change-directories\" style=\"position:relative;\"><a href=\"#change-directories\" aria-label=\"change directories permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Change directories</h2>\n<p>The default directories are platform-specific and therefore could be different if you try scm-server on different\noperational systems. Paths starting with <code class=\"language-text\">/</code> are absolute to your file system. If you use relative paths without a\nstarting <code class=\"language-text\">/</code>, your configured path will be located relative to your base directory of your scm-server (\nlike <code class=\"language-text\">/opt/scm-server</code>\non unix-based packages).</p>\n<p>For technical reasons the tempDir is located at the top level of your <code class=\"language-text\">config.yml</code>. All other path-based config options\nare located under <code class=\"language-text\">webapp</code>.</p>\n<p><strong>config.yml</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">tempDir</span><span class=\"token punctuation\">:</span> /tmp\n\n<span class=\"token key atrule\">webapp</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">homeDir</span><span class=\"token punctuation\">:</span> ./scm<span class=\"token punctuation\">-</span>home\n  <span class=\"token key atrule\">workDir</span><span class=\"token punctuation\">:</span> /etc/scm/work</code></pre></div>\n<p><strong>Environment variables</strong></p>\n<table>\n<thead>\n<tr>\n<th>Environment Variable</th>\n<th>Corresponding config.yml property</th>\n<th>Example</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>SCM_TEMP_DIR</td>\n<td>tempDir</td>\n<td>export SCM_TEMP_DIR=/tmp</td>\n</tr>\n<tr>\n<td>SCM_WEBAPP_HOMEDIR</td>\n<td>webapp.homeDir</td>\n<td>export SCM_WEBAPP_HOMEDIR=./scm-home</td>\n</tr>\n<tr>\n<td>SCM_WEBAPP_WORKDIR</td>\n<td>webapp.workDir</td>\n<td>export SCM_WEBAPP_WORKDIR=/etc/scm/work</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"reverse-proxy\" style=\"position:relative;\"><a href=\"#reverse-proxy\" aria-label=\"reverse proxy permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Reverse proxy</h2>\n<p>If your SCM-Manager instance is behind a reverse proxy like NGINX, you most likely will have to enable\nX-Forward-Headers.\nThese HTTP headers are being appended to the requests which are redirected by your reverse proxy server. Without\nthis option set, your SCM-Server may run into connection issues. This option is disabled by default, because without a\nreverse proxy it could cause security issues.</p>\n<p>Many reverse proxies will also cache response streams. This can lead to timeouts, especially when working with large\nrepositories. To avoid this, you might want to increase the <code class=\"language-text\">idleTimeout</code> to a higher value, depending on the size of\nyour repositories (you might want to start with <code class=\"language-text\">300000</code>, that would be five minutes).</p>\n<p><strong>config.yml</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">forwardHeadersEnabled</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n<span class=\"token key atrule\">idleTimeout</span><span class=\"token punctuation\">:</span> <span class=\"token number\">300000</span></code></pre></div>\n<p><strong>Environment variables</strong></p>\n<table>\n<thead>\n<tr>\n<th>Environment Variable</th>\n<th>Corresponding config.yml property</th>\n<th>Example</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>SCM_FORWARD_HEADERS_ENABLED</td>\n<td>forwardHeadersEnabled</td>\n<td>export SCM_FORWARD_HEADERS_ENABLED=true</td>\n</tr>\n<tr>\n<td>SCM_IDLE_TIMEOUT</td>\n<td>idleTimeout</td>\n<td>export SCM_IDLE_TIMEOUT=300000</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"webapp\" style=\"position:relative;\"><a href=\"#webapp\" aria-label=\"webapp permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Webapp</h2>\n<p>The webapp configuration consists of anything that is not webserver or logging related.\nMost of the available options should be set to the recommended values of your default <code class=\"language-text\">config.yml</code> file.\nYou can also override these options with environment variables.</p>\n<p><strong>config.yml</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">webapp</span><span class=\"token punctuation\">:</span>\n  <span class=\"token comment\">## Sets explicit working directory for internal processes, empty means default java temp dir</span>\n  <span class=\"token key atrule\">workDir</span><span class=\"token punctuation\">:</span>\n  <span class=\"token comment\">## Home directory \"scm-home\" which is also set for classpath</span>\n  <span class=\"token key atrule\">homeDir</span><span class=\"token punctuation\">:</span> /var/lib/scm\n  <span class=\"token key atrule\">cache</span><span class=\"token punctuation\">:</span>\n    <span class=\"token key atrule\">dataFile</span><span class=\"token punctuation\">:</span>\n      <span class=\"token key atrule\">enabled</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n    <span class=\"token key atrule\">store</span><span class=\"token punctuation\">:</span>\n      <span class=\"token key atrule\">enabled</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n  <span class=\"token comment\"># name of initial admin user (this is normally set over the ui on the first start)</span>\n  <span class=\"token key atrule\">initialUser</span><span class=\"token punctuation\">:</span> scmadmin\n  <span class=\"token comment\"># password of initial admin user (this is normally set over the ui on the first start)</span>\n  <span class=\"token key atrule\">initialPassword</span><span class=\"token punctuation\">:</span> scmadmin\n  <span class=\"token comment\"># if true skip the creation of initial admin user completely</span>\n  <span class=\"token key atrule\">skipAdminCreation</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n  <span class=\"token comment\">## Warning: Enabling this option can lead to security issue.</span>\n  <span class=\"token key atrule\">endlessJwt</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n  <span class=\"token comment\">## Number of async threads</span>\n  <span class=\"token key atrule\">asyncThreads</span><span class=\"token punctuation\">:</span> <span class=\"token number\">4</span>\n  <span class=\"token comment\">## Max seconds to abort async execution</span>\n  <span class=\"token key atrule\">maxAsyncAbortSeconds</span><span class=\"token punctuation\">:</span> <span class=\"token number\">60</span>\n  <span class=\"token comment\">## Amount of central work queue workers</span>\n  <span class=\"token key atrule\">centralWorkQueue</span><span class=\"token punctuation\">:</span>\n    <span class=\"token key atrule\">workers</span><span class=\"token punctuation\">:</span> <span class=\"token number\">4</span>\n  <span class=\"token comment\">## Strategy for the working copy pool implementation [sonia.scm.repository.work.NoneCachingWorkingCopyPool, sonia.scm.repository.work.SimpleCachingWorkingCopyPool]</span>\n  <span class=\"token key atrule\">workingCopyPoolStrategy</span><span class=\"token punctuation\">:</span> sonia.scm.repository.work.SimpleCachingWorkingCopyPool\n  <span class=\"token comment\">## Amount of \"cached\" working copies</span>\n  <span class=\"token key atrule\">workingCopyPoolSize</span><span class=\"token punctuation\">:</span> <span class=\"token number\">5</span>\n  <span class=\"token comment\">## Settings for queryable stores, which are backed by an SQLite database.</span>\n  <span class=\"token comment\">## Timeouts and lifetimes are in seconds</span>\n  <span class=\"token key atrule\">queryableStores</span><span class=\"token punctuation\">:</span>\n    <span class=\"token key atrule\">maxPoolSize</span><span class=\"token punctuation\">:</span> <span class=\"token number\">10</span>\n    <span class=\"token key atrule\">connectionTimeout</span><span class=\"token punctuation\">:</span> <span class=\"token number\">30</span>\n    <span class=\"token key atrule\">idleTimeout</span><span class=\"token punctuation\">:</span> <span class=\"token number\">600</span>\n    <span class=\"token key atrule\">maxLifetime</span><span class=\"token punctuation\">:</span> <span class=\"token number\">1800</span>\n    <span class=\"token key atrule\">leakDetectionThreshold</span><span class=\"token punctuation\">:</span> <span class=\"token number\">30</span>\n\n</code></pre></div>\n<p><strong>Environment variables</strong></p>\n<table>\n<thead>\n<tr>\n<th>Environment Variable</th>\n<th>Corresponding config.yml property</th>\n<th>Example</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>SCM_WEBAPP_WORKDIR</td>\n<td>webapp.workDir</td>\n<td>export SCM_WEBAPP_WORKDIR=/tmp/scm-work</td>\n</tr>\n<tr>\n<td>SCM_WEBAPP_HOMEDIR</td>\n<td>webapp.homeDir</td>\n<td>export SCM_WEBAPP_HOMEDIR=/var/lib/scm</td>\n</tr>\n<tr>\n<td>SCM_WEBAPP_CACHE_DATAFILE_ENABLED</td>\n<td>webapp.cache.datafile.enabled</td>\n<td>export SCM_WEBAPP_CACHE_DATAFILE_ENABLED=true</td>\n</tr>\n<tr>\n<td>SCM_WEBAPP_CACHE_STORE_ENABLED</td>\n<td>webapp.cache.store.enabled</td>\n<td>export SCM_WEBAPP_CACHE_STORE_ENABLED=true</td>\n</tr>\n<tr>\n<td>SCM_WEBAPP_ENDLESSJWT</td>\n<td>webapp.endlessJwt</td>\n<td>export SCM_WEBAPP_ENDLESSJWT=false</td>\n</tr>\n<tr>\n<td>SCM_WEBAPP_ASYNCTHREADS</td>\n<td>webapp.asyncThreads</td>\n<td>export SCM_WEBAPP_ASYNCTHREADS=4</td>\n</tr>\n<tr>\n<td>SCM_WEBAPP_MAXASYNCABORTSECONDS</td>\n<td>webapp.maxAsyncAbortSeconds</td>\n<td>export SCM_WEBAPP_MAXASYNCABORTSECONDS=60</td>\n</tr>\n<tr>\n<td>SCM_WEBAPP_CENTRALWORKQUEUE_WORKERS</td>\n<td>webapp.centralWorkQueue.workers</td>\n<td>export SCM_WEBAPP_CENTRALWORKQUEUE_WORKERS=4</td>\n</tr>\n<tr>\n<td>SCM_WEBAPP_WORKINGCOPYPOOLSTRATEGY</td>\n<td>webapp.workingCopyPoolStrategy</td>\n<td>export SCM_WEBAPP_WORKINGCOPYPOOLSTRATEGY=sonia.scm.repository.work.SimpleCachingWorkingCopyPool</td>\n</tr>\n<tr>\n<td>SCM_WEBAPP_WORKINGCOPYPOOLSIZE</td>\n<td>webapp.workingCopyPoolSize</td>\n<td>export SCM_WEBAPP_WORKINGCOPYPOOLSIZE=5</td>\n</tr>\n<tr>\n<td>SCM_WEBAPP_INITIALUSER</td>\n<td>webapp.initialUser</td>\n<td>export SCM_WEBAPP_INITIALUSER=scmadmin</td>\n</tr>\n<tr>\n<td>SCM_WEBAPP_INITIALPASSWORD</td>\n<td>webapp.initialPassword</td>\n<td>export SCM_WEBAPP_INITIALPASSWORD=scmadmin</td>\n</tr>\n<tr>\n<td>SCM_WEBAPP_SKIPADMINCREATION</td>\n<td>webapp.skipAdminCreation</td>\n<td>export SCM_WEBAPP_SKIPADMINCREATION=true</td>\n</tr>\n<tr>\n<td>SCM_WEBAPP_QUERYABLESTORES_MAXPOOLSIZE</td>\n<td>webapp.queryableStores.maxPoolSize</td>\n<td>export SCM_WEBAPP_QUERYABLESTORES_MAXPOOLSIZE=20</td>\n</tr>\n<tr>\n<td>SCM_WEBAPP_QUERYABLESTORES_CONNECTIONTIMEOUT</td>\n<td>webapp.queryableStores.connectionTimeout</td>\n<td>export SCM_WEBAPP_QUERYABLESTORES_CONNECTIONTIMEOUT=30</td>\n</tr>\n<tr>\n<td>SCM_WEBAPP_QUERYABLESTORES_IDLETIMEOUT</td>\n<td>webapp.queryableStores.idleTimeout</td>\n<td>export SCM_WEBAPP_QUERYABLESTORES_IDLETIMEOUT=600</td>\n</tr>\n<tr>\n<td>SCM_WEBAPP_QUERYABLESTORES_MAXLIFETIME</td>\n<td>webapp.queryableStores.maxLifetime</td>\n<td>export SCM_WEBAPP_QUERYABLESTORES_MAXLIFETIME=1800</td>\n</tr>\n<tr>\n<td>SCM_WEBAPP_QUERYABLESTORES_LEAKDETECTIONTHRESHOLD</td>\n<td>webapp.queryableStores.leakDetectionThreshold</td>\n<td>export SCM_WEBAPP_QUERYABLESTORES_LEAKDETECTIONTHRESHOLD=1800</td>\n</tr>\n</tbody>\n</table>","description":"SCM-Manager v3 can be configured in several ways. We recommend using  to have most of the settings in\none place. However, if required, each option in this…","tableOfContents":"<ul>\n<li>\n<p><a href=\"#webserver-configuration\">Webserver Configuration</a></p>\n</li>\n<li>\n<p><a href=\"#ssl\">SSL</a></p>\n<ul>\n<li><a href=\"#browsers\">Browsers</a></li>\n<li><a href=\"#configure-git\">Configure Git</a></li>\n<li><a href=\"#configure-mercurial\">Configure Mercurial</a></li>\n<li><a href=\"#create-keystore\">Create keystore</a></li>\n<li><a href=\"#server-configuration\">Server configuration</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"#change-directories\">Change directories</a></p>\n</li>\n<li>\n<p><a href=\"#reverse-proxy\">Reverse proxy</a></p>\n</li>\n<li>\n<p><a href=\"#webapp\">Webapp</a></p>\n</li>\n</ul>","frontmatter":{"title":"SCM-Server Configuration","subtitle":"Various configuration options for the SCM-Server","displayToc":true,"description":null,"keywords":null,"image":null}}},"pageContext":{"slug":"/docs/3.9.x/en/administration/scm-server/","version":"3.9.x","latestVersion":"3.11.x","latestPageVersion":"3.11.x","language":"en","relativePath":"/administration/scm-server/","canonicalPath":"/docs/latest/en/administration/scm-server/","latestRootPath":"/docs/3.11.x/en/"}},
    "staticQueryHashes": ["1973669194","2742214048","2956773653","2957019495","698804963"]}