Environment variables

GitLab exposes certain environment variables which can be used to override their defaults values.

People usually configure GitLab with /etc/gitlab/gitlab.rb for Omnibus installations, or gitlab.yml for installations from source.

You can use the following environment variables to override certain values:

Supported environment variables

Variable Type Description
DATABASE_URL string The database URL; is of the form: postgresql://localhost/blog_development.
ENABLE_BOOTSNAP string Enables Bootsnap for speeding up initial Rails boot (1 to enable).
EXTERNAL_VALIDATION_SERVICE_TIMEOUT integer Timeout, in seconds, for an external CI/CD pipeline validation service. Default is 5.
EXTERNAL_VALIDATION_SERVICE_URL string URL to an external CI/CD pipeline validation service.
EXTERNAL_VALIDATION_SERVICE_TOKEN string The X-Gitlab-Token for authentication with an external CI/CD pipeline validation service.
GITLAB_CDN_HOST string Sets the base URL for a CDN to serve static assets (for example, //mycdnsubdomain.fictional-cdn.com).
GITLAB_EMAIL_DISPLAY_NAME string The name used in the From field in emails sent by GitLab.
GITLAB_EMAIL_FROM string The email address used in the From field in emails sent by GitLab.
GITLAB_EMAIL_REPLY_TO string The email address used in the Reply-To field in emails sent by GitLab.
GITLAB_EMAIL_SUBJECT_SUFFIX string The email subject suffix used in emails sent by GitLab.
GITLAB_HOST string The full URL of the GitLab server (including http:// or https://).
GITLAB_ROOT_PASSWORD string Sets the password for the root user on installation.
GITLAB_SHARED_RUNNERS_REGISTRATION_TOKEN string Sets the initial registration token used for runners.
GITLAB_UNICORN_MEMORY_MAX integer The maximum memory threshold (in bytes) for the unicorn-worker-killer.
GITLAB_UNICORN_MEMORY_MIN integer The minimum memory threshold (in bytes) for the unicorn-worker-killer.
RAILS_ENV string The Rails environment; can be one of production, development, staging, or test.
UNSTRUCTURED_RAILS_LOG string Enables the unstructured log in addition to JSON logs (defaults to true).

Complete database variables

The recommended method for specifying your database connection information is to set the DATABASE_URL environment variable. This variable contains connection information (adapter, database, username, password, host, and port), but no behavior information (encoding or pool). If you don’t want to use DATABASE_URL, or want to set database behavior information, either:

  • Copy the template file, cp config/database.yml.env config/database.yml.
  • Set a value for some GITLAB_DATABASE_XXX variables.

The list of GITLAB_DATABASE_XXX variables that you can set is:

Variable Default value Overridden by DATABASE_URL?
GITLAB_DATABASE_ADAPTER postgresql Yes
GITLAB_DATABASE_DATABASE gitlab_#{ENV['RAILS_ENV'] Yes
GITLAB_DATABASE_ENCODING unicode No
GITLAB_DATABASE_HOST localhost Yes
GITLAB_DATABASE_PASSWORD none Yes
GITLAB_DATABASE_POOL 10 No
GITLAB_DATABASE_PORT 5432 Yes
GITLAB_DATABASE_USERNAME root Yes

Adding more variables

We welcome merge requests to make more settings configurable by using variables. Make changes to the config/initializers/1_settings.rb file, and use the naming scheme GITLAB_#{name in 1_settings.rb in upper case}.

Omnibus configuration

To set environment variables, follow these instructions.

It’s possible to preconfigure the GitLab Docker image by adding the environment variable GITLAB_OMNIBUS_CONFIG to the docker run command. For more information, see the Pre-configure Docker container section of the Omnibus GitLab documentation.