Свой собственный Git-сервер на основе Gitea с возможностью CI/CD

Gitea — это легкая и доступная система управления версиями, основанная на технологиях Git. Ее часто выбирают как альтернативу популярным платформам вроде GitHub или GitLab, особенно если важны контроль над данными, безопасность и гибкость настройки. Программа подходит как для отдельных разработчиков, так и для небольших команд, стремящихся совместно работать над проектами в изолированной среде. Однако ее возможности выходят за рамки программирования: Gitea может использоваться для версионирования заметок, хранения конфигурационных файлов, управления документацией и даже синхронизации паролей.

Главное преимущество Gitea — наличие self-hosted решения для собственного развертывания на своем сервере. Это означает, что вы можете установить систему на собственный сервер, будь то облачный инстанс или локальная машина. Такой подход обеспечивает полный контроль над данными и позволяет адаптировать платформу под конкретные задачи.

Архитектура, интеграции и особенности

Gitea строится на принципах работы Git — системы контроля версий, которая позволяет отслеживать изменения в коде, управлять ветками, объединять правки и сохранять историю изменений. Однако, в отличие от базового Git, Gitea предоставляет удобный веб-интерфейс, что делает его доступным даже для новичков.

Архитектура платформы спроектирована с акцентом на легковесность. Для запуска Gitea требуется минимум ресурсов: достаточно сервера с Linux, базы данных (например, MariaDB) и веб-сервера вроде Nginx. Это делает ее идеальным решением для малых проектов, где важна экономия бюджета на инфраструктуре.

Gitea: поддержка CI/CD

Ключевые особенности и интеграции

  • Система отслеживания задач: позволяет создавать задачи, обсуждать их в комментариях и отслеживать прогресс. Например, команда может использовать этот инструмент для управления багами или планирования улучшений продукта.
  • Вики-страницы: встроенный инструмент для создания технической документации. Особенно полезен для проектов с частыми обновлениями, где важно сохранять актуальные инструкции.
  • Инструменты код-ревью: упрощают проверку изменений перед их внедрением в основную ветку. Это помогает поддерживать высокое качество кода и снижает риск ошибок.
  • Управление пользователями и организациями: гибкие настройки прав доступа позволяют ограничивать или расширять возможности разных участников проекта.

Несмотря на то, что Gitea сама по себе предлагает широкий набор функций, ее self-hosted природа открывает возможности для интеграции с другими сервисами. Например, можно подключить систему непрерывной интеграции и доставки (CI/CD), хотя для этого потребуется дополнительная настройка, в отличие от GitLab, где такие функции встроены «из коробки».

Self-Hosted

Развертывание Gitea на собственном сервере или локальное развертывание дает разработчикам и компаниям несколько преимуществ:

  • Полный контроль над данными: ваши репозитории, документы и задачи хранятся на вашем сервере, а не в облаке стороннего провайдера.
  • Высокий уровень безопасности: вы сами устанавливаете политики шифрования, доступа и резервного копирования.
  • Гибкая настройка: возможность адаптировать платформу под специфические нужды, например, интеграция с внутренними инструментами компании.
  • Независимость от внешних сервисов: работа системы не зависит от возможных сбоев или изменений условий использования публичных платформ.

Процесс установки Gitea включает подготовку сервера (например, Ubuntu 22.04), настройку базы данных MariaDB, загрузку исполняемого файла Gitea и конфигурацию через веб-интерфейс. Для обеспечения безопасности обычно используют Nginx в качестве обратного прокси и устанавливают SSL-сертификат с помощью Let’s Encrypt.

Установка и конфигурация

Рассмотрим процесс установки Gitea на Облачном сервере REG.RU. В качестве примера мы будем использовать Ubuntu 24.04 LTS, но стоит отметить, что процесс установки в других дистрибутивах Linux отличается не сильно.

Подготовка сервера

  • Для начала необходимо авторизоваться в Личном кабинете Облаковой инфраструктуры REG.RU в разделе “Мои ресурсы” выбрать пункт “Виртуальные серверы”. Узнайте, что такое Gitea, как она работает, её преимущества и недостатки. Рассмотрим настройку self-hosted Git-сервера, безопасность и сравнение с GitHub/GitLab
  • Далее мы создаем свой облачный сервер (Нажимаем на кнопку “Создать сервер”). Перед нами откроется конфигуратор виртуальных серверов. Узнайте, что такое Gitea, как она работает, её преимущества и недостатки. Рассмотрим настройку self-hosted Git-сервера, безопасность и сравнение с GitHub/GitLab
  • В качестве примера мы будем использовать следующую конфигурацию:
    • Образ ОС: Ubuntu 24.04 LTS.
    • Тарифный план: Минимальные системные требования для Gitea: не менее 2 CPU, не менее 4 ГБ операционной памяти (ОЗУ), не менее 20 ГБ дискового пространства. В качестве примера мы будем использовать простую конфигурацию “Производительный” (2,8 ГГц + NVMe), что до 25% мощнее Стандартного. При большой команде и частых изменений в проекте лучше всего использовать план vCPU “Выделенный CPU” или “Высокачастотный” с 100% долей CPU. А сам тариф выбирали “HP C2-M2-D40”, где 2 ядра на процессоре, 2 ГБ ОЗУ, 40 ГБ SSD.
    • Регион размещения: Москва.
    • Настройки сети: включаем Плавующий (публичный) IP-адрес, чтобы можно было подключаться к нашему серверу удалённо.
    Узнайте, что такое Gitea, как она работает, её преимущества и недостатки. Рассмотрим настройку self-hosted Git-сервера, безопасность и сравнение с GitHub/GitLab
  • На текущем этапе мы сконфигурировали свой сервер. Стоимость такого сервера нам выходит в 2,01 руб/час. Минимальный платёж для почасовой оплаты составляет 100 рублей, что отлично подходит для тестирования разных сервисов. В Рег.ру Облако также имеется помесячная оплата, но не спешите, в конце статьи вы можете получить промокод на скидку до 40% на услугу Reg.ru для ещё более выгодного предложения при оформлении собственного сервера.

После создания облачного сервера нам необходимо подключиться к нему по SSH и выполнить обновление системы.

apt update && apt upgrade

Эта команда обновит систему до последних доступных версий пакетов.

Настройка базы данных

Перед тем как приступить к установке, необходимо подготовить базу данных, которая будет использоваться для хранения всей информации, связанной с системой управления версиями. Мы будем использовать MariaDB, популярную систему управления базами данных, известную своей производительностью и совместимостью с MySQL.

apt install mariadb-server

Эта команда установит MariaDB вместе со всеми необходимыми зависимостями.

Безопасная настройка MariaDB

После установки выполните скрипт mysql_secure_installation, который поможет установить пароль для пользователя root, удалить анонимных пользователей, ограничить доступ к базе данных удаленно и удалить тестовую базу данных. Это улучшит безопасность вашего сервера баз данных:

mysql_secure_installation

Следуйте подсказкам на экране, чтобы завершить настройку.

Создание пользователя и базы данных

Затем войдите в консоль MariaDB и создайте пользователя и базу данных, которые будут использоваться системой:

mysql -u root -p

После входа выполните следующие команды:

CREATE USER 'reggitea'@'%' IDENTIFIED BY 'secret_password';

Эта команда создает нового пользователя для базы данных. Здесь ‘reggitea’@’%’ указывает имя пользователя и хост, с которого он может подключаться. Символ ’%’ означает, что пользователь может подключаться с любого хоста. Часть IDENTIFIED BY ‘secret_password’ устанавливает пароль для этого пользователя. Важно выбрать надежный и безопасный пароль.

CREATE DATABASE reggiteadb CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';

Эта команда создает новую базу данных с именем reggiteadb. Здесь также указывается, что база данных будет использовать UTF-8 для хранения символов, что подходит для текстов на любом языке.

GRANT ALL PRIVILEGES ON reggiteadb.* TO 'reggitea';

Эта команда предоставляет пользователю reggitea все права на работу с базой данных reggiteadb. Это включает в себя права на чтение, запись и модификацию данных, что необходимо для полноценной работы приложения.

FLUSH PRIVILEGES;

Эта команда применяет все изменения привилегий, которые были сделаны. Она обновляет привилегии, чтобы новые настройки вступили в силу немедленно, без перезагрузки или переподключения к серверу. Для выхода из mysql нажмите сочетание клавиш CTRL+D.

Установка Gitea

Чтобы установить Gitea на ваш сервер, выполните следующие шаги, которые включают подготовку окружения, загрузку исполняемого файла и настройку автозапуска сервиса.

Загрузка и установка исполняемого файла

Скачайте последнюю стабильную версию Gitea с официального сайта:

wget -O gitea https://dl.gitea.io/gitea/1.23.8/gitea-1.23.8-linux-amd64

Список всех доступных версий можно увидеть на сайте Gitea.

Сделайте скачанный файл исполняемым:

chmod +x gitea
Настройка Git и автозапуска сервиса

Убедитесь, что на вашем сервере установлен Git, так как он необходим для работы Gitea:

git --version

Создание системного пользователя: Создайте отдельного пользователя, под которым будет работать Gitea:

adduser \
   --system \
   --shell /bin/bash \
   --gecos 'Git Version Control' \
   --group \
   --disabled-password \
   --home /home/git \
   git
Настройка структуры директорий

Создайте необходимые директории для хранения данных, конфигураций и логов:

mkdir -p /var/lib/gitea/{custom,data,log}
chown -R git:git /var/lib/gitea/
chmod -R 750 /var/lib/gitea/
mkdir /etc/gitea
chown root:git /etc/gitea
chmod 770 /etc/gitea

Установите переменную окружения для рабочей директории и скопируйте исполняемый файл в системный каталог:

export GITEA_WORK_DIR=/var/lib/gitea/
cp gitea /usr/local/bin/gitea

Создайте сервисный файл для systemd, чтобы Gitea автоматически запускалась при старте системы (используйте vimчик, будьте тру-кодером ✊):

nano /etc/systemd/system/gitea.service

Вставьте в окне редактора следующий конфигурационный файл:

[Unit]
Description=MyGitea
After=network.target
Wants=mariadb.service
After=mariadb.service

[Service]
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea

[Install]
WantedBy=multi-user.target

Затем включите и запустите сервис:

systemctl enable gitea
systemctl start gitea

Проверьте, что сервис запущен и работает корректно:

systemctl status gitea

После того как вы запустили сервис и обратились к серверу по адресу http://<server_ip>:3000, где встретит мастер установки и на этом этапе предстоит настроить связь с базой данных и создать аккаунт администратора.

Резервное копирование

Регулярно создавайте резервные копии данных с помощью команды gitea dump. Это защитит вас от потери информации в случае сбоя.

Что можно сделать ещё?

После установки, для обеспечения безопасности и корректной работы на собственном домене, рекомендуется настроить веб-сервер Nginx и установить SSL-сертификат. Это позволит защитить данные и обеспечить их шифрование при передаче через интернет. Вот ссылки для ознакомления: что такое NGINX и как настроить обратный прокси, а также сервия статей что такое HTTPS и при чем тут SSL/TLS сертфиикат.

Плюсы и Минусы

Преимущества
  • Открытый исходный код: Gitea распространяется бесплатно, а ее код можно модифицировать под свои нужды. Это обеспечивает прозрачность и возможность улучшать платформу.
  • Легковесность и производительность: По сравнению с GitLab или GitHub, Gitea требует меньше ресурсов, что делает ее оптимальным выбором для небольших проектов.
  • Контроль над данными: Возможность self-hosted развертывания позволяет хранить данные внутри вашей инфраструктуры, что критично для организаций с высокими требованиями к конфиденциальности.
  • Многофункциональность: Платформа подходит не только для управления кодом. Например, пользователи Obsidian могут использовать Gitea для версионирования заметок, а менеджеры паролей вроде Pass — для безопасного хранения учетных данных.
  • Активное сообщество и документация: Благодаря открытому сообществу разработчиков и подробной документации, процесс внедрения и решения проблем становится проще.
Недостатки
  • Необходимость технических навыков: Настройка и обслуживание Gitea требуют знаний в области администрирования Linux, баз данных и сетевой безопасности. Например, установка Gitea включает настройку MariaDB, Nginx и SSL-сертификатов.
  • Ответственность за инфраструктуру: При локальном развертывании вы несете полную ответственность за резервное копирование, обновления и защиту сервера от атак.
  • Ограниченные встроенные функции: Хотя Gitea покрывает базовые потребности, некоторые продвинутые инструменты, такие как CI/CD с автоматической сборкой, требуют интеграции сторонних решений.

Сфера использования

Для небольших команд и индивидуальных разработчиков

Gitea идеально подходит для стартапов или фрилансеров, которым нужен надежный, но экономичный Git-сервер. Например, команда может использовать платформу для совместной работы над веб-приложением, отслеживания задач и управления версиями кода.

Для системных администраторов

Специалисты, работающие с Linux-серверами, могут использовать Gitea для хранения конфигурационных файлов. Это позволяет отслеживать изменения, быстро восстанавливать предыдущие версии и делиться настройками между коллегами.

Для непрограммистов

Даже если вы не пишете код, Gitea может быть полезной. Например, менеджеры проектов могут использовать вики-страницы для документирования этапов проекта, а авторы — версионировать текстовые документы.

Сравнение с GitHub и GitLab
  • Gitea vs GitHub: GitHub предлагает больше инструментов и облачную инфраструктуру, но Gitea выигрывает в вопросах контроля данных. Если вам нужна альтернатива GitHub с возможностью self-hosted развертывания, Gitea станет лучшим выбором.
  • Gitea vs GitLab: GitLab предоставляет более мощные встроенные функции CI/CD, но требует больше ресурсов. Для небольших проектов Gitea будет более экономичным и простым решением.

Заключение

Gitea — мощное, гибкое и экономичное решение для управления версиями. Несмотря на необходимость небольших технических навыков для первоначальной настройки, преимущества Gitea в виде безопасности, автономности и гибкости делают ее отличной альтернативой GitHub и GitLab. Обширная документация закрывает многие вопросы и активное сообщество, которое поможет научиться использовать Gitea в кратчайшие сроки. Если вы ищете способ минимизировать затраты на инфраструктуру и сохранить полный контроль над своими данными, Gitea станет самым лучшим выбором.

👍 Партнёрский купон на все услуги
Промокод на все услуги Reg.ru
Скидка от 5% до 40% на любую из услуг REG.RU