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

О чём эта инструкция
Цель — развернуть 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
Совет: 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
Примечание: пакет 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 и переподготовит все компоненты.

Если 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.

Совет по безопасности: при доступности GitLab в публичной сети рассмотрите ограничение административного доступа по IP или настройку WAF.
Шаг 6 — Постустановка GitLab через веб-интерфейс
Откройте в браузере https://gitlab.example.com и смените пароль пользователя root.
Смена пароля root
При первом входе вы попадёте на страницу сброса пароля. Задайте надёжный пароль для root.

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

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

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

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

Добавление SSH-ключа
Сгенерируйте ключ, если он ещё не создан:
ssh-keygenСкопируйте содержимое ~/.ssh/id_rsa.pub и вставьте в разделе “SSH Keys” в веб-интерфейсе GitLab.

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

Шаг 7 — Создание проекта и первый коммит
Создание проекта через веб-интерфейс
Нажмите кнопку “+” в правом верхнем углу, создайте новый проект, укажите имя и описание.

Настройка 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
Проверьте в веб-интерфейсе наличие коммита и изменения файла.

Поздравляем — GitLab установлен и протестирован.
Критерии приёмки
- веб-интерфейс доступен по HTTPS на вашем домене;
- вход под пользователем root возможен после смены пароля;
- SSH-ключ добавлен и push из локальной машины проходит успешно;
- порты 80/443/22 открыты и корректно перенаправляются/обрабатываются;
- gitlab-ctl reconfigure завершился без ошибок.
Типовые проблемы и их решение (runbook)
Ошибка получения сертификата Let’s Encrypt (порт 80 занят):
- временно остановите nginx: sudo gitlab-ctl stop nginx
- запустите certbot (standalone) или используйте webroot
- после получения сертификата запустите gitlab-ctl reconfigure
Problem: nginx не стартует после reconfigure:
- проверьте /var/log/gitlab/nginx/error.log и /var/log/gitlab/reconfigure/last_run
- ошибки в путях к сертификатам: убедитесь, что файлы доступны и права корректны
Push не проходит по SSH:
- проверьте, что SSH-ключ добавлен в профиль и что git clone/ssh использует правильный URL (ssh vs https)
- убедитесь, что порт 22 открыт: firewall-cmd –list-services
Медленная работа GitLab:
- проверьте использование CPU/RAM/IO (top, iostat, sar)
- Omnibus включает PostgreSQL и Redis; при нехватке ресурсов рассмотрите выделение больше памяти или внешние сервисы
Проблемы при обновлении пакета Omnibus:
- делайте бэкап: sudo gitlab-rake gitlab:backup:create
- обновляйте пакет через dnf, затем выполняйте gitlab-ctl reconfigure
Варианты и альтернативные подходы
- Используйте Helm-чарты и Kubernetes для масштабирования и отказоустойчивости.
- Для крупных инсталляций разделяйте сервисы (внешняя база данных, Redis, объектное хранилище). Omnibus удобен для простых установок.
- Если вы не хотите управлять SSL вручную — можно отключить встроенный nginx и настроить внешний прокси (например, Traefik) для получения сертификатов.
Руководство по откату (rollback)
- Если после обновления или изменения конфигурации GitLab перестал работать, сначала выполните бэкап данных.
sudo gitlab-rake gitlab:backup:create- Если нужно откатиться к предыдущей версии Omnibus — установите старый rpm и выполните reconfigure.
- Если необходимо быстро вернуть доступ — временно откройте 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).
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента