Gitea — это лёгкая и доступная система управления версиями на основе Git, созданная для удобства и эффективности работы как индивидуальных пользователей, так и команд. Эта платформа распространяется с открытым исходным кодом, что делает её свободно доступной для использования и модификации. Основное преимущество Gitea заключается в том, что она может быть развернута на собственном сервере пользователя, что обеспечивает полный контроль над данными и конфигурацией.
Gitea предлагает все основные функции Git, такие как ветвление, слияние и тегирование, а также дополнительные удобства для управления проектами, включая систему отслеживания задач, вики-страницы и инструменты для код-ревью. Это делает её идеальным решением для команд разработчиков, которые хотят совместно работать над проектами в изолированной и безопасной среде.
По мере того как всё больше организаций и частных лиц признают важность цифровой безопасности и автономности, Gitea выделяется как надёжное и удобное решение для самостоятельного управления данными и проектами. Наличие активного сообщества и обширной документации дополнительно облегчает внедрение и использование этой системы в самых разных контекстах.
Системы управления версиями, традиционно ассоциируются с разработкой программного обеспечения, однако их потенциал применения значительно шире. Для непрограммистов они могут стать мощным инструментом для решения разнообразных задач управления данными и координации проектов.
Один из ярких примеров — использование Gitea для синхронизации заметок. Например, пользователи приложения для заметок, такого как Obsidian, могут использовать Gitea для версионирования своих записей. Это позволяет отслеживать изменения, возвращаться к предыдущим версиям и даже работать над заметками совместно с другими пользователями.
Другой распространенный сценарий — использование Gitea в качестве инструмента для синхронизации и версионирования паролей с помощью менеджера паролей, такого как Pass. Такой подход увеличивает безопасность управления паролями, предоставляя историю изменений, синхронизацию между устройствами и возможность восстановления предыдущих состояний.
Системные администраторы и энтузиасты Linux также найдут Gitea особенно полезной. Для них система может служить надежным хранилищем для конфигурационных файлов систем и приложений. В случае необходимости можно легко отследить изменения, внесенные в файлы конфигурации, и при необходимости вернуться к более ранней версии. Это особенно важно, когда изменения в конфигурации могут повлиять на стабильность системы.
Также Gitea может служить для управления контентом и документацией проектов. Например, организации могут использовать встроенные вики для создания и хранения технических руководств, инструкций и других документов, что особенно полезно в условиях частых изменений и необходимости обеспечения доступа к актуальной информации.
Gitea поддерживается активным сообществом разработчиков и пользователей, которые регулярно обновляют и дополняют документацию, делая систему доступной для новичков и профессионалов. Пользователи могут обратиться за помощью через GitHub, специализированные форумы и чаты, где можно задать вопросы, обменяться опытом или найти решения для специфических проблем. Это обеспечивает надёжную поддержку и постоянное развитие платформы.
Выбор подходящей системы управления версиями зависит от конкретных потребностей проекта или организации. Gitea выделяется среди подобных систем благодаря своей лёгкости и минимальным требованиям к ресурсам, что делает её идеальной для малых команд или индивидуальных разработчиков, которым нужен простой и эффективный инструмент без сложной инфраструктуры.
В отличие от GitHub, который является популярной коммерческой платформой, Gitea предоставляет возможность полного контроля над вашими данными, поскольку её можно развернуть в собственной инфраструктуре. Это может быть критически важно для организаций, требующих строгого соблюдения политик конфиденциальности и безопасности.
GitLab, хотя и предлагает обширные возможности для CI/CD, требует значительно больше ресурсов для своего функционирования и имеет сложную структуру, что может оказаться излишним для небольших проектов. Более того, не все функции GitLab доступны в бесплатной версии, что также может повлиять на выбор в пользу более доступных решений.
Таким образом, если ваша цель — обеспечить лёгкость управления, минимизировать затраты на инфраструктуру и удерживать полный контроль над системой и данными, Gitea представляет собой прекрасный выбор.
Перед установкой на сервере выполним ряд подготовительных действий. В качестве примера мы будем использовать Ubuntu 22.04, но стоит отметить, что процесс установки в других дистрибутивах Linux отличается не сильно.
После создания сервера подключитесь к нему по SSH и выполните обновление системы с помощью следующих команд:
apt update
apt upgrade
Эти команды обновят систему до последних доступных версий пакетов.
cloud
Перед тем как приступить к установке, необходимо подготовить базу данных, которая будет использоваться для хранения всей информации, связанной с системой управления версиями. Мы будем использовать MariaDB, популярную систему управления базами данных, известную своей производительностью и совместимостью с MySQL.
Для начала установите MariaDB на ваш сервер командой:
apt install mariadb-server
Эта команда установит 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 с официального сайта:
wget -O gitea https://dl.gitea.io/gitea/1.21.10/gitea-1.21.10-linux-amd64
Список всех доступных версий можно увидеть на сайте Gitea.
Сделайте скачанный файл исполняемым:
chmod +x gitea
Убедитесь, что на вашем сервере установлен 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 автоматически запускалась при старте системы:
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
, вас встретит мастер установки. На этом этапе вам предстоит настроить связь с базой данных и создать аккаунт администратора.
После установки, для обеспечения безопасности и корректной работы на собственном домене, рекомендуется настроить веб-сервер Nginx и установить SSL-сертификат. Это позволит защитить данные и обеспечить их шифрование при передаче через интернет.
Установите 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/
Установите 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
(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-ключ в Gitea. Для этого перейдите в настройки вашего пользователя, выберите «Ключи SSH/GPG» и нажмите на «Добавить ключ». В поле «Содержимое» вставьте ваш публичный SSH-ключ, который можно получить с помощью команды cat ~/.ssh/id_rsa.pub
в Linux.
Скачайте и подготовьте ваш проект. Например, клонируйте на локальный компьютер тестовое приложение и удалите из него папку .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» и нажмите «Создать репозиторий».
На странице репозитория выберите SSH для взаимодействия. Открывшаяся страница опишет, как можно создать новый репозиторий или добавить уже существующий.
Нам подойдет второй вариант:
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
Обновите страницу репозитория, чтобы убедиться, что файлы были успешно добавлены.
После добавления репозитория, следующим шагом будет его размещение в Timeweb Cloud Apps. Для этого сначала создадим токен для авторизации.
Эти шаги помогут вам не только настроить репозитории, но и автоматизировать процесс деплоя приложений через Timeweb Cloud, упрощая разработку и обеспечивая более эффективное управление проектами.
Разверните Gitea на собственном сервере
В этой статье мы подробно рассмотрели процесс установки и настройки Gitea на вашем сервере, начиная с базовой установки, проходя через настройку безопасности и резервное копирование, и завершая интеграцией с внешними сервисами для деплоя приложений. Теперь вы обладаете знаниями о том, как эффективно использовать системы управления версиями для управления версиями вашего кода и автоматизации разработки. Платформа обеспечивает надежную и масштабируемую основу, позволяющую значительно увеличить производительность разработки и усилить контроль над изменениями в проектах.