https://timeweb.cloud/tutorials/git/ustanovka-gitlab-na-ubuntu-22-04
https://oliversmith.io/technology/2014/07/18/reverse-proxying-gitlab-with-apache-and-ssl/
GitLab – это программный инструмент, созданный с целью хранения и управления репозиториями Git. Он облегчает и ускоряет процесс совместного написания кода, его тестирования и развертывания.
Основной функционал GitLab:
- Планирование и управление разрабатываемыми проектами;
- Создание, просмотр и управление кодом и данными проектов;
- Проверка кода благодаря автоматическому тестированию и отчетности;
- Мониторинг ресурсов и просмотр метрик;
- Использование готовых шаблонов моделей.
На этом список функционала не заканчивается. Это лишь основная часть, необходимая для понимания важности использования этого ПО в проектной деятельности.
В статье будет подробно описана инструкция по самостоятельной установке GitLab на Ubuntu и последующей его настройке.
Предварительные требования
Ниже приведен список требований, достаточных для установки GitLab на сервер.
Во-первых, понадобится сервер, расположенный либо на личном компьютере, либо в облаке. Исходя из документационных требований к GitLab, сервер должен быть снабжен:
- Четырехъядерным процессором (нагрузка до 500 пользователей);
- 4 ГБ оперативной памяти (нагрузка до 500 пользователей);
- ОС Ubuntu 22.04.
Во-вторых, понадобится доменное имя, которое будет указывать на соответствующий сервер. В данной инструкции в качестве примера будет использоваться имя test.com.
Шаг 1. Добавление необходимых зависимостей
Первым этапом будет установка необходимого для GitLab ПО. Скачать его можно из репозиториев Ubuntu.
Выполняем базовое обновление пакетов:
sudo apt-get update
А после устанавливаем необходимые зависимости:
sudo apt-get install -y curl openssh-server ca-certificates tzdata perl
Есть вероятность, что часть ПО из списка уже была установлена на сервер ранее. Лучшим решением будет продублировать всю строку, указанную выше, и убедиться, что все успешно установлено.
Следующее, что нужно установить на сервер — это Postfix (или Sendmail), который служит механизмом отправки уведомлений на email:
sudo apt-get install -y postfix
Во время инсталляции программы в открывшемся окне необходимо выбрать «Интернет-сайт», как показано на рисунке ниже.
Далее указываем домен сервера — в нашем случае test.com.
Шаг 2. Установка GitLab
Теперь можно начинать устанавливать GitLab. Загрузим необходимый скрипт:
cd /tmp
curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh
Чтобы посмотреть и изучить работу данного скрипта, вводим команду:
sudo less /tmp/script.deb.sh
Если вас всё устраивает, можно переходить непосредственно к запуску скрипта:
sudo bash /tmp/script.deb.sh
Как только скрипт завершит работу можно начинать установку GitLab:
sudo apt install gitlab-ce
Шаг 3. Настройка брандмауэра
Для начала необходимо проверить по каким протоколам разрешен трафик. Чтобы посмотреть статут брандмауэра, вводим команду:
sudo ufw status
Как видно по рисунку, в данный момент разрешен трафик только по протоколу SSH. Вдобавок к SSH, нужно разрешить трафик по протоколам HTTP и HTTPS из-за того, что приложение GitLab взаимодействует с интернетом.
Разрешаем доступ HTTP:
sudo ufw allow http
А теперь HTTPS:
sudo ufw allow https
После внесенных изменений снова посмотрим статут брандмауэра. Как видно по рисунку ниже, все изменения вступили в силу.
Шаг 4. Настройка файла конфигурации
Перед запуском GitLab важно отредактировать конфигурацию в файле gitlab.rb
с помощью редактора nano
:
sudo nano /etc/gitlab/gitlab.rb
В открывшемся файле находим строку продемонстрированную на картинке ниже и изменяем имя домена на test.com. У вас будет другое имя. Также сразу перейдем на более безопасный протокол шифрования — HTTPS.
После этого найдем следующую строку, также продемонстрированную на картинке ниже, и вставим в пустые скобки после знака равенства актуальный email. Это необходимо для отправки сообщения в случае возникновения проблем с доменом. Также не забываем, что нужно убрать комментирование перед этой строкой, чтобы все заработало.
Выполняем сохранение (CTRL+O) и выходим из файла (CTRL+X). Чтобы система внесла все изменения, запускаем реконфигурацию:
sudo gitlab-ctl reconfigure
Запущенный процесс не только передаст всю необходимую информацию приложению о сервере, но и перенастроит Let’s Encrypt для указанного домена.
Configuring SSL and Gitlab through an Apache Reverse Proxy
18 Jul 2014
I’ve recently started to use Gitlab as an alternative to a Github paid account for projects I don’t wish to make public. I wanted to install Gitlab on a server which is used for a few other applications which all use Apache, while Gitlab is really easy to install it installs nginx by default and expects to run on port 80. Normally in this situation I would configure Nginx to point to a non standard port, proxy through apache on the same server and terminate the SSL at apache, however there are some quirks in Gitlab which make this difficult; in this post I’ll describe how to proxy Gitlab through apache using SSL.
The Problem
While Gitlab can be manually installed to work with apache this makes upgrades / changes difficult, it comes with a very nice Chef based installer but it assumes it’s the only thing installed, if a simple HTTPS proxy is configured (terminating the SLL at Apache) then Gitlab will still mix in some non SSL URLs as it thinks it’s still using an unencrypted connection, while not a huge risk this is untidy and annoyed me.
The Solution
The solution is to configure Gitlab to use SSL too and enable an SSL proxy in Apache, this involves defining options in two files:
gitlab.rb
external_url 'https://<url>:4443'
nginx['ssl_certificate'] = "/etc/ssl/localcerts/<certname>.crt"
nginx['ssl_certificate_key'] = "/etc/ssl/localcerts/<keyname>.key"
*After which don’t forget to run
sudo gitlab-ctl reconfigure
to push the changes into the nginx config*
Apache vhost
<VirtualHost <ip>:443>
ServerName <server url>
SSLEngine on
SSLCertificateFile /etc/ssl/localcerts/<certname>.crt
SSLCertificateKeyFile /etc/ssl/localcerts/<keyname>.key
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
SSLProxyEngine on
ProxyRequests Off
ProxyPass / https://<url>:4443/
ProxyPassReverse / https://<url>/
Header edit Location ^http://<url>/ https://<url>/
RequestHeader set X-Forwarded-Proto "https"
</VirtualHost>
Добавить комментарий