Open-Source Wikis

/

GitLab

/

Reference

/

Configuration

gitlab-org/gitlab

Configuration

Where the running app reads its settings from.

Configuration files

File Purpose
config/gitlab.yml Master application config (host, ports, integrations, paths). Templated by Omnibus / Helm.
config/database.yml Postgres connection settings (multi-DB aware).
config/redis.yml, config/redis.<role>.yml Redis URLs per role (cache, queues, shared_state, trace_chunks, etc.).
config/secrets.yml Devise secret, OTP key, OpenID secrets — usually generated.
config/cable.yml Action Cable adapter config.
config/puma.rb Puma worker/threads settings.
config/sidekiq_queues.yml Sidekiq queue routing rules.
config/feature_flags/ Feature-flag manifests (~463 entries).
config/feature_categories.yml All feature categories.
config/bounded_contexts.yml All bounded contexts.
config/initializers/*.rb Boot-time setup (~150 initializers).
config/routes.rb and config/routes/ Route definitions.
config/locales/ i18n strings.
config/vue3migration/ Vue 3 migration tracker.
config/oj.rb Oj JSON config.
config/clickhouse.yml ClickHouse connection.
config/database_geo.yml Geo tracking DB (EE).

Settings model

Application configuration also lives in the database via ApplicationSetting (a single-row table). The settings page in the admin UI edits this row. Gitlab::CurrentSettings is a request-cached accessor.

Environment variables

Selected ones — there are dozens more. See lib/gitlab/utils/sanitized_env.rb for the full safe-env enumeration.

ENV Purpose
RAILS_ENV development / test / production
GITLAB_LOG_PATH Directory for log files
RAILS_LOG_TO_STDOUT Send logs to stdout (containerized)
EXPERIMENTAL_RAILS_QUEUE Experimental queue adapters
MALLOC_ARENA_MAX glibc allocator tuning
GITLAB_FEATURES Override license features locally
RUBY_GC_HEAP_* Ruby GC tuning
OTEL_* OpenTelemetry tracing
GITLAB_KAS_VERSION, GITLAB_PAGES_VERSION, GITLAB_SHELL_VERSION, GITLAB_WORKHORSE_VERSION Pinned external service versions
GITLAB_LICENSE_FILE EE license file location
GITLAB_ALLOW_SEPARATE_CI_DATABASE Multi-DB toggle
DATABASE_URL, GITLAB_DATABASE_URL Postgres URL overrides
REDIS_URL and per-role Redis overrides

Secrets layout

Secrets live in:

  • config/secrets.yml — Devise secret base, OTP key, encrypted secrets key. Generated on install.
  • /etc/gitlab/gitlab-secrets.json (Omnibus) — central secret bundle.
  • Helm Secrets — one per role.
  • config/credentials.yml.enc (Rails 7) — present but not used in production; GitLab pre-dates Rails encrypted credentials.

Where to look up "what is this config?"

  1. Search config/initializers/ for the keyword.
  2. Search config/gitlab.yml.example (the canonical reference) for the YAML key.
  3. Search lib/gitlab/utils/sanitized_env.rb for env names.
  4. The Omnibus repo's omnibus-gitlab/files/gitlab-cookbooks/... shows how each config is templated.

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Configuration – GitLab wiki | Factory