Бесплатная миграция IT-инфраструктуры в облако

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

Никита Долгих
Никита Долгих
Технический писатель
24 мая 2024 г.
2724
17 минут чтения
Средний рейтинг статьи: 5

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

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

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

Системы управления версиями, традиционно ассоциируются с разработкой программного обеспечения, однако их потенциал применения значительно шире. Для непрограммистов они могут стать мощным инструментом для решения разнообразных задач управления данными и координации проектов.

Один из ярких примеров — использование Gitea для синхронизации заметок. Например, пользователи приложения для заметок, такого как Obsidian, могут использовать Gitea для версионирования своих записей. Это позволяет отслеживать изменения, возвращаться к предыдущим версиям и даже работать над заметками совместно с другими пользователями.

Другой распространенный сценарий — использование Gitea в качестве инструмента для синхронизации и версионирования паролей с помощью менеджера паролей, такого как Pass. Такой подход увеличивает безопасность управления паролями, предоставляя историю изменений, синхронизацию между устройствами и возможность восстановления предыдущих состояний.

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

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

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

Альтернативы и в каких случаях стоит выбирать Gitea

Выбор подходящей системы управления версиями зависит от конкретных потребностей проекта или организации. Gitea выделяется среди подобных систем благодаря своей лёгкости и минимальным требованиям к ресурсам, что делает её идеальной для малых команд или индивидуальных разработчиков, которым нужен простой и эффективный инструмент без сложной инфраструктуры.

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

GitLab, хотя и предлагает обширные возможности для CI/CD, требует значительно больше ресурсов для своего функционирования и имеет сложную структуру, что может оказаться излишним для небольших проектов. Более того, не все функции GitLab доступны в бесплатной версии, что также может повлиять на выбор в пользу более доступных решений.

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

Процесс установки

Перед установкой на сервере выполним ряд подготовительных действий. В качестве примера мы будем использовать Ubuntu 22.04, но стоит отметить, что процесс установки в других дистрибутивах Linux отличается не сильно.

Создание облачного сервера

  1. Перейдите в панель управления Timeweb Cloud и нажмите на кнопку «Создать». Затем выберите опцию «Облачный сервер».

Image2

  1. Выберите Ubuntu 22.04 в качестве операционной системы. 
  2. Выберите регион «Санкт-Петербург» и минимальную доступную конфигурацию сервера.
  3. В настройках сети оставьте настройки по умолчанию: внешний IP для IPv4 и отсутствие приватной сети. 
  4. Для усиления надежности рассмотрите возможность активации сервиса бэкапов. Эта услуга может быть важна, если нужна дополнительная избыточность данных. Мы рассмотрим процесс создания резервных копий вручную, но полный бэкап сервера может быть полезен для обеспечения редундантность. 
  5. Укажите SSH ключ, задайте имя сервера и завершите заказ, нажав на кнопку «Заказать».

Image1

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

apt update
apt upgrade

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

cloud

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

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

Установка MariaDB

Для начала установите MariaDB на ваш сервер командой:

apt install mariadb-server

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

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

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

mysql_secure_installation

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

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

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

mysql -u root -p

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

CREATE USER 'twgitea'@'%' IDENTIFIED BY 'secretpass';

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

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

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

GRANT ALL PRIVILEGES ON giteadb.* TO 'twgitea';

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

FLUSH PRIVILEGES;

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

Установка Gitea

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

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

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

wget -O gitea https://dl.gitea.io/gitea/1.21.10/gitea-1.21.10-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

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

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

Завершение установки через веб-интерфейс

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

  1. Настройка базы данных:
    • В поле Database Type выберите MySQL, что соответствует типу вашей базы данных.
    • В поле Host оставьте значение по умолчанию.
    • Введите имя пользователя базы данных в поле Username — в вашем случае это twgitea.
    • Введите пароль, который вы задали при создании пользователя базы данных, в поле Password.
    • В поле Database Name укажите имя вашей базы данных, которое вы задали ранее, — giteadb.
  2. Настройка общих параметров:
    • В разделе General Settings вы можете оставить значения по умолчанию. Эти параметры включают настройки пути и базовых URL, которые можно будет изменить позже, если потребуется.
  3. Создание аккаунта администратора:
    • В разделе Administrator Account Settings необходимо создать аккаунт администратора, указав желаемое имя пользователя, пароль и контактный email. Этот аккаунт будет использоваться для входа в систему и управления Gitea.
  4. Завершение установки:
    • После заполнения всех необходимых данных нажмите на кнопку Install Gitea. Процесс установки начнется, и после его завершения вы сможете войти в систему с помощью созданного аккаунта администратора.

Настройка Nginx и SSL для вашего домена

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

Установка и настройка Nginx

Установите Nginx на вашем сервере:

sudo apt install nginx

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

nano /etc/nginx/sites-available/twgitea.test.ru

Вставьте следующую конфигурацию, заменив twgitea.twtest.ru на ваш домен:

server {
    listen 80;
    server_name twgitea.test.ru;

    location / {
        client_max_body_size 512M;
        proxy_pass http://127.0.0.1:3000;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
    }
}

Активируйте новую конфигурацию, создав символическую ссылку на неё в директории sites-enabled:

sudo ln -s /etc/nginx/sites-available/twgitea.test.ru /etc/nginx/sites-enabled/

Установка SSL сертификата с помощью Certbot

Установите Certbot и его плагин для Nginx:

apt install certbot python3-certbot-nginx

Запустите Certbot для автоматической установки SSL-сертификата для вашего домена:

certbot --non-interactive -m mail@example.com --agree-tos --no-eff-email --nginx -d twgitea.test.ru

Эта команда выпустит и настроит SSL-сертификат, автоматически обновляя конфигурацию Nginx для использования HTTPS. В команде необходимо изменить значение mail@example.com, указав ваш email, и twgitea.test.ru, указав ваш домен.

Перезапустите Nginx для применения изменений:

sudo systemctl restart nginx

Теперь сервис доступен по безопасному HTTPS-соединению на вашем домене.

Дополнительно вы можете отредактировать файл конфигурации /etc/gitea/app.ini, чтобы настроить домен и уровень доступа. В сегменте [server] файла конфигурации измените значения SSH_DOMAIN, DOMAIN и ROOT_URL, указав вместо IP-адреса ваш домен. Это позволит корректно отображать ссылки в вашей системе управления версиями.

В разделе [service] файла /etc/gitea/app.ini вы можете установить параметр DISABLE_REGISTRATION в значение true, чтобы запретить регистрацию новых пользователей. Это увеличит безопасность вашей системы, ограничив доступ только к выбранным пользователям.

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

systemctl restart gitea

Безопасность и резервное копирование

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

Настройка брандмауэра UFW

Для обеспечения безопасности вашего сервера важно правильно настроить брандмауэр. Используя ufw (Uncomplicated Firewall), вы можете легко управлять доступом к различным портам и услугам. Ниже приведены основные шаги по настройке ufw:

Сброс текущих настроек брандмауэра:

sudo ufw reset

Запрет входящих соединений по умолчанию и разрешение исходящих:

sudo ufw default deny incoming
sudo ufw default allow outgoing

Разрешение доступа к стандартным веб-портам и SSH:

sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 22

Запретим доступ к нашему git-серверу по ip:3000 для внешних подключений:

sudo ufw allow from 127.0.0.1 to any port 3000
sudo ufw deny 3000

Активация и проверка статуса брандмауэра:

sudo ufw enable
sudo ufw status

Создание резервной копии

Регулярное создание резервных копий — ключевой аспект поддержания данных в безопасности. Для Gitea процесс создания резервной копии может быть выполнен следующим образом:

Переключитесь на пользователя, под которым работает Gitea:

su git

Перейдите в директорию, где будет создан бэкап (например, /home/git):

cd /home/git

Выполните команду для создания дампа данных:

/usr/local/bin/gitea dump -c /etc/gitea/app.ini

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

Созданный архив будет содержать важные компоненты, такие как:

  • app.ini — файл конфигурации (если он был вне стандартной папки custom/),

  • custom/ — все настройки кастомных решений, если такие используются,

  • data/ — данные приложения, включая вложения и аватары,

  • repos/ — полная копия директории репозиториев,

  • gitea-db.sql — дамп базы данных,

  • log/ — различные логи, хотя они не обязательны для восстановления.

Восстановление из резервной копии

Для восстановления данных из резервной копии выполните следующие шаги:

Распакуйте архив резервной копии:

unzip gitea-dump-id.zip

Перейдите в директорию с распакованными данными:

cd gitea-dump-id

Восстановите основные компоненты:

  • Конфигурационные файлы:
mv app.ini /etc/gitea/conf/app.ini
  • Данные приложения:
mv data/* /var/lib/gitea/data/
  • Логи:
mv log/* /var/lib/gitea/log/
  • Репозитории:
mv repos/* /var/lib/gitea/gitea-repositories/

Обновите права доступа:

chown -R gitea:gitea /etc/gitea/conf/app.ini /var/lib/gitea

Импортируйте дамп базы данных в MySQL:

mysql --default-character-set=utf8mb4 -u$USER -p$PASS $DATABASE < gitea-db.sql

Замените $USER, $PASS, и $DATABASE на имя пользователя, пароль и имя базы данных соответственно.

Эти шаги позволят вам восстановить всю необходимую информацию и данные на вашем сервере после сбоя или переноса на новый сервер.

Настройка репозиториев и деплой 

Эта глава посвящена управлению репозиториями и развертыванию приложений с помощью Timeweb Cloud Apps.

Добавление SSH-ключа

Для начала упростим процесс работы с вашими репозиториями, добавив SSH-ключ в Gitea. Для этого перейдите в настройки вашего пользователя, выберите «Ключи SSH/GPG» и нажмите на «Добавить ключ». В поле «Содержимое» вставьте ваш публичный SSH-ключ, который можно получить с помощью команды cat ~/.ssh/id_rsa.pub в Linux.

Image5

Пример создания и деплоя приложения

Скачайте и подготовьте ваш проект. Например, клонируйте на локальный компьютер тестовое приложение и удалите из него папку .git, после чего инициируйте новый репозиторий:

git clone https://github.com/timeweb-cloud/app-example-svelte.git
cd app-example-svelte
rm -rf .git
git init
git add .
git commit -m 'Initial commit for Test Svelte app'

После инициализации нового репозитория локально, создайте репозиторий в Gitea, перейдя на главную страницу и нажав на плюс в разделе репозиториев. Измените только название на «Svelte» и нажмите «Создать репозиторий».

Добавление репозитория в Gitea и деплой

На странице репозитория выберите SSH для взаимодействия. Открывшаяся страница опишет, как можно создать новый репозиторий или добавить уже существующий. 

Image4

Нам подойдет второй вариант:

git remote add origin git@twgitea.test.ru:TWgitea/Svelte.git
git push -u origin main

При выполнении git push -u origin main у вас может возникнуть ошибка. Это связано с тем, что при инициации git-репозитория, имя ветки по умолчанию указывается как master, поэтому, если у вас возникает ошибка, выполните команду:

git push -u origin master

Обновите страницу репозитория, чтобы убедиться, что файлы были успешно добавлены.

Image6

Настройка деплоя в Timeweb Cloud Apps

После добавления репозитория, следующим шагом будет его размещение в Timeweb Cloud Apps. Для этого сначала создадим токен для авторизации.

  1. Создание токена для авторизации:
    • Вернитесь в настройки Gitea и перейдите в раздел «Приложения».
    • Введите имя для вашего токена и выберите «Выбрать разрешения».
    • Установите для «repository» значение «Прочитанные» (в оригинале Read).
    • После создания токен будет показан один раз на верху страницы. Обязательно сохраните его.
  2. Подключение репозитория в Timeweb Cloud Apps:
    • В панели управления Timeweb Cloud перейдите в раздел «Apps».
    • Выберите раздел «Frontend» и фреймворк «Svelte».
    • В разделе «Репозиторий» выберите «Подключить git-репозиторий по URL».
    • В «URL репозитория» введите ссылку, указанную в репозитории Gitea при выборе HTTPS.
    • В «Имя пользователя» введите ваше имя пользователя из Gitea.
    • В «Пароль или токен» введите ранее полученный токен.
  3. Запуск и управление деплоем:
    • После добавления репозитория все дополнительные настройки можно оставить по умолчанию.
    • Нажмите на «Запустить деплой» и дождитесь завершения процесса.
    • На странице настроек вы увидите домен, подключенный к вашему приложению. Здесь же вы можете изменить его.
    • Для выбора коммитов для деплоя нажмите на «Редактировать» в разделе «Настройки деплоя». 

Image3

Эти шаги помогут вам не только настроить репозитории, но и автоматизировать процесс деплоя приложений через Timeweb Cloud, упрощая разработку и обеспечивая более эффективное управление проектами.

Разверните Gitea на собственном сервере

Заключение

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

Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server
24 мая 2024 г.
2724
17 минут чтения
Средний рейтинг статьи: 5
Пока нет комментариев