---
updatedAt: 2026-06-19T07:16:00.000Z
agentTools:
  siteIndex: https://docs.jfrog.com/llms.txt
  projectIndex: https://docs.jfrog.com/installation/llms.txt
---

# Override the Default System YAML File in Helm Installation

Override system.yaml in Helm deployments using extraSystemYaml, extraEnvironmentVariables, or systemYamlOverride secret.

The [system.yaml](system-yaml-configuration-file) is one of the most important configuration files for JFrog products. The Helm charts populate it with default values you can modify in `values.yaml`, such as `artifactory.database.maxOpenConnections`.

In advanced cases, you may need values that `values.yaml` cannot set directly.

You can use the following methods to override the `system.yaml` in the order of preference:

1. Using `extraSystemYaml`
2. Using `extraEnvironmentVariables`
3. Using External `system.yaml` (`systemYamlOverride` secret)

### Using extraSystemYaml

<Callout icon="📘" theme="info">
**Note**

Starting from Artifactory version 107.84.x, use `extraSystemYaml` to override the `system.yaml` file.
</Callout>

Add the values to override in the following sections:

* `artifactory.extraSystemYaml` for Artifactory
* `xray.extraSystemYaml` for Xray
* `distribution.extraSystemYaml` for Distribution

The chart merges entries under `extraSystemYaml` with the `system.yaml` file at (<a href="https://github.com/jfrog/charts/blob/master/stable/artifactory/files/system.yaml" target="_blank">files/system.yaml</a>) to create the final `system.yaml`. Add values correctly — the product silently ignores typos and wrong keys:

**Artifactory**

```yaml
artifactory:
  extraSystemYaml:
    shared:
      security:
        bootstrapKeysReadTimeoutSecs: 120
```

**Xray**

```yaml
xray:
  extraSystemYaml:
    shared:
      security:
        bootstrapKeysReadTimeoutSecs: 120
```

**Distribution**

```yaml
distribution:
  extraSystemYaml:
    shared:
      security:
        bootstrapKeysReadTimeoutSecs: 120
```

### Using extraEnvironmentVariables

You can also modify `system.yaml` parameters via environment variables. Variables must start with **JF**, use underscores between key segments, and use all-uppercase keys.

For example, the `system.yaml` parameter `shared.security.bootstrapKeysReadTimeoutSecs=120` maps to the environment variable `JF_SHARED_SECURITY_BOOTSTRAPKEYSREADTIMEOUTSECS`.

Add the values to override in the following sections:

* `artifactory.extraEnvironmentVariables` for Artifactory
* `xray.extraEnvironmentVariables` for Xray
* `distribution.extraEnvironmentVariables` for Distribution

**Artifactory**

```yaml
artifactory:
  extraEnvironmentVariables:
    - name: JF_SHARED_SECURITY_BOOTSTRAPKEYSREADTIMEOUTSECS
      value: "120"
```

**Xray**

```yaml
xray:
  extraEnvironmentVariables:
    - name: JF_SHARED_SECURITY_BOOTSTRAPKEYSREADTIMEOUTSECS
      value: "120"
```

**Distribution**

```yaml
distribution:
  extraEnvironmentVariables:
    - name: JF_SHARED_SECURITY_BOOTSTRAPKEYSREADTIMEOUTSECS
      value: "120"
```

### Using External System.yaml Secret

<Callout icon="⚠️" theme="warning">
**Warning**

This method is not recommended because `system.yaml` is already generated under `files/system.yaml`, by incorporating values from `values.yaml`. Using this method forces you to manage `system.yaml` manually and should only be used for legacy regressions.
</Callout>

Follow these steps to create an external `system.yaml` as a Kubernetes secret:

1. Create an external `system.yaml` file for one of the services. For example, Xray, and create an external `system.yaml` with the filename (`xray-cus-sy.yaml`):

   ```yaml
   configVersion: 1
   shared:
       logging:
           consoleLog:
               enabled: true
       jfrogUrl: "http://artifactory-artifactory.rt:8082"
       database:
           type: "postgresql"
           driver: "org.postgresql.Driver"
           username: "xray"
           url: "postgres://xray-postgresql:5432/xraydb?sslmode=disable"
   server:
       mailServer: ""
       indexAllBuilds: "true"
   ```
2. Create a Kubernetes secret for the external `system.yaml` file (`xray-cus-sy.yaml`):

   ```bash
   kubectl create secret generic sy --from-file ./xray-cus-sy.yaml
   ```
3. Reference the secret and its key under the `systemYamlOverride` section. These steps are the same for **Artifactory** and **Distribution** charts:

   ```yaml
   systemYamlOverride:
     existingSecret: sy
     dataKey: xray-cus-sy.yaml
   ```

## Related Topics

* [Configure JFrog Platform in an Air-Gapped Environment](configure-jfrog-platform-in-an-air-gapped-environment)
* [All Products - Customization](all-products-customization)
* [System YAML Configuration File](system-yaml-configuration-file)
* [Install the JFrog Platform Using Helm Chart](install-the-jfrog-platform-using-helm-chart)
* [Helm Charts for Advanced Users](helm-charts-for-advanced-users)

## Frequently Asked Questions

This section provides answers to frequently asked questions.

<Accordion title="FAQs" icon="plus">

##### Q: What is the preferred method for overriding `system.yaml` values in a Helm deployment?

**A:** The preferred method is `extraSystemYaml`, available from Artifactory version 107.84.x onward. The chart merges entries under `extraSystemYaml` with the base `system.yaml` at `files/system.yaml` to produce the final configuration file. For Artifactory, set values under `artifactory.extraSystemYaml`; for Xray, use `xray.extraSystemYaml`; for Distribution, use `distribution.extraSystemYaml`.

##### Q: How do environment variable names map to `system.yaml` keys?

**A:** Variables must start with `JF`, use underscores between key segments, and use all-uppercase keys. For example, the `system.yaml` parameter `shared.security.bootstrapKeysReadTimeoutSecs` maps to the environment variable `JF_SHARED_SECURITY_BOOTSTRAPKEYSREADTIMEOUTSECS`, set under `artifactory.extraEnvironmentVariables`.

##### Q: Why is the `systemYamlOverride` (external `system.yaml` secret) method not recommended?

**A:** This method is not recommended because `system.yaml` is already generated by the chart by incorporating values from `values.yaml`. Using `systemYamlOverride` forces manual management of the entire `system.yaml` file and should only be used for legacy regressions. See [system.yaml configuration](system-yaml-configuration-file) for details on the standard fields.

##### Q: What happens if I add a typo or wrong key under `extraSystemYaml`?

**A:** The product silently ignores typos and incorrect keys. There is no validation error — the key is simply not applied. Always verify that the keys you set under `extraSystemYaml` match the exact paths defined in the product's `system.yaml` schema.

</Accordion>