# Configuration Reference

Each service is configured via environment variables.
Please see a GitHub readme section for each service for the full list of configuration options:


## Ingest

<EnvironmentVariables>
  <Variable name={'PORT'} required={true} defaultValue="3049">
    HTTP port where Ingest will be available.
  </Variable>
  <Variable name={'INGEST_PUBLIC_URL'} required={true}>
    Public url where ingest service is deployed and available from internet, usually it's load balancer or reverse proxy.
    E.g. https://data.jitsu.mycompany.com. Should contain protocol and port (if it's not default).
  </Variable>
  <Variable name={['INGEST_REPOSITORY_URL', 'INGEST_REPOSITORY_AUTH_TOKEN']} required={true}>
    <p>
      <code>INGEST_REPOSITORY_URL</code> is an URL of console's export endpoint that returns configuration of `streams-with-destinations` entities:
      <code><b>https://$console-endpoint</b>/api/admin/export/streams-with-destinations</code>.
    </p>
    <p>
      <code>INGEST_REPOSITORY_AUTH_TOKEN</code> is used to authorize request to console. It must start with <code>service-admin-account:</code> prefix.
      E.g.: <code>service-admin-account:console-token</code>
    </p>
    <p>See also <code>CONSOLE_AUTH_TOKENS</code> of console configuration</p>
  </Variable>
  <Variable name={'INGEST_REPOSITORY_REFRESH_PERIOD_SEC'} defaultValue="2">
    Period in seconds for refreshing configuration from console's <code>INGEST_REPOSITORY_URL</code>.
  </Variable>
  <Variable name={'INGEST_KAFKA_BOOTSTRAP_SERVERS'} required={true}>
    List of Kafka brokers separated by comma. Each broker should be in format <code>host:port</code>.
  </Variable>
  <Variable name={'INGEST_KAFKA_SSL'}>
    If SSL should be enabled for Kafka
  </Variable>
  <Variable name={'INGEST_KAFKA_SSL_SKIP_VERIFY'}>
    Skip SSL verification of kafka server certificate.
  </Variable>
  <Variable name={'INGEST_KAFKA_SASL'}>
    Kafka authorization as JSON object. E.g.: <code>{'{"mechanism": "SCRAM-SHA-256", "username": "user", "password": "password"}'}</code>
  </Variable>
 <Variable name={['INGEST_ROTOR_URL', 'INGEST_ROTOR_AUTH_KEY']} required={true}>
    <p>
      <code>INGEST_ROTOR_URL</code> is an URL of the main endpoint of Rotor service.<br/>Example: <code>http://rotor:3401</code>.<br/><b>Required</b> for running functions on device destinations
    </p>
    <p>
      <code>INGEST_ROTOR_AUTH_KEY</code> is used to authorized HTTP-request to Rotor.<br/>See <code>ROTOR_AUTH_TOKENS</code>, <code>ROTOR_TOKEN_SECRET</code> and <code>ROTOR_RAW_AUTH_TOKENS</code> in the <a href="#rotor">Rotor section</a>
    </p>
  </Variable>
  <Variable name={'INGEST_CLICKHOUSE_HOST'} required={false}>
    ClickHouse host and port to store incoming events log. E.g.: <code>clickhouse.example.com:9440</code>
  </Variable>
  <Variable name={'INGEST_CLICKHOUSE_DATABASE'} required={false}>
    ClickHouse database to store incoming events log.
  </Variable>
  <Variable name={['INGEST_CLICKHOUSE_USERNAME', 'INGEST_CLICKHOUSE_PASSWORD']} required={false}>
   ClickHouse username and password.
  </Variable>
  <Variable name={'INGEST_CLICKHOUSE_SSL'} required={false}>
    Enable SSL for Clickhouse connection
  </Variable>
  <Variable name={`INGEST_LOG_FORMAT`} defaultValue="text">
    Format of application logs (that are written to stdout). Possible values: `text` or `json`
  </Variable>
  <Variable name={['INGEST_FAILOVER_LOGGER_ENABLED', 'INGEST_FAILOVER_LOGGER_ROTATION_PERIOD_MINUTES', 'INGEST_FAILOVER_LOGGER_MAX_SIZE_MB', 'INGEST_FAILOVER_LOGGER_COMPRESS']} required={false}>
   Failover logger is used to store events that failed to be sent to Kafka. 
   Default values:
    <ul>
      <li><code>INGEST_FAILOVER_LOGGER_ENABLED</code> - <code>false</code></li>
      <li><code>INGEST_FAILOVER_LOGGER_ROTATION_PERIOD_MINUTES</code> - <code>60</code></li>
      <li><code>INGEST_FAILOVER_LOGGER_MAX_SIZE_MB</code> - <code>100</code></li>
      <li><code>INGEST_FAILOVER_LOGGER_COMPRESS</code> - <code>true</code></li>
    </ul>
  </Variable>
  <Variable name={['INGEST_FAILOVER_LOGGER_BASE_PATH', 'INGEST_FAILOVER_LOGGER_LOCAL_MAX_OLD_FILES']} required={false}>
   Controls how failover logger files stored on local disk.
   Default values:
    <ul>
      <li><code>INGEST_FAILOVER_LOGGER_BASE_PATH</code> - <code>/tmp/kafka_failover</code></li>
      <li><code>INGEST_FAILOVER_LOGGER_LOCAL_MAX_OLD_FILES</code> - <code>10</code></li>
    </ul>
  </Variable>
  <Variable name={['INGEST_FAILOVER_LOGGER_S3_ENABLED', 'INGEST_FAILOVER_LOGGER_S3_BUCKET', 'INGEST_FAILOVER_LOGGER_S3_PREFIX', 'INGEST_FAILOVER_LOGGER_S3_REGION' ]} required={false}>
   Allows to set S3 destination for failover logger files.
  </Variable>
</EnvironmentVariables>

## Bulker

See list of all options on [Bulker github](https://github.com/jitsucom/bulker/blob/main/.docs/server-config.md)

## Rotor

<EnvironmentVariables>
  <Variable name="PORT" defaultValue={3401}>
    HTTP port where Rotor will be available.
  </Variable>
  <Variable name={['ROTOR_AUTH_TOKENS', 'ROTOR_TOKEN_SECRET', `ROTOR_RAW_AUTH_TOKENS`]} required={true}>
    <p>
      <code>ROTOR_AUTH_TOKENS</code> is a list of hashed auth tokens that authorizes user in HTTP interface separated by comma. Each must have format:
      <code>$salt.$hash</code> where <code>$salt</code> should be random string. Hash is <code>hex(sha512($token + $salt + ROTOR_TOKEN_SECRET)</code>.
    </p>
    <p>
      To hash token, use following command in the root of this repository: <code>pnpm install && ROTOR_TOKEN_SECRET=xxxx pnpm tool:hash $token</code>
    </p>
    <p>
      <code>ROTOR_RAW_AUTH_TOKENS</code> can be used instead of <code>ROTOR_AUTH_TOKENS</code> to provide a comma-separared list of raw takens instead of hases. It offers simplicity at cost of
      lower security.
    </p>
  </Variable>
  <Variable name={['REPOSITORY_BASE_URL', 'REPOSITORY_AUTH_TOKEN']} required={true}>
    <p>
      <code>REPOSITORY_BASE_URL</code> is an URL of console's export endpoint that returns configuration of `streams-with-destinations` entities:
      <code><b>https://$console-endpoint</b>/api/admin/export</code>.
    </p>
    <p>
      <code>REPOSITORY_AUTH_TOKEN</code> is used to authorize request to console. It must start with <code>service-admin-account:</code> prefix.
      E.g.: <code>service-admin-account:console-token</code>
    </p>
    <p>See also <code>CONSOLE_AUTH_TOKENS</code> of console configuration</p>
  </Variable>
  <Variable name={"REPOSITORY_REFRESH_PERIOD_SEC"} defaultValue={2}>
    Period in seconds for refreshing configuration from console's export endpoint.
  </Variable>
  <Variable name={'CLICKHOUSE_HOST'} required={false}>
    ClickHouse host and port to store Events Log. E.g.: <code>clickhouse.example.com:9440</code>
    Only HTTP(s) protocol is supported.
  </Variable>
  <Variable name={'CLICKHOUSE_DATABASE'} required={false}>
    ClickHouse database to store Events Log.
  </Variable>
  <Variable name={['CLICKHOUSE_USERNAME', 'CLICKHOUSE_PASSWORD']} required={false}>
   ClickHouse username and password.
  </Variable>
  <Variable name={'CLICKHOUSE_SSL'} required={false}>
    Enable SSL for Clickhouse connection
  </Variable>
  <Variable name={['BULKER_URL', 'BULKER_AUTH_KEY']} required={true}>
    <p>
      <code>BULKER_URL</code> is an URL of Bulker service. Rotor will use it to send event intended to warehouse destinations
    </p>
    <p>
      <code>BULKER_AUTH_KEY</code> is user to authentificated HTTP-request to Bulker. Should be one of{" "}
      <a href="https://github.com/jitsucom/bulker/blob/main/.docs/server-config.md#bulker_auth_tokens"><code>BULKER_AUTH_KEYS</code> you configured in Bulker</a>
    </p>
    Used for Events Logs feature.
  </Variable>
  <Variable name={'KAFKA_BOOTSTRAP_SERVERS'} required={true}>
    List of Kafka brokers separated by comma. Each broker should be in format <code>host:port</code>.
  </Variable>
  <Variable name={'KAFKA_SSL'}>
    If SSL should be enabled for Kafka
  </Variable>
  <Variable name={['KAFKA_SSL_CA', 'KAFKA_SSL_CA_FILE']} required={false}>
   Custom CA certificate for verifying the Kafka server certificate. <code>KAFKA_SSL_CA</code> is a certificate in PEM format, <code>KAFKA_SSL_CA_FILE</code> is a path to the file with the certificate.
  </Variable>
  <Variable name={'KAFKA_SSL_SKIP_VERIFY'}>
    Skip SSL verification of kafka server certificate.
  </Variable>
  <Variable name={'KAFKA_SASL'}>
    Kafka authorization as JSON object. E.g.: <code>{'{"mechanism": "SCRAM-SHA-256", "username": "user", "password": "password"}'}</code>
  </Variable>
  <Variable name={'MONGODB_URL'} required={true}>
    <p>
      MongoDB is used for  <a href="/docs/functions/runtime#persistent-storage">Functions Persistent Storage</a> and <a href="/docs/features/identity-stitching">Identity Stitching</a>.
    </p>
    <p>
      The value starts with <code>mongodb://</code> and has the following format: <code>mongodb://$user:$password@$host:$port/$database</code>
    </p>
    <p>
      To smoothly migrate from <code>REDIS_URL</code> you need to set <code>REDIS_URL</code> and <code>MONGODB_URL</code> at the same time.
      Rotor will look for records both in MongoDB and Redis, but new records will be added only to MongoDB.
      When you are sure that MongoDB is populated with enough data, you can remove <code>REDIS_URL</code> from the configuration.
    </p>
  </Variable>
  <Variable name={['REDIS_URL','REDIS_SENTINEL_ADDRESS']}>
    Redis connection string. Always start with <code>redis://</code>: <code>redis://$user:$password:localhost:6379</code>.<br/>
    Redis Sentinel Address: `sentinel1:26379,sentinel2:26379,sentinel3:26379`<br/>
    Can be used for <a href="/docs/functions/runtime#persistent-storage">Functions Persistent Storage</a> as alternative to MongoDB.
  </Variable>
  <Variable name={'METRICS_DESTINATION_ID'}>
    Id of Bulker destination where Rotor will send event metrics.{" "}
    Only <code>clickhouse</code> destination is supported.{" "}
    If you don't want to send metrics, you can skip this option.
  </Variable>
  <Variable name={'METRICS_DESTINATION_ID'}>
  </Variable>
  <Variable name={'CONCURRENCY'} defaultValue={10}>
  </Variable>
  <Variable name={'MESSAGES_RETRY_COUNT'} defaultValue={3}>
    Maximum number of retries for failed messages.
  </Variable>
  <Variable name={'MESSAGES_RETRY_BACKOFF_BASE'} defaultValue={10}>
    Base value for exponential backoff for failed messages.{" "}
    For example, if <code>MESSAGES_RETRY_COUNT</code> is 3 and base is 10, then retry delays will be 10, 100, 1000 minutes
  </Variable>
  <Variable name={'MESSAGES_RETRY_BACKOFF_MAX_DELAY'} defaultValue={1440}>
    Defines maximum possible retry delay in minutes. Default: 24 hours
  </Variable>
  <Variable name={['MAXMIND_LICENSE_KEY','MAXMIND_URL','MAXMIND_S3_BUCKET','MAXMIND_S3_REGION','MAXMIND_S3_ACCESS_KEY_ID','MAXMIND_S3_SECRET_ACCESS_KEY','MAXMIND_S3_ENDPOINT','MAXMIND_S3_FORCE_PATH_STYLE']} optional>
    MaxMind database used for GeoIP enrichment.{" "}

    MaxMind database can be obtained from MaxMind servers using <code>MAXMIND_LICENSE_KEY</code>, from custom `MAXMIND_URL` or from S3 or compatible storage.
  </Variable>
  <Variable name={'MAXMIND_LOCALE'} defaultValue={"en"}>
    Use localized geographic names.{" "} <a href="https://maxmind.github.io/GeoIP2-node/interfaces/Names.html">Supported locales</a>
  </Variable>
  <Variable name={'LOG_FORMAT'} defaultValue={"text"}>
    Format of rotor application logs. Possible values: <code>text</code> or <code>json</code>
  </Variable>
</EnvironmentVariables>




## Console

<EnvironmentVariables>
  <Variable name={'PORT'} defaultValue={3000}>
    HTTP port where Console will be available.
  </Variable>
  <Variable name={'JITSU_PUBLIC_URL'} required={true}>
    This is a URL where Jitsu console will be publicly available, usually a load-balancer / reverse proxy address. E.g.: <code>https://your-domain/</code>
  </Variable>
  <Variable name={['CONSOLE_AUTH_TOKENS', 'CONSOLE_TOKEN_SECRET', `CONSOLE_RAW_AUTH_TOKENS`]} required={true}>
    <p>
      <code>CONSOLE_AUTH_TOKENS</code> is a list of hashed auth tokens that authorizes user in HTTP interface separated by comma. Each must have format:
      <code>$salt.$hash</code> where <code>$salt</code> should be random string. Hash is <code>hex(sha512($token + $salt + CONSOLE_TOKEN_SECRET)</code>.
    </p>
    <p>
      To hash token, use following command in the root of this repository: <code>pnpm install && CONSOLE_TOKEN_SECRET=xxxx pnpm tool:hash $token</code>
    </p>
    <p>
      <code>CONSOLE_RAW_AUTH_TOKENS</code> can be used instead of <code>CONSOLE_AUTH_TOKENS</code> to provide a comma-separared list of raw takens instead of hases. It offers simplicity at cost of
      lower security.
    </p>
  </Variable>
  <Variable name={'DATABASE_URL'} required={true}>
    <p>
      PostgreSQL connection string. <code>postgres://$user:$password@localhost:$port/database?<b>sslmode=no-verify</b>&<b>schema=newjitsu</b></code>
    </p>
    <p><b>
      <code>schema</code> must be <code>newjitsu</code>, and <code>sslmode</code> must be <code>no-verify</code>
    </b></p>
  </Variable>
  <Variable name={['BULKER_URL', 'BULKER_AUTH_KEY']} required={true}>
    <p>
      <code>BULKER_URL</code> is an url of Bulker service. Used for pulling event logs. E.g.: <code>https://bulker.your-domain.com</code>
    </p>
    <p>
      <code>BULKER_AUTH_KEY</code> is used to authorized HTTP-request to Bulker. See <code>BULKER_AUTH_TOKENS</code>, <code>BULKER_TOKEN_SECRET</code> and <code>BULKER_RAW_AUTH_TOKENS</code>
      in <a href="https://github.com/jitsucom/bulker/blob/main/.docs/server-config.md">Bulker configuration</a>
    </p>
  </Variable>
 <Variable name={['ROTOR_URL', 'ROTOR_AUTH_KEY']} required={true}>
    <p>
      <code>ROTOR_URL</code> is an url of the Rotor service. E.g.: <code>http://rotor:3401</code>
    </p>
    <p>
      <code>ROTOR_AUTH_KEY</code> is used to authorized HTTP-request to Rotor. See <code>ROTOR_AUTH_TOKENS</code>, <code>ROTOR_TOKEN_SECRET</code> and <code>ROTOR_RAW_AUTH_TOKENS</code> in the <a href="#rotor">Rotor section</a>
    </p>
  </Variable>
  <Variable name={['GITHUB_CLIENT_ID', 'GITHUB_CLIENT_SECRET']}>
    <p>To enable GitHub OAuth for Jitsu.</p>
    <p>You'll need to create a GitHub OAuth application to get those values:</p>
    <ol>
      <li>Go to <a href="https://github.com/settings/developers">GitHub Developer settings</a> &raquo; <strong>OAuth Apps</strong> &raquo; <strong>New OAuth App</strong>.</li>
      <li>Put any value to <code>Application name</code>.</li>
      <li>Set <code>Homepage URL</code> and <code>Authorization callback URL</code> with value of <code>JITSU_PUBLIC_URL</code>.</li>
      <li>Press <code>Register application</code> button.</li>
      <li>Press <code>Generate a new client secret</code> button.</li>
      <li>Copy <code>Client ID</code> and <code>Client Secret</code> values to <code>.env</code> file to <code>GITHUB_CLIENT_ID</code> and <code>GITHUB_CLIENT_SECRET</code> variables respectively.</li>
    </ol>

  </Variable>
 <Variable name={'AUTH_OIDC_PROVIDER'}>
    <p>To enable OpenID Connect based authentication for Jitsu. </p>
    <p>Expected json object with the following properties: <code>issuer</code> (the issuer domain in valid URL format), <code>clientId</code>, and <code>clientSecret</code></p>
    <p>The well-known configuration endpoint for the provider is automatically set based on the issuer, and
the default authorization request includes scopes for OpenID, <b>email</b>, and profile information.</p>
    <p>Auth0 Example: <code>{'{"issuer":"https://{yourDomain}.us.auth0.com/","clientId":"***","clientSecret":"***"}'}</code></p>
  </Variable>
  <Variable name={'JITSU_INGEST_PUBLIC_URL'} required={true}>
    Url where Ingest service is publicly available. See <code>INGEST_PUBLIC_URL</code> param of `ingest` service for details.
  </Variable>
  <Variable defaultValue={false} name={'SYNCS_ENABLED'}>
    Whet set to <code>true</code> enables Connectors Syncs feature in Jitsu Console UI. Requires <code>syncctl</code> service
  </Variable>
  <Variable required={true} name={['SYNCCTL_URL', 'SYNCCTL_AUTH_KEY']}>
    Required if <code>SYNCS_ENABLED=true</code>. <code>SYNCCTL_URL</code> is an URL of the main endpoint of Syncctl service. <code>SYNCCTL_AUTH_KEY</code> is Syncctl service authentication key: one
    of <code>SYNCCTL_AUTH_KEYS</code> or <code>SYNCCTL_RAW_AUTH_TOKENS</code> configured in Syncctl
  </Variable>
  <Variable required={false} name={['GOOGLE_SCHEDULER_KEY']}>
    For scheduling connectors syncs <a href="https://cloud.google.com/scheduler">Google Cloud Scheduler</a> is required. This is a Google Service Account Key in JSON format. If not set, you'll still
    be able to schedule syncs manually through Jitsu Console UI or via API.
  </Variable>
 <Variable name={'CLICKHOUSE_HOST'} required={false}>
    ClickHouse host and port where Events Log is stored. E.g.: <code>clickhouse.example.com:9440</code>
    Only HTTP(s) protocol is supported.
  </Variable>
  <Variable name={'CLICKHOUSE_DATABASE'} required={false}>
    ClickHouse database to where Events Log is stored.
  </Variable>
  <Variable name={'CLICKHOUSE_CLUSTER'} required={false}>
    ClickHouse cluster id to properly create replicate tables for Events Log. E.g.: <code>jitsu_cluster</code>
  </Variable>
  <Variable name={['CLICKHOUSE_USERNAME', 'CLICKHOUSE_PASSWORD']} required={false}>
   ClickHouse username and password.
  </Variable>
  <Variable name={'CLICKHOUSE_SSL'} required={false}>
    Enable SSL for Clickhouse connection
  </Variable>

  [//]: # (<Variable name={['CLICKHOUSE_URL', 'CLICKHOUSE_USERNAME', 'CLICKHOUSE_PASSWORD']}></Variable>)

  [//]: # (<Variable defaultValue={"newjitsu_metrics"} name={['CLICKHOUSE_METRICS_SCHEMA']}>)

  [//]: # ( Name of ClickHouse schema where Rotor service sends events metrics.)

  [//]: # (</Variable>)
  <Variable name={['SMTP_CONNECTION_STRING', 'EMAIL_TRANSACTIONAL_SENDER','EMAIL_TRANSACTIONAL_REPLY_TO','BCC_EMAIL']} required={false}>
     <b id="email_configuration">Email sending configuration:</b><br/>
     <code>SMTP_CONNECTION_STRING</code> is a connection string to SMTP server in format: <code>smtp://user:password@localhost:587</code><br/><code>EMAIL_TRANSACTIONAL_SENDER</code> is an email address that will be used as sender.<br/><code>EMAIL_TRANSACTIONAL_REPLY_TO</code> (optional) is an email address that will be used as Reply-To.<br/><code>BCC_EMAIL</code> (optional) is an email address where all emails will be sent as BCC.
  </Variable>
  <Variable defaultValue={"text"} name={"LOG_FORMAT"}>
    Format of console application logs. Possible values: <code>text</code> or <code>json</code>
  </Variable>

</EnvironmentVariables>

## Syncctl

<EnvironmentVariables>
  <Variable name="PORT" defaultValue="3043">
    HTTP port where Syncctl will be available.
  </Variable>

  <Variable name={["SYNCCTL_AUTH_TOKENS", "SYNCCTL_TOKEN_SECRET", "SYNCCTL_RAW_AUTH_TOKENS" ]} required={true}>
    <p>A list of hashed auth tokens that authorizes user in HTTP interface separated by comma. Each must have format:
      <code>$salt.$hash</code> where <code>$salt</code> should be random string. Hash is <code>hex(sha512($token + $salt + SYNCCTL_TOKEN_SECRET)</code>. <code>$token</code> must consist only of letters, digits, underscore and dash</p>
    <p>
      <code>SYNCCTL_RAW_AUTH_TOKENS</code> can be used if you want to provide a comma-separared list of raw takens instead of hases. It offers simplicity at cost of lower security.
    </p>

  </Variable>
  <Variable name={'SYNCCTL_DATABASE_URL'} required={true}>
    <p>
      PostgreSQL connection string. <code>postgres://$user:$password@localhost:$port/database?<b>sslmode=no-verify</b>&<b>search_path=newjitsu</b></code>.  Should be the same as <code>DATABASE_URL</code> for console
    </p>
    <p><b>
      <code>search_path</code> must be <code>newjitsu</code>, and <code>sslmode</code> must be <code>no-verify</code>
    </b></p>
  </Variable>
  <Variable name={'SYNCCTL_SIDECAR_DATABASE_URL'} required={true}>
    URL of the same PostgreSQL instance as it is reachable from kubernetes cluster.  Required only if it is different from <code>SYNCCTL_DATABASE_URL</code>. E.g. if you use <code>localhost</code> in <code>SYNCCTL_DATABASE_URL</code>
  </Variable>
  <Variable name={['SYNCCTL_KUBERNETES_CLIENT_CONFIG']} defaultValue="local">
    Path to kubernetes config file or kubernetes config in yaml format.  If <code>syncctl</code> service itself runs in kubernetes cluster, you can skip this option or use <code>local</code> value.
  </Variable>
  <Variable name={['SYNCCTL_KUBERNETES_CONTEXT', 'SYNCCTL_KUBERNETES_NAMESPACE']} defaultValue={"default"}>
    Name of kubernetes context if not the default one is used and name of kubernetes namespace where sync jobs will be created.
  </Variable>
  <Variable name={'SYNCCTL_TASK_TIMEOUT_HOURS'} defaultValue={"48"}>
    Maximum time in hours that sync job can run. After that time sync job will be terminated.
  </Variable>
  <Variable defaultValue={"text"} name={"SYNCCTL_LOG_FORMAT"}>
    Format of syncctl application logs. Possible values: <code>text</code> or <code>json</code>
  </Variable>

</EnvironmentVariables>


## Admin

Admin service is used to perform maintenance tasks like reprocessing failover logger files.

<EnvironmentVariables>
  <Variable name={'PORT'} required={true}>
    HTTP port where Ingest will be available.
  </Variable>
  <Variable name={'ADMIN_PUBLIC_URL'} required={true}>
    Public url where admin service is deployed and available from internet, usually it's load balancer or reverse proxy.
    E.g. https://data.jitsu.mycompany.com. Should contain protocol and port (if it's not default).
  </Variable>
  <Variable name={['ADMIN_REPOSITORY_URL', 'ADMIN_REPOSITORY_AUTH_TOKEN']} required={true}>
    <p>
      <code>ADMIN_REPOSITORY_URL</code> is an URL of console's export endpoint that returns configuration of `streams-with-destinations` entities:
      <code><b>https://$console-endpoint</b>/api/admin/export/streams-with-destinations</code>.
    </p>
    <p>
      <code>ADMIN_REPOSITORY_AUTH_TOKEN</code> is used to authorize request to console. It must start with <code>service-admin-account:</code> prefix.
      E.g.: <code>service-admin-account:console-token</code>
    </p>
    <p>See also <code>CONSOLE_AUTH_TOKENS</code> of console configuration</p>
  </Variable>
  <Variable name={'ADMIN_REPOSITORY_REFRESH_PERIOD_SEC'} defaultValue="2">
    Period in seconds for refreshing configuration from console's <code>ADMIN_REPOSITORY_URL</code>.
  </Variable>
  <Variable name={'ADMIN_KAFKA_BOOTSTRAP_SERVERS'} required={true}>
    List of Kafka brokers separated by comma. Each broker should be in format <code>host:port</code>.
  </Variable>
  <Variable name={'ADMIN_KAFKA_SSL'}>
    If SSL should be enabled for Kafka
  </Variable>
  <Variable name={'ADMIN_KAFKA_SSL_SKIP_VERIFY'}>
    Skip SSL verification of kafka server certificate.
  </Variable>
  <Variable name={'ADMIN_KAFKA_SASL'}>
    Kafka authorization as JSON object. E.g.: <code>{'{"mechanism": "SCRAM-SHA-256", "username": "user", "password": "password"}'}</code>
  </Variable>
  <Variable name={`ADMIN_LOG_FORMAT`} defaultValue="text">
    Format of application logs (that are written to stdout). Possible values: `text` or `json`
  </Variable>
</EnvironmentVariables>