Если вам необходимо развернуть собственную систему управления версиями на своих серверах, то обратите внимание на Gitflic.
Если не знаете, что такое Gitflic, то изучите информацию в интернете. В данной статье не будем рассматривать возможности данной системы, так как о них вы можете узнать зарегистрировавшись на официальном сайте и «пощупаd» их вживую. В статье мы рассмотрим установку решения на собственные сервера.
Gitflic бесплатен. Плата потребуется за дополнительный определённый функционал. Если без этого функционала вы не можете обойтись, то можете рассмотреть систему Gitea установка которой описана в статье Установка Gitea на CentOS с помощью Snap.
Используемые технологии:
- Rocky Linux 9 (близнецы: Red Hat, CentOS, AlmaLinux).
- PostgreSQL 15+. Установка описана в отдельной статье.
- Redis.
- RabbitMQ
При необходимости установите отсутствующие программы:
sudo yum install unzip -y
sudo yum install java -y
Скачайте дистрибутив последней версии Gitflic с официального сайта.
В статье описываю установку RabbitMQ, который нужен для Enterprise версии Gitflic. Если версия не Enterprise, то она работает без RabbitMQ и у неё нет даже настроек подключения к нему. Поэтому вы можете пропустить этот шаг, только удалите из файла gitflic.service упоминание RabbitMQ — rabbitmq-server.service. Если вам это не важно, то оставьте всё как есть и выполните все шаги из статьи.
Настройка базы данных
Установите расширения и дополнения для PostgreSQL выполнив команду:
sudo yum install postgresql-contrib -y
Команда может отличаться если у вас установлено несколько экземпляров PostgreSQL. Пример:
sudo yum install postgresql-contrib-15 -y
Создадим базу данных и установим расширение pgcrypto:
su - postgres
psql -c "CREATE DATABASE gitflic;"
psql -c "CREATE ROLE gitflic LOGIN SUPERUSER PASSWORD 'gitflic';"
psql -d gitflic -c "CREATE EXTENSION if not exists "pgcrypto" SCHEMA public;"
Проверка, что расширение в базе установлено:
psql -d gitflic -c "\dx pgcrypto;"

Выйти из-под учётной записи postgres:
exit
Изменение SSH порта
Gitflic использует стандартный 22 порт для подключения к репозиторию по SSH (запускает собственный ssh-сервер на данном порту). Его можно изменить, но тогда потребуются дополнительные настройки прокси, поэтому мы этого делать не будем, а изменим порт для sshd с 22 на 2222, для подключения и администрирования системы по SSH. Для этого в файле /etc/ssh/sshd_config необходимо расскоментировать строку:
# Port 22
И указать порт 2222:
Port 2222
Сохранить файл. Разрешить в SELinux работу ssh по порту отличному от 22:
sudo semanage port -a -t ssh_port_t -p tcp 2222
sudo systemctl restart sshd
Открыть порты в firewalld:
sudo firewall-cmd --zone=public --add-port=2222/tcp --permanent
sudo firewall-cmd --zone=public --add-port=22/tcp --permanent
sudo firewall-cmd --reload
Установка Redis
sudo yum install redis -y
sudo systemctl enable redis
sudo systemctl start redis
Больше не нужно никаких настроек.
Если у вас возникли проблемы с установкой, то смотрите другие варианты установки на официальном сайте Redis https://redis.io/docs/install/install-redis/
Установка RabbitMQ
Создадим файл с описанием репозитория RabbitMQ.
sudo touch /etc/yum.repos.d/rabbitmq.repo
Внести в файл /etc/yum.repos.d/rabbitmq.repo следующие данные:
# Содержимое файла /etc/yum.repos.d/rabbitmq.repo
## Erlang RPM
[modern-erlang]
name=modern-erlang-el9
# uses a Cloudsmith mirror @ yum.novemberain.com.
# Unlike Cloudsmith, it does not have any traffic quotas
baseurl=https://yum1.novemberain.com/erlang/el/9/$basearch
https://yum2.novemberain.com/erlang/el/9/$basearch
https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/rpm/el/9/$basearch
repo_gpgcheck=1
enabled=1
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md
[modern-erlang-noarch]
name=modern-erlang-el9-noarch
# uses a Cloudsmith mirror @ yum.novemberain.com.
# Unlike Cloudsmith, it does not have any traffic quotas
baseurl=https://yum1.novemberain.com/erlang/el/9/noarch
https://yum2.novemberain.com/erlang/el/9/noarch
https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/rpm/el/9/noarch
repo_gpgcheck=1
enabled=1
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key
https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md
[modern-erlang-source]
name=modern-erlang-el9-source
# uses a Cloudsmith mirror @ yum.novemberain.com.
# Unlike Cloudsmith, it does not have any traffic quotas
baseurl=https://yum1.novemberain.com/erlang/el/9/SRPMS
https://yum2.novemberain.com/erlang/el/9/SRPMS
https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/rpm/el/9/SRPMS
repo_gpgcheck=1
enabled=1
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key
https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
## RabbitMQ Server
[rabbitmq-el9]
name=rabbitmq-el9
baseurl=https://yum2.novemberain.com/rabbitmq/el/9/$basearch
https://yum1.novemberain.com/rabbitmq/el/9/$basearch
https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/rpm/el/9/$basearch
repo_gpgcheck=1
enabled=1
# Cloudsmith's repository key and RabbitMQ package signing key
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key
https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md
[rabbitmq-el9-noarch]
name=rabbitmq-el9-noarch
baseurl=https://yum2.novemberain.com/rabbitmq/el/9/noarch
https://yum1.novemberain.com/rabbitmq/el/9/noarch
https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/rpm/el/9/noarch
repo_gpgcheck=1
enabled=1
# Cloudsmith's repository key and RabbitMQ package signing key
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key
https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md
[rabbitmq-el9-source]
name=rabbitmq-el9-source
baseurl=https://yum2.novemberain.com/rabbitmq/el/9/SRPMS
https://yum1.novemberain.com/rabbitmq/el/9/SRPMS
https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/rpm/el/9/SRPMS
repo_gpgcheck=1
enabled=1
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key
gpgcheck=0
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md
Обратите внимание на то, что файл создан для Red Hat подобных систем 9-й версии. Если вы настраиваете всё на версии выше 9-й, то в файле измените в требуемых местах на требуемую вам версию.
Выполнить команды:
sudo yum update -y
sudo yum install socat logrotate -y
sudo yum install -y erlang rabbitmq-server
sudo systemctl enable rabbitmq-server
sudo systemctl start rabbitmq-server
Если у вас возникли проблемы с установкой, то смотрите другие варианты установки на официальном сайте RabbitMQ https://www.rabbitmq.com/docs/install-rpm
Установка Gitflic
Поместить скачанный архив с дистрибутивом в каталог /tmp.
Для простоты восприятия статьи у меня архив будет называться gitflic.zip без указания версий. Вы же при написании команд ориентируйтесь на то название архива, который вами был скачан с сайта поставщика решения.
Распаковываем архив:
unzip /tmp/gitflic.zip -d /tmp
rm /tmp/gitflic.zip
В каталоге tmp появится каталог gitflic. Устанавливаем:
sudo chmod a+x /tmp/gitflic/install.sh
cd /tmp/gitflic/
sudo ./install.sh
В течении 6 секунд успейте на запрос ввести Y и установка произойдёт мгновенно:
Далее необходимо сконфигурировать систему:
cd /opt/gitflic/
sudo chmod a+x /opt/gitflic/gitflic.sh
sudo /opt/gitflic/gitflic.sh configure
При конфигурировании, если оставляем значение по умолчанию, нажимаем Enter без ввода данных. На скриншоте выделил изменяемые значения или же значение по умолчанию, если их не менял:
Когда ранее создавали базу данных PostgreSQL, то была создана учётная запись по умолчанию, поэтому при настройке всё оставили по умолчанию. Если вы какие-то порты и учётки изменяли, а также если у вас Redis или PostgreSQL находятся на других серверах, то указывайте их данные.
Откроем порт подключения к Gitflic, который указали при настройке:
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload
Настройка автозапуска
Настроим службу для автозапуска системы, после перезагрузки системы.
sudo touch /usr/lib/systemd/system/gitflic.service
sudo chmod 664 /usr/lib/systemd/system/gitflic.service
В файл /usr/lib/systemd/system/gitflic.service внести следующие данные:
[Unit]
Description=Startup unit for run Gitflic service
Documentation=https://docs.gitflic.space/setup/users_docs/systemd
Requires=sshd.service redis.service network.target postgresql.service
After=sshd.service redis.service network.target rabbitmq-server.service postgresql.service
[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/opt/gitflic/
ExecStart=/usr/bin/java -jar /opt/gitflic/gitflic.jar --spring.config.additional-location=file:/etc/gitflic/
ExecStop=/bin/kill -s 15 $MAINPID
Restart=on-failure
RestartSec=30
[Install]
WantedBy=multi-user.target
Прописать и запустить службу:
sudo systemctl daemon-reload
sudo systemctl enable gitflic.service
sudo systemctl start gitflic.service
Сервис стартует не мгновенно, поэтому после запуска необходимо пару минут подождать.
Работа с системой
После настройки переходим по URL сервера, на котором развернули Gitflic. Пример, http://192.168.31.124, проходим авторизацию и настраиваем систему под свои нужды.
Стандартный логин и пароль:
Почта: adminuser@admin.local
Пароль: qwerty123
Официальная документация https://docs.gitflic.space
Хранение настроек
Настройки хранятся в файле /etc/gitflic/application.properties
Если в момент настройки системы через скрипт вы где-то ошиблись или хотите поменять в будущем какие-либо настройки, то правьте данный файл. В нём же можно изменить настройки email для уведомлений.
Файлы
Прикладываю архив с файлами rabbitmq.repo и gitflic.service.