GitLab — это инструмент для хранения и управления репозиториями Git. Он дает возможность выполнять совместную разработку силами нескольких команд, применять обновления кода и откатывать изменения, если это необходимо.
Рассмотрим установку бесплатной версии GitLab Community Edition (GitLab CE) на сервер с AlmaLinux 8.
Подготовка системы
В качестве подготовки обновим систему, установим дополнительные утилиты, настроем брандмауэр.
Обновление системы:
dnf update -y
dnf remove -y selinux*
dnf install -y wget mc net-tools unzip
В качестве межсетевого экрана будет использоваться iptables.
Удаление Firewalld
Остановка сервиса firewalld:
systemctl stop firewalld
Выключение сервиса автозагрузки firewalld:
systemctl disable firewalld
Маскировка сервиса firewalld:
systemctl mask --now firewalld
Удаление firewalld:
dnf remove -y firewalld
Установка и включение iptables
Установка iptables:
dnf install -y iptables-services
Включение сервиса iptables в автозагрузку:
systemctl enable iptables
Запуск сервиса iptables:
systemctl start iptables
Проверка статуса службы iptables:
systemctl status iptables
Перезагрузка ОС:
reboot
По документации нужно открыть порты 80 и 443, так же открыл порт 8080 сервера приложений Puma, так как только при открытых портах http, https была 502 ошибка.
Создадим файл настроек iptables:
mcedit iptables.sh
и внесем в него следующее содержимое:
#!/bin/sh # - Очищаем таблицы iptables -F iptables -t nat -F iptables -t mangle -F iptables -X # - Политики по умолчанию iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # - Разрешить трафик по петлевому интерфейсу iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # - Разрешим передавать пакеты, относящиеся к уже установленным соединениям iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # - Разрешить входящий PING iptables -A INPUT -p icmp -j ACCEPT # - Разрешить все исходящие iptables -I OUTPUT 1 -j ACCEPT # - Доступ по SSH iptables -A INPUT -p tcp --dport 22 -j ACCEPT # - Разрешить доступ к WEB серверу iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT # - Разрешить доступ к Puma iptables -A INPUT -p tcp --dport 8080 -j ACCEPT # - Сохранить настройки service iptables save
Сохраняем и назначаем права на выполнение:
chmod +x iptables.sh
Выполняем скрипт:
./iptables.sh
Посмотреть список правил iptables можно командой:
iptables --line-numbers -L -v -n
Установка GitLab
Установка необходимых зависимостей:
dnf install -y curl policycoreutils openssh-server perl
Для отправки уведомлений, установим postfix:
dnf install -y postfix
Добавим репозиторий GitLab для бесплатной версии.
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
EXTERNAL_URL="http://gitlab.mailns.local" dnf install -y gitlab-ce
После выполнения установки, появится сообщение о готовности GitLab к работе.
Убедитесь, что вы правильно настроили свой DNS, и замените http://gitlab.mailns.local на свой адрес, по которому вы хотите получить доступ GitLab.
Для HTTPS адресов GitLab автоматически запросит сертификат Let’s Encrypt, для чего требуется входящий HTTP-доступ и действительное имя хоста. Также можете использовать свой собственный сертификат или просто использовать HTTP.
Если вы не указали собственный пароль во время установки, пароль будет сгенерирован случайным образом и сохранен в течение 24 часов в файле /etc/gitlab/initial_root_password. Используйте этот пароль с именем пользователя root для входа.
Откроем файл с паролем:
mcedit /etc/gitlab/initial_root_password
Открываем браузер и вводим адрес, который указали при установки, http://gitlab.mailns.local. Мы должны увидеть страницу авторизации, на которой вводим имя пользователя root и сгенерированный пароль из файла /etc/gitlab/initial_root_password.
Ссылки
Install self-managed GitLab
Troubleshooting Omnibus GitLab installation issues