Навигация
Конфигурация
Все параметры 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-переменная | По умолчанию | Для чего |
|---|---|---|---|
host | GITRIVER_HOST | 0.0.0.0 | На каком адресе слушать подключения |
port | GITRIVER_PORT | 3000 | HTTP-порт |
base_url | GITRIVER_BASE_URL | http://{host}:{port} | Внешний URL - используется в email-ссылках, CI-переменных, вебхуках. В production обязательно укажите с https:// |
database_url | GITRIVER_DATABASE_URL | - | PostgreSQL URL. Если не указан - запускается мастер настройки |
git_repos_path | GITRIVER_GIT_REPOS_PATH | /var/lib/gitriver/repos | Директория для bare-репозиториев git |
web_dist_path | GITRIVER_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_path | GITRIVER_CI_DATA_PATH | {repos}/../ci-data | Директория для логов и рабочих пространств CI |
ci_max_concurrent_jobs | GITRIVER_CI_MAX_CONCURRENT_JOBS | 4 | Сколько CI-задач выполняются одновременно на встроенном раннере |
ci_job_timeout_secs | GITRIVER_CI_JOB_TIMEOUT_SECS | 3600 (1 час) | Таймаут одной задачи. Максимум - 21600 (6 часов) |
ci_pipeline_retention_days | GITRIVER_CI_PIPELINE_RETENTION_DAYS | 90 | Сколько дней хранить данные о пайплайнах. 0 = навсегда |
ci_docker_memory | GITRIVER_CI_DOCKER_MEMORY | 2g | Лимит RAM для Docker-контейнера каждой CI-задачи |
ci_docker_cpus | GITRIVER_CI_DOCKER_CPUS | 2 | Лимит CPU для Docker-контейнера |
ci_docker_runtime | GITRIVER_CI_DOCKER_RUNTIME | default | Docker runtime для CI-контейнеров |
ci_git_clone_timeout_secs | GITRIVER_CI_GIT_CLONE_TIMEOUT_SECS | 120 | Таймаут git clone при подготовке рабочего пространства |
ci_job_token_ttl_secs | GITRIVER_CI_JOB_TOKEN_TTL_SECS | 28800 (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"
| Поле | Для чего |
|---|---|
url | URL LDAP-сервера. ldap:// для plain, ldaps:// для TLS |
bind_dn | DN сервисного аккаунта для поиска пользователей |
bind_password | Пароль сервисного аккаунта |
search_base | Где искать пользователей в дереве LDAP |
user_filter | Фильтр поиска. {login} заменяется на введённый логин |
email_attr | Атрибут с email-адресом (обычно mail) |
display_name_attr | Атрибут с отображаемым именем (обычно displayName) |
admin_group_dn | DN группы - члены получают права администратора 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
| Поле | Для чего |
|---|---|
endpoint | URL 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_secs | GITRIVER_WEBHOOK_TIMEOUT_SECS | 10 | Таймаут HTTP-запроса при доставке вебхука |
lfs_token_ttl_secs | GITRIVER_LFS_TOKEN_TTL_SECS | 900 (15 мин) | Время жизни JWT для LFS-операций |
registry_token_expiry_secs | GITRIVER_REGISTRY_TOKEN_EXPIRY_SECS | 7200 (2 ч) | Время жизни токена Docker Registry |
sse_keepalive_secs | GITRIVER_SSE_KEEPALIVE_SECS | 15 | Интервал keepalive для SSE (стриминг CI-логов) |
pages_data_path | GITRIVER_PAGES_DATA_PATH | {repos}/../pages-data | Директория для Pages-деплойментов |