Установка 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 для приватных репозиториев.
Что будет сделано
- Установка необходимых пакетов
- Добавление репозитория и установка GitLab CE (Omnibus)
- Настройка внешнего URL
- Получение SSL‑сертификата через Let’s Encrypt и генерация dhparam
- Включение HTTPS в Nginx и принудительный редирект с HTTP
- Настройка firewalld
- Первичная настройка в веб‑интерфейсе (пароль root, SSH‑ключи, лимиты)
- Тестирование: создание проекта, первый коммит и пуш
Требования и рекомендации
- Операционная система: 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После установки вы увидите вывод конфигурации и ссылку на веб‑интерфейс.

Примечание: 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‑файлов 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/*
Важно: для режима 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 выдал ошибки, смотрите логи в /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
Установите безопасный пароль и сохраните его в надёжном хранилище паролей.

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


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

Ограничения регистрации и лимиты
В 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 statusSELinux и контексты
Если включён 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».
Минимальные тесты:
- Открыть страницу входа и сменить пароль 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 и базовой безопасностью. Включите регулярные бэкапы, автоматическое обновление сертификатов и мониторинг состояния служб, чтобы поддерживать надёжную и безопасную среду для командной разработки.
Ключевые ссылки для справки:

Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента