
GitLab − веб-платформа для управления жизненным циклом разработки, основанная на Git. GitLab предоставляет инструменты для контроля версий, CI/CD, трекинга задач, код-ревью и развёртывания приложений. Платформа имеет открытую (Community Edition), рекомендуемую для личного использования, небольших команд и проектов с базовыми потребностями, и корпоративную (Enterprise Edition) версии, которая больше подходит для компаний, которым нужны расширенные функции, такие как безопасность, CI/CD, мониторинг и Geo-репликация. Корпоративная версия имеет несколько подписок с разным уровнем функционала. В то время как версия CE остаётся полностью бесплатной.
Далее разберём, как установить GitLab версии Community Edition на VPS, работающий под управлением Debian 12.
Как установить GitLab на Debian
Перед установкой нового программного обеспечения рекомендуется обновить список доступных пакетов:
$ sudo apt update
Далее проинсталлируйте зависимости, необходимые для корректной установки и функционирования GitLab:
$ sudo apt install curl openssh-server ca-certificates perl
В данном случае в систему устанавливаются следующие пакеты:
curl
− инструмент для передачи данных по URL, использующийся в Debian для загрузки скриптов и пакетов;-
openssh-server
− сервер SSH, необходимый для безопасного доступа к репозиториям черезgit clone
,git push
и т. п.; ca-certificates
− набор доверенных SSL-сертификатов, который обеспечивает безопасное HTTPS-соединение с GitLab;perl
− язык сценариев, который используется в некоторых скриптах GitLab, например, для обработки данных.
Кроме того, для отправки email-уведомлений GitLab использует Postfix или какой-либо другой SMTP-сервер. При этом, если вы разворачиваете GitLab для небольшой команды или для тестирования, то можно обойтись и без почтового сервиса. Также вы можете использовать внешний SMTP, например, Gmail, чтобы не устанавливать локальный почтовый сервер. В нашем примере мы будем использовать GitLab без SMTP-сервера.
Следующая команда выполняет настройку репозитория GitLab версии Community Edition при помощи официального скрипта, загружаемого по соответствующей ссылке:
$ curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
Данный скрипт добавляет GPG-ключ GitLab в систему для проверки подлинности пакетов, создаёт файл репозитория и обновляет список пакетов для того, чтобы система смогла увидеть пакеты GitLab. Опция -s
в команде curl
включает «тихий режим» для того, чтобы не отображать прогресс-бар, сообщения об ошибках и другие необязательные выводы.
После чего запустите установку GitLab CE:
$ sudo apt install gitlab-ce
При этом в процессе инсталляции система предупреждает о том, что ваш экземпляр GitLab ещё не настроен и для него невозможно определить имя хоста.

Для того, чтобы произвести необходимые настройки GitLab, следует внести соответствующие изменения в конфигурационный файл. Для этого перейдите в каталог /etc/gitlab/
:
$ cd /etc/gitlab/
После чего откройте для редактирования файл gitlab.rb
:
$ sudo nano gitlab.rb
В файле найдите строку, содержащую параметр external_url
, и укажите в качестве его значения доменное имя, привязанное к вашему виртуальному серверу:
external_url 'http://vash-domain.ru'
Затем сохраните внесённые в файл изменения (Ctrl
o
), закройте его (Ctrl
x
) и пересоберите конфигурацию вашего экземпляра GitLab:
$ sudo gitlab-ctl reconfigure
Процесс реконфигурации может занять до нескольких минут. О его успешном завершении система сообщит при помощи следующего вывода:
gitlab Reconfigured!
Подключение к веб-интерфейсу GitLab
После установки и создания конфигурации вы уже можете подключиться к GitLab через его веб-интерфейс.
Для обеспечения доступа к веб-интерфейсу необходимо сначала разрешить в брандмауэре UFW подключение к серверу по протоколу HTTP, если сетевой экран активирован в вашей системе. Добавление разрешающего правила для данного протокола осуществляется командой:
$ sudo ufw allow http
Поскольку вы ещё не добавляли в систему никаких пользователей, доступ к GitLab может быть осуществлён только при помощи учётной записи root
. По умолчанию пароль пользователя root
указан в файле initial_root_password
, расположенном в каталоге /etc/gitlab/
. Для вывода пароля на экран используйте команду cat
:
$ sudo cat /etc/gitlab/initial_root_password
Для подключения к веб-интерфейсу GitLab скопируйте данный пароль в буфер обмена.

Затем на своём локальном компьютере откройте браузер и перейдите по адресу http://vash-domain.ru
, где замените vash-domain.ru
на доменное имя вашего сервера. Затем в поле Username or primary email
укажите имя пользователя − root
, а в поле Password
вставьте пароль из файла initial_root_password
, скопированный ранее.

Подключившись к веб-интерфейсу GitLab, во-первых, измените пароль учётной записи root
. Для чего перейдите в Configure GitLab
.

Затем кликните в имя пользователя Administrator
.

Далее нажмите кнопку Edit
.

В открывшемся окне дважды укажите новый пароль административной учётной записи в строках Password
и Password confirmation
. Для его сохранения нажмите Save changes
.

После чего система попросит вас переподключиться к веб-интерфейсу. Для аутентификации используйте только что установленный новый пароль.
Как защитить GitLab при помощи сертификата Let’s Encrypt
Чтобы повысить уровень безопасности вашего экземпляра GitLab, рекомендуется обеспечить доступ к его веб-интерфейсу с применением использующего шифрование протокола HTTPS. Это позволит обеспечить конфиденциальность и защиту данных на вашем сервере. Для реализации возможности подключения по HTTPS потребуется установка в GitLab TLS-сертификата, например, от Let’s Encrypt.
GitLab имеет встроенную поддержку Let’s Encrypt, позволяющую автоматически получать и обновлять TLS-сертификаты без ручного вмешательства. Все необходимые для этого компоненты — веб-сервер Nginx и Certbot-подобный механизм, включены в дистрибутив GitLab. Для запроса сертификатов GitLab использует встроенный клиент стандартизированного протокола ACME, на котором работает Let’s Encrypt.
Встроенная в GitLab функция получения TLS-сертификата активируется через конфигурационный файл. Исходя из этого, откройте его для редактирования:
$ sudo nano /etc/gitlab/gitlab.rb
И в нём, во-первых, измените значение параметра external_url
таким образом, чтобы ссылка на доменное имя вашего сервера содержала префикс https://
:
external_url 'https://vash-domain.ru'
Затем раскомментируйте или добавьте в файл строки, содержащие параметры, относящиеся к настройке Let’s Encrypt:
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['vash-address@vash-domain.ru']
letsencrypt['auto_renew'] = true
letsencrypt['auto_renew_hour'] = 0
letsencrypt['auto_renew_minute'] = 30
letsencrypt['auto_renew_day_of_month'] = "1,16"
letsencrypt['auto_renew_log_directory'] = '/var/log/gitlab/lets-encrypt'
В данном случае:
letsencrypt['enable'] = true
− включает интеграцию с Let’s Encrypt;letsencrypt['contact_emails'] = ['vash-address@vash-domain.ru']
− содержит адрес E-mail для уведомлений от Let’s Encrypt;letsencrypt['auto_renew'] = true
− включает автоматическое обновление сертификатов;letsencrypt['auto_renew_hour'] = 0
− время в часах, в которое будет произведена попытка обновления сертификата (0
означает, что обновление будет запускаться в период 0:00-0:59);letsencrypt['auto_renew_minute'] = 30
− время в минутах, когда будет произведена попытка обновления сертификата (с учётом предыдущего параметра,30
означает, что обновление будет запускаться в 0:30);letsencrypt['auto_renew_day_of_month'] = "1,16"
− периодичность проверки на необходимость обновления сертификата (1,16
означает, что проверка будет запускаться 1-го и 16-го числа каждого месяца);letsencrypt['auto_renew_log_directory'] = '/var/log/gitlab/lets-encrypt'
− расположение логов процесса обновления сертификата.
Закройте файл с сохранением внесённых изменений, после чего запустите процесс пересборки конфигурации GitLab:
$ sudo gitlab-ctl reconfigure
По его завершении проверьте возможность подключения к веб-интерфейсу GitLab с использованием протокола HTTPS.

При этом следует помнить, что если на вашем сервере активен брандмауэр UFW, необходимо разрешить доступ к виртуальной машине для протокола HTTPS:
$ sudo ufw allow https
Вывести на экран список правил брандмауэра можно командой:
$ sudo ufw status
