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

Установка GitLab CE на CentOS 7 — пошаговое руководство

• 8 min read • DevOps • Обновлено 19 Nov 2025
GitLab CE на CentOS 7 — установка и настройка
GitLab CE на CentOS 7 — установка и настройка

Важно: всё руководство предполагает контроль над доменом (например, gitlab.hakase-labs.co) и привилегии root или sudo на сервере.

GitLab — это веб‑ориентированный менеджер Git‑репозиториев на базе Rails, разработанный GitLab Inc. Он включает в себя систему задач, вики, обзоры кода и ленты активности. В этом руководстве мы устанавливаем GitLab CE (Community Edition) через официальный Omnibus‑пакет на CentOS 7.

Кратко о продуктах GitLab от компании:

  • GitLab CE — бесплатная версия для самостоятельного развёртывания (self‑hosted).
  • GitLab EE — платная версия с расширенными функциями для предприятий.
  • GitLab.com — SaaS‑сервис от GitLab Inc.
  • GitLab.io — частный инстанс, управляемый GitLab Inc.

Цель руководства: быстро развернуть безопасный инстанс GitLab CE с HTTPS (Let’s Encrypt), открыть необходимые порты и выполнить базовую проверку работы (вход, пуш через HTTPS/SSH).

Для кого это руководство

  • Системным администраторам и инженерам DevOps, которые хотят быстро поднять GitLab на CentOS 7.
  • Командам, которым нужен локальный инстанс GitLab для приватных репозиториев.

Что будет сделано

  1. Установка необходимых пакетов
  2. Добавление репозитория и установка GitLab CE (Omnibus)
  3. Настройка внешнего URL
  4. Получение SSL‑сертификата через Let’s Encrypt и генерация dhparam
  5. Включение HTTPS в Nginx и принудительный редирект с HTTP
  6. Настройка firewalld
  7. Первичная настройка в веб‑интерфейсе (пароль root, SSH‑ключи, лимиты)
  8. Тестирование: создание проекта, первый коммит и пуш

Требования и рекомендации

  • Операционная система: CentOS 7 (64‑bit)
  • Минимум ОЗУ: 2 ГБ (рекомендуется 4 ГБ для плавной работы)
  • Доступ к домену (A/AAAA запись, указывающая на сервер)
  • Привилегии root или sudo
  • Резервный канал для восстановления (резервные копии)

1. Подготовка пакетов

Установим базовые пакеты: curl для загрузки скриптов, менеджер SELinux (policycoreutils), OpenSSH и postfix как локальный SMTP‑сервер.

yum -y install curl policycoreutils openssh-server openssh-clients postfix

Запустите службы sshd и postfix, а затем включите автозапуск при старте системы:

systemctl start sshd
systemctl start postfix
systemctl enable sshd
systemctl enable postfix

Пояснение: postfix используется GitLab для отправки уведомлений и писем восстановления паролей; при необходимости можно использовать внешний SMTP.

2. Добавление репозитория и установка GitLab CE

Скачайте и выполните официальный скрипт добавления репозитория GitLab CE, затем установите пакет gitlab‑ce:

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

yum -y install gitlab-ce

После установки вы увидите вывод конфигурации и ссылку на веб‑интерфейс.

Установка Gitlab

Примечание: Omnibus‑пакет устанавливает все необходимые компоненты (PostgreSQL, Redis, Unicorn/ Puma, Nginx) в удобной сборке.

3. Настройка внешнего URL

Перейдите в каталог конфигурации и отредактируйте /etc/gitlab/gitlab.rb. В строке external_url укажите ваш домен. В примере используется gitlab.hakase-labs.co.

cd /etc/gitlab/
vim gitlab.rb

Измените строку на:

external_url 'http://gitlab.hakase-labs.co'

Сохраните файл и выйдите. Мы временно указываем http для получения сертификата Let’s Encrypt (standalone), затем переключим на https.

4. Получение SSL‑сертификата Let’s Encrypt и генерация DHPARAM

Для HTTPS используем бесплатный сертификат Let’s Encrypt и сгенерируем dhparam для усиления безопасности TLS.

Установка клиента letsencrypt (в некоторых репозиториях пакет называется certbot — проверьте для вашей системы):

yum -y install letsencrypt

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

letsencrypt certonly --standalone -d gitlab.hakase-labs.co

Следуйте интерактивным подсказкам: укажите email для уведомлений об истечении срока, согласитесь с условиями. Сертификаты появятся в /etc/letsencrypt/live/gitlab.hakase-labs.co/

Установка SSL сертификата

Далее создаём директорию для SSL‑файлов GitLab и генерируем dhparam (2048 или 4096 бит — 4096 медленнее, но безопаснее):

mkdir -p /etc/gitlab/ssl/
sudo openssl dhparam -out /etc/gitlab/ssl/dhparams.pem 2048
chmod 600 /etc/gitlab/ssl/*

Генерация dhparam

Важно: для режима standalone certbot/letsencrypt поднят временный HTTP‑сервер, поэтому убедитесь, что никаких других процессов не заняли порт 80.

5. Включение HTTPS в Nginx для GitLab

Отредактируйте /etc/gitlab/gitlab.rb и переключите external_url на https. Затем укажите пути к сертификатам и dhparam:

external_url 'https://gitlab.hakase-labs.co'

nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/letsencrypt/live/gitlab.hakase-labs.co/fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/gitlab.hakase-labs.co/privkey.pem"
nginx['ssl_dhparam'] = "/etc/gitlab/ssl/dhparams.pem"

После правок примените конфигурацию Omnibus:

gitlab-ctl reconfigure

Если всё прошло успешно, Nginx будет настроен на HTTPS и будет перенаправлять HTTP на HTTPS.

Reconfigure gitlab

Совет: если reconfigure выдал ошибки, смотрите логи в /var/log/gitlab/* и выполните gitlab-ctl tail для потокового просмотра.

6. Настройка firewalld

Если вы используете firewalld, откройте необходимые сервисы: ssh, http и https.

yum -y install firewalld
systemctl start firewalld
systemctl enable firewalld

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

Конфигурация брандмауэра

Альтернатива: если вы используете iptables или внешний балансировщик, откройте порты 22 (SSH), 80 (HTTP) и 443 (HTTPS) на соответствующих сетевых уровнях.

7. Первичная настройка через веб‑интерфейс

Откройте браузер и перейдите по адресу https://gitlab.hakase-labs.co. При первом входе система попросит изменить пароль пользователя root.

Сброс и смена пароля root

Установите безопасный пароль и сохраните его в надёжном хранилище паролей.

Установка пароля Gitlab

Настройка профиля и имени пользователя

Перейдите в правый верхний угол — Settings (Настройки) → Profile (Профиль) и заполните имя и email. Затем в Account (Учётная запись) смените имя пользователя (username) при необходимости.

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

Изменение email

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

Если у вас нет SSH‑ключа, создайте его локально:

ssh-keygen

Скопируйте содержимое ~/.ssh/id_rsa.pub и вставьте в раздел SSH Keys в профиле GitLab → Add key.

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

Ограничения регистрации и лимиты

В Admin Area → Settings можно настроить лимиты проектов на пользователя и белый список доменов для регистрации.

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

Настройки аккаунтов и лимитов

Сохраните изменения.

8. Тестирование работы: создание проекта и первый коммит

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

На верхней панели нажмите «+» → New project. Заполните имя, описание и уровень видимости, затем Create project.

Создание проекта

Настройка проекта

Первый коммит и пуш через HTTPS

Сначала настройте git на вашей локальной машине:

git config --global user.name "hakase"
git config --global user.email "[email protected]"

Клонируйте репозиторий (пример для HTTPS):

git clone https://gitlab.hakase-labs.co/hakase/howtoforge.git
cd howtoforge/
vim README.md

git add .
git commit -m 'Add README.md file by hakase-labs'
git push origin master

При пуше введите учётные данные пользователя (root или другой пользователь). После успешного пуша вы увидите файл в веб‑интерфейсе.

Тестовый коммит

Просмотр проекта

Проверка: вы должны иметь возможность просматривать проект, видеть коммиты и развернуть CI/CD (при наличии runner’ов).

Дополнительные рекомендации и лучшие практики

Обновления и резервное копирование

  • Резервная копия Omnibus GitLab:
# Создать бэкап
gitlab-rake gitlab:backup:create
# Резервные файлы хранятся в /var/opt/gitlab/backups
  • Храните резервные копии вне сервера (S3, NFS или другой удалённый бэкап).
  • Перед обновлением GitLab делайте бэкап базы и конфигурации.

Автоматическое обновление сертификатов Let’s Encrypt

Let’s Encrypt сертификаты действуют 90 дней. Настройте автоматическое обновление через cron:

# Еженедневная проверка и перезагрузка GitLab при обновлении сертификата
0 3 * * * /usr/bin/letsencrypt renew --quiet --deploy-hook "/usr/bin/gitlab-ctl reconfigure"

Проверьте путь к бинарнику letsencrypt/certbot на вашей системе.

Логи и диагностика

  • Просмотр логов Omnibus:
gitlab-ctl tail
# или отдельные логи в /var/log/gitlab/
  • Перезапуск всех служб:
gitlab-ctl restart
  • Состояние служб:
gitlab-ctl status

SELinux и контексты

Если включён SELinux, убедитесь, что файлы сертификатов и каталоги имеют корректные контексты SELinux. При проблемах временно включите permissive режим для тестирования:

setenforce 0  # временно, для отладки

После выявления причины восстановите enforcing и настройте контексты.

Безопасность

  • Запретите вход root по SSH (PermitRootLogin no) и создайте администратора GitLab с двумя факторами аутентификации (2FA).
  • Ограничьте доступ к серверу по IP для панели администратора через firewall или VPN.
  • Шифруйте резервные копии и храните ключи отдельно.

Почтовая подсистема

Postfix, установленный локально, подходит для базовых уведомлений. Для стабильной доставки в продакшн рекомендуем настроить внешний SMTP‑сервер (например, через корпоративный SMTP или специализированные сервисы).

Тест-кейсы и критерии приёмки

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

  • Доступ по https://gitlab.hakase-labs.co без предупреждений о сертификате.
  • Вход под пользователем root (с изменённым паролем).
  • Пуш через HTTPS и/или SSH добавлением ключа: коммит должен отобразиться в интерфейсе.
  • Резервная копия создаётся командой gitlab-rake gitlab:backup:create.
  • Службы GitLab в status показывают состояние «run».

Минимальные тесты:

  1. Открыть страницу входа и сменить пароль root. 2. Добавить SSH‑ключ и выполнить git push по SSH. 3. Создать проект и загрузить README через веб. 4. Создать бэкап и проверить наличие файла в /var/opt/gitlab/backups.

Рекомендации по масштабированию и альтернативы

  • Для больших нагрузок (много CI/CD, большое число репозиториев) рассмотрите GitLab EE и разделение ролей (отдельный PostgreSQL, Redis, файловое хранилище и балансировщики).
  • Альтернативы Omnibus: установка GitLab из исходников (source install) даёт тонкую настройку, но требует больше времени и опыта.

Ментальная модель: Omnibus = «всё в одном» (быстро и просто). Source install = «компоненты по частям» (гибкость и сложность).

Роли и чек‑листы (кратко)

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

  • Обновить ОС и пакеты
  • Настроить брандмауэр
  • Настроить автоматическое обновление сертификатов
  • Настроить резервное копирование и мониторинг

DevOps:

  • Настроить CI/CD Runner’ы
  • Настроить внешние хранилища артефактов
  • Интегрировать мониторинг (Prometheus/Grafana)

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

  • Добавить SSH‑ключ
  • Создать проект и выполнить push/pull
  • Настроить вебхуки и CI/CD пайплайны

Частые проблемы и их решения

Проблема: reconfigure зависает или выдаёт ошибки

  • Проверьте логи /var/log/gitlab/reconfigure/.log и /var/log/gitlab/nginx/.log
  • Убедитесь, что порты 80/443 свободны при запуске certbot

Проблема: пуш по SSH не проходит

  • Проверьте добавленный публичный ключ в профиле
  • Убедитесь, что sshd слушает на 22 и firewall разрешает доступ

Проблема: SSL‑сертификат не обновился

  • Запустите letsencrypt renew вручную и посмотрите вывод. Проверьте cron/systemd‑таймер.

Краткая фабула (экспертное мнение)

Эксперт: «Omnibus‑пакет — лучший вариант для быстрой и надёжной установки GitLab в небольших и средних окружениях. Он экономит время и минимизирует операционные ошибки при настройке отдельного стека.»

Глоссарий — 1‑строчные определения

  • Omnibus: сборка, которая включает все компоненты GitLab в один пакет.
  • external_url: параметр конфигурации, указывающий базовый URL для доступа к GitLab.
  • dhparam: параметры Диффи‑Хеллмана для повышения безопасности TLS.
  • certbot/letsencrypt: клиент для получения SSL сертификатов от Let’s Encrypt.

Итог

Вы успешно установили и настроили GitLab CE на CentOS 7 с поддержкой HTTPS через 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 быстро