Установка и запуск GitFlic
Скачайте последнюю версию GitFlic self-hosted.
Для запуска приложения нужны следующие компоненты:
- Java 11 (протестировано на openjdk 11)
- Redis (протестировано на redis-server 6.2)
- PostgreSQL (протестировано на версиях 11 и 12)
- RabbitMQ 3.12 (для enterprise-версии)
Для корректной работы приложения, требуется расширение pgcrypto для postgresql, для конкретной базы данных в СУБД выполняем запрос: CREATE EXTENSION pgcrypto;
Также необходимы:
- Конфигурация SMTP-сервера, для отправки писем из сервиса.
- Генерация ключа
key.pem
для работы ssh-транспорта git.
Схема работы приложения GitFlic:
Минимальные системные требования:
Параметр | Рекомендации |
---|---|
CPU | 2 ядра Ice Lake |
RAM | 4 Гб |
HDD | Зависит от объёма ваших репозиториев. От 25 Гб |
Установка Java 11
- Ubuntu и debian-based дистрибутивы:
sudo apt install openjdk-11-jdk -y
- РЕД ОС и RedHat дистрибутивы:
sudo dnf install java-11-openjdk -y
-
Альт Сервер все команды в alt-server выполняются под root
su -
-
Для запуска gitflic на Windows рекомендуем воспользоваться запуском через docker compose. Файлы для запуска в докере находятся в архиве с дистрибутивом.
sudo apt update && apt install java-11-openjdk
- Рекомендации при проблемах с установкой java 11 по умолчанию:
Проверьте версию java командой:
java --version
Если версия java не 11 - можно удалить ненужную версию. Проверьте версии java в наличии:
rpm -qa --qf '%{name}\n' | grep java
Удалите ненужную версию командой:
apt-get remove пакет
Установка postgresql
- Ubuntu и debian-based дистрибутивы:
sudo apt install postgresql-12 postgresql-contrib
- Добавление репозиториев, установка для Ubuntu:
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql-12 postgresql-contrib
sudo yum install postgresql-server postgresql-contrib
- Альт Сервер все команды в alt-server выполняются под root
su -
apt-get install postgresql12-server postgresql12-contrib
Создание системных баз данных postgresql
Инициализация сервера:
- Ubuntu и debian-based дистрибутивы:
sudo /etc/init.d/postgresql initdb
- РЕД ОС
sudo postgresql-setup initdb
- Альт Сервер все команды в alt-server выполняются под root
su -
. Запуск сервера происходит как в других версиях, но без использованияsudo
/etc/init.d/postgresql initdb
- Запуск сервера и проверка статуса службы:
sudo systemctl enable postgresql
sudo systemctl status postgresql
Конфигурация postgresql
- Ubuntu и debian-based, РЕД ОС
- Зайдите под пользователем PostgreSQL:
sudo -i -u postgres
# для выхода
\q
- Создайте пользователя и базу данных:
createuser gitflic
createdb gitflic
- Войдите в базу данных:
psql --dbname "gitflic"
- Дайте пароль пользователю:
alter user gitflic with password 'gitflic';
- Загрузите расширение pgcrypto:
CREATE EXTENSION pgcrypto;
- Альт Сервер
- Создайте пользователя и базу данных:
createuser -U postgres --no-superuser --no-createdb --no-createrole --encrypted --pwprompt gitflic
createdb -U postgres -O gitflic gitflic
- Загрузка расширения pgcrypto:
psql -U postgres -d gitflic
# Выход по Ctrl+D или командой quit
alter user gitflic with password 'gitflic';
CREATE EXTENSION pgcrypto;
Возможные ошибки при настройке postresql можно посмотреть здесь.
Установка Redis
- Ubuntu и debian-based дистрибутивы:
sudo apt-get install redis
- РЕД ОС и RedHat дистрибутивы:
sudo dnf install redis -y
- Альт Сервер
apt-get install redis
Запуск Redis:
# Разрешение и добавление сервиса в автозагрузку:
systemctl enable redis
# Для старта сервиса:
systemctl start redis
- Проверка работы Redis:
redis-server --version
Состояние Redis:
sudo systemctl status redis
Убедиться, что Redis запущен (должно вернуться PONG)
redis-cli ping
Настройка SSH порта
Для того, чтобы было возможным использовать remote-url вида git@gitflic.ru:gitflic/gitflic.git
ssh сервер должен быть запущен на стандартном для ssh соединения порту 22.
Во избежание конфликта с ssh gitflic, который слушает 22 порт, рекомендуем изменить стандартный порт для подключения по ssh. Обратите внимание: после внесения изменений, для подключения к серверу по ssh необходимо указывать новый порт, например ssh -p 2222 amazing@84.47.177.90
:
- Ubuntu и debian-based дистрибутивы:
# Меняем порт например на 2222
# Раскомментируйте строку Port 22 и изменим значение на 2222.
sudo nano /etc/ssh/sshd_config
# Перезагрузите демон SSH
sudo systemctl restart ssh
- Альт сервер
nano /etc/openssh/sshd_config
# Раскоментировать строку Port и задать порт отличный от 22, например 2222
systemctl restart sshd
# Меняем порт например на 2222
sudo nano /etc/ssh/sshd_config
# Применяем изменения в системе безопасности. Если их не применить - система заблокирует изменения порта.
sudo semanage port -a -t ssh_port_t -p tcp 2222
sudo systemctl restart sshd
Возможна проблема с semanage Для устранения в РЕДОС 7.3:
dnf install policycoreutils-python-utils
Нестандартный ssh порт на собственном ssh сервере GitFlic
Если вы настроите GitFlic с нестандартным ключом, то вам потребуется модифицировать ваш git-запрос, указав в нём нужный порт. Например, вы запустили GitFlic с параметром ssh.server.port=1234
(указывается в application.properties
). В таком случае, запрос на клонирование репозитория будет выглядеть так:
git clone ssh://git@gitflic.ru:1234/adminuser/test.git
В данном запросе используются следующие параметры:
Параметр | Описание |
---|---|
gitflic.ru |
Доменное имя вашего сервера |
1234 |
Порт указанный в параметре ssh.server.port=1234 в application.properties |
adminuser |
Учётная запись пользователя |
test.git |
Название проекта |
Генерация key.pem для работы ssh-транспорта git
Для генерации ssh ключа откройте терминал и выполните команду:
ssh-keygen -t ed25519
В консоль будет выведен следующий диалог:
Enter file in which to save the key (/home/user/.ssh/id_ed25519):
Нажмите на клавишу Enter.
Система предложит ввести кодовую фразу для дополнительной защиты SSH-подключения (можно пропустить): Enter passphrase (empty for no passphrase):
Ключ будет создан и помещен в директорию /home/user/.ssh/
. Перейдите в директорию /home/user/.ssh
и скопируйте файл с приватным ключом id_ed25519
в директорию cert/
, после переименуйте его в key.pem
. Папку cert/
можно создать где Вам удобно, путь к сертификату указывается при редактировании файла конфигурации application.properties
. Можно разместить ключ в директории по умолчанию в application.properties.
# Создание папки для хранения ключа
mkdir -p /opt/gitflic/var/cert;
# Копирование созданного ключа в папку с переименованием
cp ~/.ssh/id_ed25519 /opt/gitflic/var/cert/key.pem;
# Переход в папку - для создания служебных каталогов
cd /opt/gitflic/var;
# Создание служебных каталогов (объявлены в application.properties)
mkdir repo img releases cicd registry
Также вы можете воспользоваться командами для создания ключа без дополнительных параметров.
- Создание приватного ключа и копирование его в папку
/tmp/gitflic/cert
ssh-keygen -t ed25519 -f id_ed25519 -N "" <br>
mkdir -p /opt/gitflic/var/cert <br>
cp ~/.ssh/id_ed25519 /opt/gitflic/var/cert/key.pem <br>
cd /opt/gitflic/var/ <br>
mkdir repo img releases cicd registry
Установка RabbitMQ
☘️ Данное ПО устанавливается для платной версии self-hosted enterprise. RabbitMQ - это распределенный и горизонтально масштабируемый брокер сообщений, является одним из самых популярных средств для обмена данными между сервисами. Благодаря использованию RabbitMQ увеличивается отказоустойчивость и количество обрабатываемых сообщений в GitFlic.
- Ubuntu и debian-based дистрибутивы:
sudo apt update -y
sudo apt install rabbitmq-server
- Проверить успешную установку компонента erlang:
erl
для выхода из консоли нажмите Ctrl+C
После установки RabbitMQ
сам запускается и добавляется в автозагрузку. Ниже приведены команды которые позволят это сделать вручную
sudo systemctl status rabbitmq-server.service
sudo systemctl enable rabbitmq-server.service
- Для РЕД ОС и RedHat Рекомендации по установке
- Альт Сервер. Рекомендации по установке
Запуск через JAR-файл
Перед запуском приложения , настройте конфигурацию в файле application.properties . C описанием параметров можно ознакомиться в разделе конфигурация application.properties Для запуска приложения в консоли необходимо выполнить команду из директории, где находится исполняемый файл gitflic.jar
:
sudo java -jar gitflic.jar --spring.config.additional-location=file:default-config/
Обратите внимание, в примере указана директория с конфигурационным файлом относительно директории, в которой расположен jar пакет. Вы можете переместить конфиг-файл в любую удобную вам директорию, указав к ней путь в параметре --spring.config.additional-location
. Обратите внимание, что путь к директории должен оканчиваться символом /
Стандартные пользователь и пароль:
- Почта: adminuser@admin.local
- Пароль: qwerty123
При возникновении проблем с запуском приложения, рекомендуем ознакомиться со страницей, где собраны ошибки, с которыми сталкивались пользователи.
Работа с большими репозиториями.
По умолчанию, для JVM автоматически устанавливается минимальное значение выделяемой оперативной памяти (-Xms) в размере 1/64 физической памяти, а максимальное значение (-Xmx) - 1/4 физической памяти. Рекомендуем увеличить максимальное значение при высокой нагрузке на сервер.
java -jar -Xmx3G gitflic.jar --spring.config.additional-location=file:default-config/
Балансировка нагрузки (Кластеризация)
Есть возможность настроить приложение GitFlic с несколькими инстансами. Пример схемы работы приложения GitFlic с балансировкой:
Реестр пакетов
В нашем приложении, из-за уязвимости, связанной с использованием косой черты в кодировке URL (%2F) (источник) включен файрвол, блокирующий потенциально опасные запросы. В связи с этим, не будут работать реестры пакетов npm, пока не настроен nginx в качестве обратного прокси-сервера.
✅ Рекомендуемый вариант? Для работы с реестром пакетов npm необходимо настроить nginx в качестве обратного прокси-сервера приложения GitFlic.
❌ Не рекомендуемый вариант: Альтернатива - отключение файрвола. Не рекомендуем использовать данный вариант.
- Внесите дополнительную настройку в
application.properties
togglz.features.GITFLIC_FIREWALL_SLASH.enabled=true
- Запустить приложение с дополнительным ключом
-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true