Установка GitLab на Debian 13, 12, 11: полное руководство

GitLab Community Edition (CE) — это мощная, самостоятельная платформа для управления Git-репозиториями с возможностями отслеживания ошибок, обсуждений, непрерывной интеграции и доставки (CI/CD). Она позволяет развернуть полнофункциональный аналог GitHub на собственном сервере без ограничений на количество репозиториев и пользователей.

В этом руководстве я покажу, как установить GitLab CE на Debian 13, 12 и 11 из официального репозитория GitLab.

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

  • Оперативная память: Минимум 4 ГБ (рекомендуется 8 ГБ для небольшой команды, 16+ ГБ для продакшена)
  • Место на диске: Минимум 40 ГБ (зависит от количества репозиториев и артефактов)
  • Архитектура: amd64 (64-бит) или arm64

Оглавление

Предварительные требования

Перед установкой убедитесь, что:

  • У вас есть доменное имя, привязанное к IP сервера (если нужен HTTPS)
  • Открыты порты 22 (SSH), 80 (HTTP), 443 (HTTPS) в файрволе
  • Вы имеете права sudo (администратора)

⚠️ ВАЖНО: Проверьте права sudo перед установкой

Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:

sudo whoami

Что делает: sudo — выполняет команду от имени суперпользователя; whoami — показывает имя текущего пользователя.

Ожидаемый вывод в терминале:

root

❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.


Установка GitLab CE

Шаг 1: Обновите систему и установите зависимости

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

Шаг 2: Настройте файрвол (UFW)

⚠️ Если вы подключаетесь по SSH, сначала разрешите SSH, чтобы не заблокировать себе доступ!

sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw --force enable

Проверьте правила:

sudo ufw status

Шаг 3: Добавьте GPG-ключ GitLab

curl -fsSL https://packages.gitlab.com/gpgkey/gpg.key | sudo gpg --batch --yes --dearmor -o /usr/share/keyrings/gitlab_gitlab-ce-archive-keyring.gpg

Шаг 4: Добавьте репозиторий GitLab

. /etc/os-release
printf 'Types: deb\nURIs: https://packages.gitlab.com/gitlab/gitlab-ce/debian/\nSuites: %s\nComponents: main\nSigned-By: /usr/share/keyrings/gitlab_gitlab-ce-archive-keyring.gpg\n' "$VERSION_CODENAME" | sudo tee /etc/apt/sources.list.d/gitlab_gitlab-ce.sources > /dev/null

Что делает: Создаёт файл репозитория в современном формате DEB822. Кодовое имя (trixie, bookworm, bullseye) подставляется автоматически.

Шаг 5: Обновите список пакетов и проверьте, что GitLab виден

sudo apt update
apt-cache policy gitlab-ce

Ожидаемый вывод: Должна быть строка с https://packages.gitlab.com/gitlab/gitlab-ce/debian и вашим кодовым именем.

Шаг 6: Установите GitLab

Замените gitlab.example.com на ваше реальное доменное имя.

Для HTTPS (рекомендуется, если домен указывает на сервер):

sudo EXTERNAL_URL="https://gitlab.example.com" apt install -y gitlab-ce

Для HTTP (если нет домена или не настроен HTTPS):

sudo EXTERNAL_URL="http://gitlab.example.com" apt install -y gitlab-ce

⚠️ Установка может занять несколько минут — GitLab скачивается (около 1 ГБ) и настраивает внутренние сервисы (PostgreSQL, Redis, Nginx, Puma, Sidekiq).


Первый вход в GitLab

Шаг 1: Получите временный пароль администратора

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

sudo cat /etc/gitlab/initial_root_password

Пример вывода:

Password: QjYxMzI5Nz... (сохраните этот пароль)

Шаг 2: Войдите в веб-интерфейс

Откройте браузер и перейдите по адресу https://gitlab.example.com (или http://...).

Логин: root
Пароль: тот, что вы получили из файла.

Шаг 3: Смените пароль

При первом входе GitLab потребует сменить пароль администратора. Придумайте надёжный пароль.


Настройка GitLab

Изменение внешнего URL позже

Если вы ошиблись при установке или хотите сменить домен/протокол:

sudo nano /etc/gitlab/gitlab.rb

Найдите и измените строку:

external_url 'https://gitlab.example.com'

Примените изменения:

sudo gitlab-ctl reconfigure

Настройка SMTP (почтовые уведомления)

GitLab может отправлять уведомления на почту. Добавьте в /etc/gitlab/gitlab.rb (замените на свои данные):

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "your-email@gmail.com"
gitlab_rails['smtp_password'] = "app-password"
gitlab_rails['smtp_domain'] = "smtp.gmail.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['gitlab_email_from'] = "gitlab@example.com"

Примените настройки:

sudo gitlab-ctl reconfigure

Основные команды управления GitLab

КомандаЧто делает
sudo gitlab-ctl statusПоказать статус всех сервисов
sudo gitlab-ctl restartПерезапустить все сервисы
sudo gitlab-ctl reconfigureПрименить изменения конфигурации
sudo gitlab-ctl tailПоказать логи в реальном времени
sudo gitlab-rake gitlab:checkПроверить работоспособность
sudo gitlab-backup createСоздать резервную копию
sudo gitlab-ctl backup-etcСоздать резервную копию конфигурации

Обновление GitLab

sudo apt update
sudo apt install --only-upgrade gitlab-ce
sudo gitlab-ctl restart

⚠️ Перед обновлением между мажорными версиями обязательно прочитайте официальную документацию по обновлению.


Резервное копирование и восстановление

Создание резервной копии

sudo gitlab-backup create
sudo gitlab-ctl backup-etc

Что делает:

  • gitlab-backup create — создаёт архив данных (репозитории, база данных, артефакты) в /var/opt/gitlab/backups/
  • gitlab-ctl backup-etc — создаёт архив конфигурации в /etc/gitlab/config_backup/

Настройка автоматического резервного копирования

Добавьте cron-задачу:

printf '%s\n' 'SHELL=/bin/sh' 'PATH=/opt/gitlab/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' '0 2 * * * root gitlab-backup create CRON=1' '30 2 * * * root gitlab-ctl backup-etc --delete-old-backups' | sudo tee /etc/cron.d/gitlab-backups > /dev/null

Удаление GitLab

Удаление с сохранением данных (только пакет)

sudo gitlab-ctl stop
sudo apt remove gitlab-ce

Полное удаление (все данные и конфигурация)

⚠️ Эта операция безвозвратно удалит все репозитории, пользователей и настройки!

sudo gitlab-ctl stop
sudo gitlab-ctl cleanse
sudo apt remove --purge gitlab-ce
sudo rm -rf /opt/gitlab /etc/gitlab /var/opt/gitlab /var/log/gitlab

Удаление репозитория GitLab из APT:

sudo rm -f /etc/apt/sources.list.d/gitlab_gitlab-ce.sources
sudo rm -f /usr/share/keyrings/gitlab_gitlab-ce-archive-keyring.gpg
sudo apt update

Решение типичных проблем

8.1 Ошибка: Unable to locate package gitlab-ce

Симптом: sudo apt install gitlab-ce не находит пакет.

Причина: Репозиторий GitLab не добавлен или не обновлён.

Пошаговое решение:

Шаг 1: Проверьте, что файл репозитория существует:

cat /etc/apt/sources.list.d/gitlab_gitlab-ce.sources

Шаг 2: Проверьте кодовое имя вашего Debian:

. /etc/os-release && printf '%s\n' "$VERSION_CODENAME"

Должно быть trixie, bookworm или bullseye.

Шаг 3: Обновите список пакетов:

sudo apt update

8.2 Ошибка: GitLab не запускается, 502 Bad Gateway

Симптом: После установки GitLab не открывается, Nginx возвращает 502.

Причина: Недостаточно памяти или Puma не может запуститься.

Пошаговое решение:

Шаг 1: Проверьте свободную память:

free -h

Если памяти меньше 4 ГБ — добавьте swap:

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Шаг 2: Перезапустите GitLab:

sudo gitlab-ctl restart

Шаг 3: Посмотрите логи Puma:

sudo gitlab-ctl tail puma

8.3 Ошибка: Не удаётся войти как root

Симптом: Не помню пароль root, файл /etc/gitlab/initial_root_password уже удалён.

Пошаговое решение:

Сбросьте пароль root через консоль:

sudo gitlab-rake "gitlab:password:reset[root]"

Введите новый пароль и подтвердите.


8.4 Ошибка: Не отправляются письма (SMTP)

Симптом: GitLab не отправляет уведомления.

Пошаговое решение:

Шаг 1: Проверьте логи почты:

sudo grep -i mail /var/log/gitlab/gitlab-rails/production.log | tail -n 20

Шаг 2: Убедитесь, что SMTP-настройки в /etc/gitlab/gitlab.rb корректны.

Шаг 3: Отправьте тестовое письмо:

sudo gitlab-rails console -e production
Notify.test_email('you@example.com', 'Test', 'SMTP works').deliver_now
exit

8.5 Ошибка: Не хватает места на диске

Симптом: GitLab работает медленно, бэкапы не создаются, артефакты не сохраняются.

Причина: Закончилось место на диске.

Пошаговое решение:

Шаг 1: Проверьте свободное место:

df -h

Шаг 2: Очистите старые бэкапы (оставьте последние 7 дней):

В /etc/gitlab/gitlab.rb добавьте или измените:

gitlab_rails['backup_keep_time'] = 604800   # 7 дней в секундах

Шаг 3: Примените настройки и удалите старые бэкапы:

sudo gitlab-ctl reconfigure
sudo gitlab-backup create   # создаст новый бэкап и удалит старые

Чек-лист: что проверить после установки

  • [ ] GitLab установлен: sudo gitlab-ctl status показывает сервисы в статусе run
  • [ ] Можно войти: открывается веб-интерфейс, логин root с временным паролем
  • [ ] Пароль root изменён (при первом входе)
  • [ ] Файрвол настроен: sudo ufw status → порты 22, 80, 443 открыты
  • [ ] Почта настроена (опционально): тестовое письмо приходит
  • [ ] Бэкап создаётся: sudo gitlab-backup create завершается без ошибок
  • [ ] Можно создать проект: нажмите «New project» → «Create blank project»

Часто задаваемые вопросы (FAQ)

Вопрос: Можно ли установить GitLab на сервер с 2 ГБ RAM?
Ответ: Технически да, но он будет очень медленным. Добавьте swap (2-4 ГБ) и будьте готовы к тормозам. Для продакшена нужно минимум 8 ГБ.

Вопрос: GitLab Community Edition бесплатен?
Ответ: Да, CE версия полностью бесплатна и имеет все основные функции. Есть платная Enterprise Edition (EE) с дополнительными возможностями.

Вопрос: Как обновить GitLab без потери данных?
Ответ: Просто выполните sudo apt update && sudo apt install --only-upgrade gitlab-ce. Бэкап перед обновлением рекомендуется, но не обязателен.

Вопрос: Нужен ли отдельный сервер для GitLab Runner?
Ответ: Runner для CI/CD можно установить на тот же сервер, но для продакшена лучше выделить отдельную машину.

Вопрос: Как отключить регистрацию новых пользователей?
Ответ: Admin Area → Settings → General → Sign-up restrictions → Отключить «Sign-up enabled».


Заключение

Теперь GitLab установлен на вашем Debian. Вы можете управлять Git-репозиториями, настраивать CI/CD и вести совместную разработку на собственной инфраструктуре.

Что дальше?