Гид по технологиям

Установка GitLab CE на CentOS 8 — подробный пошаговый гид

• 7 min read • DevOps • Обновлено 22 Nov 2025
Установка GitLab CE на CentOS 8 — пошагово
Установка GitLab CE на CentOS 8 — пошагово

Логотип и скриншот установки GitLab

О чём эта инструкция

Цель — развернуть GitLab Community Edition (CE) на CentOS 8 с HTTPS и базовой безопасной конфигурацией. Показаны альтернативы и рекомендации для продакшен-сред. Подойдёт для системных администраторов и DevOps-инженеров.

Ключевые шаги:

  • подготовка и установка зависимостей;
  • добавление официального репозитория GitLab и установка пакета Omnibus;
  • получение SSL-сертификата через Let’s Encrypt и генерация dhparam;
  • включение HTTPS в nginx (через /etc/gitlab/gitlab.rb);
  • настройка firewalld;
  • первичная постустановка: смена пароля root, добавление SSH-ключа, создание проекта и тестовый push.

Important: перед началом убедитесь, что у вас есть A-запись DNS, указывающая на публичный IP сервера, и что порты 80/443 доступны извне.

Требования и предпосылки

Минимальные аппаратные требования и окружение, используемые в примере:

  • CentOS 8 (обновлённая система);
  • 4 ГБ оперативной памяти;
  • 30 ГБ свободного места на диске;
  • 2 CPU;
  • доступ администратора (root или sudo);
  • доменное имя, например gitlab.example.com;
  • открытые порты 22, 80, 443.

Краткое определение: Omnibus GitLab — готовый пакет, который устанавливает и настраивает GitLab и сопутствующие сервисы (nginx, PostgreSQL, Redis и т. д.) одним пакетом.

Сопутствующие варианты развёртывания

Если эта инструкция не подходит, рассмотрите варианты:

  • SaaS — используйте gitlab.com, если не нужна своя инфраструктура.
  • Enterprise Edition (EE) — платная версия с расширенной функциональностью для крупных компаний.
  • Контейнерная установка — Kubernetes/Helm-чарты для динамического масштабирования.

Шаг 1 — Установка зависимостей

Установим системные утилиты, OpenSSH и Postfix (используется для отправки системных почтовых уведомлений GitLab).

Выполните:

sudo dnf -y install curl policycoreutils openssh-server openssh-clients postfix

Запустите службы SSH и Postfix и добавьте их в автозагрузку:

systemctl start sshd
systemctl start postfix

systemctl enable sshd
systemctl enable postfix

Установка зависимостей для GitLab

Совет: Postfix можно заменить на внешний SMTP-сервис, если вы предпочитаете отправлять почту через сторонний почтовый провайдер.

Шаг 2 — Добавление репозитория и установка GitLab

Добавим официальный репозиторий GitLab и установим пакет gitlab-ce (Omnibus).

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

Вы увидите вывод об импорте GPG-ключей и генерации кэша репозитория, затем выполните проверку:

sudo dnf repolist

Убедитесь, что в списке есть gitlab_gitlab-ce. Затем установите пакет:

sudo dnf install gitlab-ce -y

Установка GitLab CE на CentOS 8

Примечание: пакет Omnibus включает все зависимости (nginx, PostgreSQL, Redis и др.), поэтому установка может занять время.

Шаг 3 — Получение SSL через Let’s Encrypt и генерация DHPARAM

Мы настроим HTTPS с помощью certbot (Let’s Encrypt) и создадим dhparams для надёжного обмена ключами.

Установим EPEL и certbot:

sudo dnf install epel-release
sudo dnf install certbot

Получим сертификат в режиме standalone (сервер должен иметь доступ к порту 80):

certbot certonly --rsa-key-size 2048 --standalone --agree-tos --no-eff-email --email you@example.com -d gitlab.example.com

После успешного выполнения сертификаты будут в каталоге /etc/letsencrypt/live/gitlab.example.com/ — там находятся fullchain.pem и privkey.pem:

ls -lah /etc/letsencrypt/live/gitlab.example.com/

Генерация dhparam и изменение прав:

sudo openssl dhparam -out /etc/gitlab/dhparams.pem 2048
sudo chmod 600 /etc/gitlab/dhparams.pem

Важно: запуск certbot в режиме standalone временно занимает порт 80. Если у вас уже запущен веб-сервер, используйте режим webroot или получение сертификата на отдельном хосте.

Шаг 4 — Настройка домена и включение HTTPS в nginx для GitLab

Редактируем конфигурацию Omnibus GitLab: /etc/gitlab/gitlab.rb

cd /etc/gitlab/
vim gitlab.rb

Задайте external_url с протоколом https и укажите пути к сертификатам:

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

nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/letsencrypt/live/gitlab.example.com/fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/gitlab.example.com/privkey.pem"
nginx['ssl_dhparam'] = "/etc/gitlab/dhparams.pem"

Сохраните файл и примените конфигурацию:

sudo gitlab-ctl reconfigure

Это вызовет Chef-скрипты Omnibus и переподготовит все компоненты.

Настройка GitLab CE

Если reconfigure завершился с ошибками, проверьте /var/log/gitlab и вывод команды для диагностики.

Шаг 5 — Настройка firewalld

Откроем SSH, HTTP и HTTPS в firewalld и применим изменения:

firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

firewall-cmd --list-services

В списке должны быть ssh, http и https.

Настройка firewalld

Совет по безопасности: при доступности GitLab в публичной сети рассмотрите ограничение административного доступа по IP или настройку WAF.

Шаг 6 — Постустановка GitLab через веб-интерфейс

Откройте в браузере https://gitlab.example.com и смените пароль пользователя root.

Смена пароля root

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

Сброс пароля root в GitLab

Войдите в систему: используйте логин root и установленный пароль.

Страница входа GitLab

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

Панель управления GitLab

Изменение профиля и имени пользователя

Нажмите на иконку профиля в правом верхнем углу, затем “Settings”. Обновите имя, e‑mail и введите новый username.

Изменение профиля в GitLab

В разделе “Account” смените имя пользователя root на удобное значение.

Смена имени пользователя root

Добавление SSH-ключа

Сгенерируйте ключ, если он ещё не создан:

ssh-keygen

Скопируйте содержимое ~/.ssh/id_rsa.pub и вставьте в разделе “SSH Keys” в веб-интерфейсе GitLab.

Генерация SSH-ключа Добавление SSH-ключа в GitLab

Настройка лимита проектов для аккаунтов

В “Settings > General” найдите секцию “Account and limit” и задайте “Default projects limit” по потребности.

Настройка лимита проектов

Шаг 7 — Создание проекта и первый коммит

Создание проекта через веб-интерфейс

Нажмите кнопку “+” в правом верхнем углу, создайте новый проект, укажите имя и описание.

Создание проекта в GitLab Форма создания проекта

Настройка Git на локальной машине

Установите глобальные настройки пользователя git и клонируйте проект:

git config --global user.name "hakase"
git config --global user.email "you@example.com"

git clone https://gitlab.example.com/youruser/test-project.git
cd test-project/

Клонирование проекта на локальную машину

Внесение изменений и push

Отредактируйте README.md, затем выполните коммит и отправку:

git add .
git commit -m "Change README.md"
git push origin master

git push origin master

Проверьте в веб-интерфейсе наличие коммита и изменения файла.

Отражение изменений в GitLab

Поздравляем — GitLab установлен и протестирован.

Критерии приёмки

  • веб-интерфейс доступен по HTTPS на вашем домене;
  • вход под пользователем root возможен после смены пароля;
  • SSH-ключ добавлен и push из локальной машины проходит успешно;
  • порты 80/443/22 открыты и корректно перенаправляются/обрабатываются;
  • gitlab-ctl reconfigure завершился без ошибок.

Типовые проблемы и их решение (runbook)

  1. Ошибка получения сертификата Let’s Encrypt (порт 80 занят):

    • временно остановите nginx: sudo gitlab-ctl stop nginx
    • запустите certbot (standalone) или используйте webroot
    • после получения сертификата запустите gitlab-ctl reconfigure
  2. Problem: nginx не стартует после reconfigure:

    • проверьте /var/log/gitlab/nginx/error.log и /var/log/gitlab/reconfigure/last_run
    • ошибки в путях к сертификатам: убедитесь, что файлы доступны и права корректны
  3. Push не проходит по SSH:

    • проверьте, что SSH-ключ добавлен в профиль и что git clone/ssh использует правильный URL (ssh vs https)
    • убедитесь, что порт 22 открыт: firewall-cmd –list-services
  4. Медленная работа GitLab:

    • проверьте использование CPU/RAM/IO (top, iostat, sar)
    • Omnibus включает PostgreSQL и Redis; при нехватке ресурсов рассмотрите выделение больше памяти или внешние сервисы
  5. Проблемы при обновлении пакета Omnibus:

    • делайте бэкап: sudo gitlab-rake gitlab:backup:create
    • обновляйте пакет через dnf, затем выполняйте gitlab-ctl reconfigure

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

  • Используйте Helm-чарты и Kubernetes для масштабирования и отказоустойчивости.
  • Для крупных инсталляций разделяйте сервисы (внешняя база данных, Redis, объектное хранилище). Omnibus удобен для простых установок.
  • Если вы не хотите управлять SSL вручную — можно отключить встроенный nginx и настроить внешний прокси (например, Traefik) для получения сертификатов.

Руководство по откату (rollback)

  1. Если после обновления или изменения конфигурации GitLab перестал работать, сначала выполните бэкап данных.
sudo gitlab-rake gitlab:backup:create
  1. Если нужно откатиться к предыдущей версии Omnibus — установите старый rpm и выполните reconfigure.
  2. Если необходимо быстро вернуть доступ — временно откройте HTTP и отключите redirect to HTTPS в gitlab.rb, затем reconfigure.

Советы по безопасности

  • Включите двухфакторную аутентификацию (2FA) для важных пользователей.
  • Отключите регистрацию по умолчанию, если GitLab используется в приватной сети: в “Settings > General” отключите Sign-up.
  • Регулярно применяйте обновления безопасности для ОС и Omnibus.
  • Храните резервные копии репозиториев и конфигурации: автоматизируйте gitlab-rake backup.

Модель принятия решений и проверка готовности

Mermaid-диаграмма для выбора развертывания:

flowchart TD
  A[Нужен GitLab?] --> B{Нужна ли быстрая установка?}
  B -- Да --> C[Omnibus на одном сервере]
  B -- Нет --> D{Требуется масштабируемость?}
  D -- Да --> E[Kubernetes + Helm]
  D -- Нет --> F[Разделение компонент: внешняя БД, Redis, объектное хранилище]
  C --> G[Поддержка простая]
  E --> G
  F --> G

Роли и чек-листы перед запуском

Системный администратор:

  • проверить DNS A-запись;
  • открыть порты в брандмауэре;
  • обезопасить SSH доступ.

DevOps-инженер:

  • подготовить домен и certbot;
  • настроить резервное копирование (gitlab-rake);
  • протестировать reconfigure и логи.

Разработчик:

  • проверить доступ к репозиторию по SSH/HTTPS;
  • сделать тестовый push;
  • проверить CI/CD раннеры (если применимо).

Кому подойдёт этот гид

Подойдёт для небольших команд и тестовых окружений. Для крупных production-сред рассмотрите архитектуру с распределением сервисов и внешним хранением артефактов.

Факто-бокс — ключевые параметры

  • Рекомендуемые ресурсы: 4 ГБ RAM, 30 ГБ диска, 2 CPU.
  • Ключевые порты: 22 (SSH), 80 (HTTP), 443 (HTTPS).
  • Варианты продуктов от GitLab Inc.: Community Edition (CE), Enterprise Edition (EE), SaaS (gitlab.com).

Совместимость и миграция

Если вы мигрируете с более старых выпусков CentOS, учтите особенности systemd и версии пакетов. CentOS 8 имеет свои жизненные циклы; при долгосрочных планах развёртывания рассмотрите совместимые дистрибутивы (AlmaLinux, Rocky) для поддерживаемости.

Краткое резюме

  • Установили GitLab CE через Omnibus на CentOS 8;
  • настроили HTTPS с помощью Let’s Encrypt и dhparam;
  • открыли нужные порты в firewalld;
  • выполнили базовую постустановку и протестировали push.

Если нужно, могу подготовить автоматизированный Ansible-плейбук для полной установки по этому гайду.

Источники инструментов: Omnibus GitLab (репозиторий пакетов), certbot (Let’s Encrypt).

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро