GitLab CE на VPS: собственная платформа для Git, CI/CD и управления проектами

GitLab Community Edition — это полноценная self-hosted DevOps-платформа: Git, CI/CD, issue-трекер и управление проектами в одном пакете. В этой статье рассмотрим, как установить GitLab CE на VPS на Debian, Ubuntu и AlmaLinux.

Что такое GitLab CE

GitLab Community Edition — это полноценная self-hosted DevOps-платформа: Git-репозитории, CI/CD-пайплайны, реестр контейнеров, issue-трекер, вики и управление проектами — всё в одном пакете. В отличие от более лёгких альтернатив (Gitea, Forgejo), GitLab CE закрывает практически весь жизненный цикл разработки без необходимости подключать сторонние сервисы, но и требует существенно больше ресурсов сервера.

Что умеет GitLab

  • Git-репозитории с полным UI — merge requests, code review, защищённые ветки.
  • Встроенный CI/CD — пайплайны описываются прямо в .gitlab-ci.yml, без стороннего Jenkins или другого инструмента.
  • Container Registry — встроенное хранилище Docker-образов.
  • Issue-трекер и доски задач — kanban-доски, эпики, milestone.
  • Вики проекта — документация рядом с кодом.
  • Runners — собственные исполнители для CI/CD-заданий, которые можно развернуть на этом же или на отдельных серверах.

Сколько ресурсов реально нужно

Важно: официальный минимум GitLab CE — 4 ГБ оперативной памяти, но на практике этого мало даже для одного небольшого проекта. GitLab одновременно запускает Puma, Sidekiq, PostgreSQL, Redis, Prometheus и Gitaly на одном сервере — свежая установка с одним проектом уже потребляет свыше 6 ГБ памяти. Планируйте как минимум 8 ГБ RAM и 2-4 ядра CPU, иначе сервер будет заметно «тормозить» уже на старте.

Что должно быть готово заранее

  • VPS с Debian 12/13, Ubuntu 22.04/24.04 или AlmaLinux 8/9, минимум 8 ГБ RAM
  • Доступ sudo или root
  • Зарегистрированный домен с DNS A-записью, направленной на IP сервера (нужен для Let’s Encrypt)
  • Доступ к исходящему порту 25 или внешний SMTP-сервер для уведомлений

Установка GitLab CE на Debian и Ubuntu

Шаг 1. Базовые зависимости

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl openssh-server ca-certificates tzdata perl

Шаг 2. Почта для уведомлений (опционально, но рекомендуется)

sudo apt install -y postfix

При установке выберите вариант «Internet Site» и укажите FQDN сервера. Если планируете использовать внешний SMTP (Gmail, SendGrid и т.д.) — этот шаг можно пропустить и настроить SMTP позже прямо в GitLab.

Шаг 3. Подключение официального репозитория и установка

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

sudo EXTERNAL_URL="https://ваш-домен.com" apt install -y gitlab-ce

Переменная EXTERNAL_URL обязательно указывается до установки пакета — именно на её основе GitLab сразу настроит Nginx и попытается выпустить SSL-сертификат через Let’s Encrypt.

Установка GitLab CE на AlmaLinux

Шаг 1. Базовые зависимости

sudo dnf update -y
sudo dnf install -y curl policycoreutils-python-utils openssh-server perl postfix
sudo systemctl enable --now sshd postfix

Шаг 2. Подключение официального репозитория и установка

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

sudo EXTERNAL_URL="https://ваш-домен.com" dnf install -y gitlab-ce
На AlmaLinux с включённым SELinux (типовая конфигурация) Omnibus-пакет GitLab рассчитан на работу с SELinux «из коробки» и обычно не требует дополнительных политик. Если всё же встретите отказы в логах, проверьте их командой sudo ausearch -m avc -ts recent.

Первая настройка

Пакет GitLab CE (он же Omnibus GitLab) сам устанавливает и настраивает PostgreSQL, Redis, Nginx и все остальные компоненты. После завершения установки примените конфигурацию:

sudo gitlab-ctl reconfigure

Процесс занимает несколько минут при первом запуске. Откройте в браузере указанный домен:

https://ваш-домен.com

Если все предыдущие шаги были выполнены верно Вы получите окно входа в GitLab:

Получение пароля администратора

Временный пароль учётной записи root GitLab генерирует автоматически и хранит в файле, который удаляется через 24 часа после установки:

sudo cat /etc/gitlab/initial_root_password
Важно: обязательно войдите и смените этот пароль в течение первых 24 часов — после этого файл с временным паролем автоматически удаляется системой, и восстановить доступ можно будет только через сброс пароля вручную через консоль сервера.

Резервное копирование

sudo gitlab-backup create STRATEGY=copy

Бэкап не включает файлы /etc/gitlab/gitlab.rb и /etc/gitlab/gitlab-secrets.json — именно в них хранятся ключи шифрования и конфигурация. Их нужно копировать отдельно:

sudo cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab-secrets.json /var/opt/gitlab/backups/

Для автоматических ежедневных бэкапов добавьте задание в cron:

echo "0 2 * * * /opt/gitlab/bin/gitlab-backup create STRATEGY=copy CRON=1" | sudo tee /etc/cron.d/gitlab-backup

Поскольку GitLab одновременно держит в памяти несколько тяжёлых сервисов и активно пишет в базу данных при каждом пуше или запуске CI/CD-пайплайна — стоит сразу закладываться на VPS с NVMe/SSD накопителями и достаточным запасом RAM, иначе скорость работы PostgreSQL и Gitaly под нагрузкой заметно просядет.

Прокрутить вверх