GitRiver GitRiver
EN
Навигация

Конфигурация

Все параметры GitRiver: TOML-файл, переменные окружения, CI/CD, SMTP, LDAP, S3

GitRiver настраивается через TOML-файл и/или переменные окружения с префиксом GITRIVER_*. Переменные окружения всегда имеют приоритет над значениями из файла.

Где хранится конфиг

В Docker конфиг хранится в /var/lib/gitriver/gitriver.toml и создаётся автоматически при первом запуске. Большинство параметров можно задать через переменные окружения GITRIVER_* в docker-compose - это рекомендуемый способ.


Основные параметры

Эти параметры определяют как GitRiver слушает подключения и где хранит данные.

host = "0.0.0.0"
port = 3000
base_url = "https://git.example.com"
database_url = "postgres://gitriver:password@postgres/gitriver"
git_repos_path = "/var/lib/gitriver/repos"
ПараметрEnv-переменнаяПо умолчаниюДля чего
hostGITRIVER_HOST0.0.0.0На каком адресе слушать подключения
portGITRIVER_PORT3000HTTP-порт
base_urlGITRIVER_BASE_URLhttp://{host}:{port}Внешний URL - используется в email-ссылках, CI-переменных, вебхуках. В production обязательно укажите с https://
database_urlGITRIVER_DATABASE_URL-PostgreSQL URL. Если не указан - запускается мастер настройки
git_repos_pathGITRIVER_GIT_REPOS_PATH/var/lib/gitriver/reposДиректория для bare-репозиториев git
web_dist_pathGITRIVER_WEB_DIST_PATH-Путь к собранному фронтенду (в Docker задаётся автоматически)

Подключение к БД через отдельные параметры

Вместо database_url можно задать компоненты подключения по отдельности. Это удобно в Docker Compose:

GITRIVER_DB_HOST=postgres
GITRIVER_DB_PORT=5432
GITRIVER_DB_USER=gitriver
GITRIVER_DB_PASS=сильный_пароль
GITRIVER_DB_NAME=gitriver

Если задан GITRIVER_DATABASE_URL - отдельные параметры игнорируются.

JWT-секрет

jwt_secret = "ваш-секрет-минимум-32-символа"
Env-переменнаяПо умолчанию
GITRIVER_JWT_SECRETАвтоматически генерируется и сохраняется в файл .jwt_secret

Используется для подписи сессионных токенов. Если файл .jwt_secret удалить - все активные сессии станут недействительными.

Запрещённые значения: secret, changeme, change-me-in-production, jwt_secret. GitRiver откажется запускаться с такими значениями.

SSH-доступ

authorized_keys_path = "/home/gitriver/.ssh/authorized_keys"

Путь к файлу authorized_keys для встроенного SSH-сервера. Если не указан - SSH работает через встроенный демон без файла (ключи хранятся в БД).


CI/CD

Параметры, управляющие встроенной системой непрерывной интеграции.

ci_data_path = "/var/lib/gitriver/ci-data"
ci_max_concurrent_jobs = 4
ci_job_timeout_secs = 3600
ci_docker_runtime = "default"
ПараметрEnv-переменнаяПо умолчаниюДля чего
ci_data_pathGITRIVER_CI_DATA_PATH{repos}/../ci-dataДиректория для логов и рабочих пространств CI
ci_max_concurrent_jobsGITRIVER_CI_MAX_CONCURRENT_JOBS4Сколько CI-задач выполняются одновременно на встроенном раннере
ci_job_timeout_secsGITRIVER_CI_JOB_TIMEOUT_SECS3600 (1 час)Таймаут одной задачи. Максимум - 21600 (6 часов)
ci_pipeline_retention_daysGITRIVER_CI_PIPELINE_RETENTION_DAYS90Сколько дней хранить данные о пайплайнах. 0 = навсегда
ci_docker_memoryGITRIVER_CI_DOCKER_MEMORY2gЛимит RAM для Docker-контейнера каждой CI-задачи
ci_docker_cpusGITRIVER_CI_DOCKER_CPUS2Лимит CPU для Docker-контейнера
ci_docker_runtimeGITRIVER_CI_DOCKER_RUNTIMEdefaultDocker runtime для CI-контейнеров
ci_git_clone_timeout_secsGITRIVER_CI_GIT_CLONE_TIMEOUT_SECS120Таймаут git clone при подготовке рабочего пространства
ci_job_token_ttl_secsGITRIVER_CI_JOB_TOKEN_TTL_SECS28800 (8 ч)Время жизни CI_JOB_TOKEN

Docker Runtime

Параметр ci_docker_runtime определяет как GitRiver запускает CI-контейнеры:

  • default - обычный Docker. Подходит для большинства задач.
  • sysbox - rootless Docker-in-Docker через sysbox-runc. Безопасно, но требует установки sysbox.
  • rootless - rootless Docker. Безопасно, но ограничено в совместимости.
  • privileged - полный Docker-in-Docker. Позволяет собирать образы внутри CI, но небезопасно для production - контейнер получает доступ к хосту.

Если ваши CI-задачи собирают Docker-образы (docker build), используйте sysbox или privileged. Для обычных тестов достаточно default.


SMTP (email-уведомления)

Для отправки email-уведомлений (приглашения, сброс пароля, события в репозиториях) настройте SMTP-сервер.

[smtp]
host = "smtp.example.com"
port = 587
username = "gitriver@example.com"
password = "пароль_от_почты"
from = "GitRiver <gitriver@example.com>"
starttls = true
ПолеДля чего
hostАдрес SMTP-сервера
portПорт: 587 (STARTTLS) или 465 (implicit TLS)
usernameЛогин аутентификации (опционально)
passwordПароль (опционально)
fromАдрес отправителя - то, что увидит получатель
starttlsИспользовать STARTTLS (по умолчанию true)

Также настраивается через UI: Администрирование -> SMTP -> тест отправки.


LDAP (корпоративная аутентификация)

Подключение корпоративного каталога (Active Directory, OpenLDAP) для единого входа.

[ldap]
url = "ldaps://ldap.example.com:636"
bind_dn = "cn=service,dc=example,dc=com"
bind_password = "пароль_сервисного_аккаунта"
search_base = "ou=users,dc=example,dc=com"
user_filter = "(&(objectClass=person)(uid={login}))"
email_attr = "mail"
display_name_attr = "displayName"
admin_group_dn = "cn=admins,ou=groups,dc=example,dc=com"
ПолеДля чего
urlURL LDAP-сервера. ldap:// для plain, ldaps:// для TLS
bind_dnDN сервисного аккаунта для поиска пользователей
bind_passwordПароль сервисного аккаунта
search_baseГде искать пользователей в дереве LDAP
user_filterФильтр поиска. {login} заменяется на введённый логин
email_attrАтрибут с email-адресом (обычно mail)
display_name_attrАтрибут с отображаемым именем (обычно displayName)
admin_group_dnDN группы - члены получают права администратора GitRiver

Также настраивается через UI: Администрирование -> LDAP -> кнопка «Тест подключения».

LDAP - Pro-функция. В Community-версии аутентификация через логин/пароль и OAuth2.


S3 (хранилище для Container Registry)

По умолчанию образы Container Registry и LFS-файлы хранятся в файловой системе. Для production рекомендуется S3-совместимое хранилище (MinIO, AWS S3, Yandex Object Storage).

[s3]
endpoint = "http://minio:9000"
bucket = "gitriver-registry"
access_key = "minioadmin"
secret_key = "minioadmin"
region = "us-east-1"
temp_dir = "/tmp/gitriver-uploads"
part_size_mb = 5
ПолеДля чего
endpointURL S3-эндпоинта
bucketИмя бакета (должен существовать)
access_key, secret_keyКлючи доступа
regionРегион (для MinIO - любое значение)
temp_dirДиректория для временных файлов при загрузке
part_size_mbРазмер части при multipart-загрузке (5-100 МБ)

Также настраивается через UI: Администрирование -> Хранилище -> тест подключения.

Без секции [s3] всё хранится в файловой системе ({git_repos_path}).


Бэкапы

GITRIVER_BACKUP_ENCRYPTION_KEY=ваш_ключ_base64

Ключ AES-256 для шифрования резервных копий. Сгенерировать: openssl rand -base64 32. Если не указан - бэкапы сохраняются без шифрования.


Лицензирование

GITRIVER_LICENSE_SERVER_URL=https://gitriver.com

URL сервера для heartbeat-проверки лицензии (раз в 24 часа). По умолчанию - https://gitriver.com. Лицензия работает полностью офлайн после активации.


Прочие параметры

ПараметрEnv-переменнаяПо умолчаниюДля чего
webhook_timeout_secsGITRIVER_WEBHOOK_TIMEOUT_SECS10Таймаут HTTP-запроса при доставке вебхука
lfs_token_ttl_secsGITRIVER_LFS_TOKEN_TTL_SECS900 (15 мин)Время жизни JWT для LFS-операций
registry_token_expiry_secsGITRIVER_REGISTRY_TOKEN_EXPIRY_SECS7200 (2 ч)Время жизни токена Docker Registry
sse_keepalive_secsGITRIVER_SSE_KEEPALIVE_SECS15Интервал keepalive для SSE (стриминг CI-логов)
pages_data_pathGITRIVER_PAGES_DATA_PATH{repos}/../pages-dataДиректория для Pages-деплойментов