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

Установка

Как установить GitRiver: Docker Compose, production-настройка с nginx, локальная сборка

GitRiver - self-hosted git-платформа, которая поставляется как один бинарник на Rust. Для работы нужен только PostgreSQL. В этом разделе описаны три способа установки: быстрый старт через Docker Compose, production-развёртывание с nginx и SSL, а также локальная сборка из исходников.

Системные требования

ПараметрТолько GitRiverС CI-раннеромProduction
CPU1 vCPU2+ ядра8+ ядер
RAM256 МБ4+ ГБ16+ ГБ
Диск10 ГБ20 ГБ100+ ГБ SSD
PostgreSQL16+16+18+
Docker-20.10+ с BuildKitпоследняя стабильная

GitRiver потребляет ~100 МБ RAM в покое. Docker нужен только для CI-задач. Без CI - можно обойтись без Docker.


Быстрый старт (Docker Compose)

Самый простой способ запустить GitRiver - Docker Compose. Два контейнера: PostgreSQL и GitRiver.

1. Клонируйте репозиторий

git clone https://gitriver.com/gitriver/gitriver.git
cd gitriver

2. Запустите

docker compose up -d

Docker Compose поднимет:

  • postgres (PostgreSQL 18) - база данных на порту 5432 (внутренний)
  • gitriver - веб-сервер на порту 3000

3. Откройте в браузере

Перейдите по адресу http://localhost:3000. Откроется мастер настройки.

4. Пройдите мастер настройки

Мастер настройки запускается автоматически, когда database_url не указан в конфиге (в Docker он подставляется из переменных окружения, поэтому мастер появляется только при первом запуске без env-переменных).

  1. Подключение к БД - если вы задали переменные GITRIVER_DB_* в docker-compose, поля заполнятся автоматически. Нажмите «Тест подключения» для проверки.
  2. Создание администратора - укажите имя пользователя, email и пароль.
  3. Название инстанса - отображаемое имя вашей установки.

После завершения сервер перезапустится в обычном режиме.


Production-установка

Для production рекомендуется: отдельные тома для данных, сильные пароли, nginx с SSL, проброс Docker socket для CI.

1. Подготовьте директории

mkdir -p /opt/gitriver/data/{gitriver,postgres}
cd /opt/gitriver

2. Создайте .env

cat > .env << 'EOF'
GITRIVER_DB_HOST=postgres
GITRIVER_DB_PORT=5432
GITRIVER_DB_USER=gitriver
GITRIVER_DB_PASS=сгенерируйте_сильный_пароль
GITRIVER_DB_NAME=gitriver
GITRIVER_BASE_URL=https://git.example.com
EOF

GITRIVER_BASE_URL - внешний URL вашего инстанса. Используется для ссылок в email-уведомлениях, CI-переменных, вебхуках.

3. Создайте docker-compose.yml

services:
  postgres:
    image: postgres:18-alpine
    restart: always
    environment:
      POSTGRES_USER: ${GITRIVER_DB_USER}
      POSTGRES_PASSWORD: ${GITRIVER_DB_PASS}
      POSTGRES_DB: ${GITRIVER_DB_NAME}
    volumes:
      - ./data/postgres:/var/lib/postgresql/data
    healthcheck:
      test: pg_isready -U ${GITRIVER_DB_USER}
      interval: 5s
      timeout: 3s
      retries: 5

  gitriver:
    image: gitriver/gitriver:latest
    restart: always
    depends_on:
      postgres:
        condition: service_healthy
    ports:
      - "3000:3000"
    volumes:
      - ./data/gitriver:/var/lib/gitriver
      - /var/run/docker.sock:/var/run/docker.sock
    env_file: .env

Docker socket (/var/run/docker.sock) нужен для запуска CI-задач. Если CI не используется - можно не монтировать.

4. Запустите

docker compose up -d

5. Настройте nginx

GitRiver слушает на порту 3000. Для HTTPS поставьте перед ним nginx:

server {
    listen 443 ssl http2;
    server_name git.example.com;

    ssl_certificate     /etc/ssl/certs/git.example.com.pem;
    ssl_certificate_key /etc/ssl/private/git.example.com.key;

    # Для git push больших репозиториев и LFS
    client_max_body_size 512m;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # SSE - стриминг CI-логов в реальном времени
        proxy_buffering off;
        proxy_read_timeout 3600s;
    }
}

proxy_buffering off обязателен: без него стриминг логов CI и события SSE не будут работать.

6. Откройте в браузере

Перейдите по адресу https://git.example.com и пройдите мастер настройки.


SSH-доступ

GitRiver имеет встроенный SSH-сервер для git clone / git push по SSH.

Настройка

  1. Войдите в GitRiver и откройте Настройки (иконка шестерёнки в правом верхнем углу)
  2. Перейдите в раздел SSH-ключи
  3. Нажмите «Добавить SSH-ключ»
  4. Вставьте содержимое вашего публичного ключа (~/.ssh/id_ed25519.pub)

Клонирование по SSH

git clone ssh://git@git.example.com/owner/repo.git

В Docker нужно пробросить SSH-порт и настроить authorized_keys_path в конфиге. Подробнее - в разделе Конфигурация.


Обновление

cd /opt/gitriver
docker compose pull gitriver
docker compose up -d gitriver

Миграции БД применяются автоматически при каждом старте сервера. Отдельных команд для миграции не требуется.


Проверка работоспособности

curl http://localhost:3000/health

Ответ:

{"status": "ok", "version": "1.0.0", "database": "connected"}

Если database не connected - проверьте подключение к PostgreSQL в конфиге или переменных окружения.