Навигация
Установка
Как установить GitRiver: Docker Compose, production-настройка с nginx, локальная сборка
GitRiver - self-hosted git-платформа, которая поставляется как один бинарник на Rust. Для работы нужен только PostgreSQL. В этом разделе описаны три способа установки: быстрый старт через Docker Compose, production-развёртывание с nginx и SSL, а также локальная сборка из исходников.
Системные требования
| Параметр | Только GitRiver | С CI-раннером | Production |
|---|---|---|---|
| CPU | 1 vCPU | 2+ ядра | 8+ ядер |
| RAM | 256 МБ | 4+ ГБ | 16+ ГБ |
| Диск | 10 ГБ | 20 ГБ | 100+ ГБ SSD |
| PostgreSQL | 16+ | 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-переменных).
- Подключение к БД - если вы задали переменные
GITRIVER_DB_*в docker-compose, поля заполнятся автоматически. Нажмите «Тест подключения» для проверки. - Создание администратора - укажите имя пользователя, email и пароль.
- Название инстанса - отображаемое имя вашей установки.
После завершения сервер перезапустится в обычном режиме.
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.
Настройка
- Войдите в GitRiver и откройте Настройки (иконка шестерёнки в правом верхнем углу)
- Перейдите в раздел SSH-ключи
- Нажмите «Добавить SSH-ключ»
- Вставьте содержимое вашего публичного ключа (
~/.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 в конфиге или переменных окружения.