Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.
Альтернативы и в каких случаях стоит выбирать Gitea
Выбор подходящей системы управления версиями зависит от конкретных потребностей проекта или организации. Gitea выделяется среди подобных систем благодаря своей лёгкости и минимальным требованиям к ресурсам, что делает её идеальной для малых команд или индивидуальных разработчиков, которым нужен простой и эффективный инструмент без сложной инфраструктуры.
В отличие от GitHub, который является популярной коммерческой платформой, Gitea предоставляет возможность полного контроля над вашими данными, поскольку её можно развернуть в собственной инфраструктуре. Это может быть критически важно для организаций, требующих строгого соблюдения политик конфиденциальности и безопасности.
GitLab, хотя и предлагает обширные возможности для CI/CD, требует значительно больше ресурсов для своего функционирования и имеет сложную структуру, что может оказаться излишним для небольших проектов. Более того, не все функции GitLab доступны в бесплатной версии, что также может повлиять на выбор в пользу более доступных решений.
Таким образом, если ваша цель — обеспечить лёгкость управления, минимизировать затраты на инфраструктуру и удерживать полный контроль над системой и данными, Gitea представляет собой прекрасный выбор.
Перед установкой на сервере выполним ряд подготовительных действий. В качестве примера мы будем использовать Ubuntu 22.04, но стоит отметить, что процесс установки в других дистрибутивах Linux отличается не сильно.
Создание облачного сервера
-
Перейдите в панель управления Simple-Server и нажмите на кнопку «Создать». Затем выберите опцию «Облачный сервер».
-
Выберите Ubuntu 22.04 в качестве операционной системы.
-
Выберите регион «Санкт-Петербург» и минимальную доступную конфигурацию сервера.
-
В настройках сети оставьте настройки по умолчанию: внешний IP для IPv4 и отсутствие приватной сети.
-
Для усиления надежности рассмотрите возможность активации сервиса бэкапов. Эта услуга может быть важна, если нужна дополнительная избыточность данных. разберём процесс создания резервных копий вручную, но полный бэкап сервера может быть полезен для обеспечения редундантность.
-
Укажите SSH ключ, задайте имя сервера и завершите заказ, нажав на кнопку «Заказать».
После создания сервера подключитесь к нему по SSH и выполните обновление системы с помощью следующих команд:
Эти команды обновят систему до последних доступных версий пакетов.
Перед тем как приступить к установке, необходимо подготовить базу данных, которая будет использоваться для хранения всей информации, связанной с системой управления версиями. Мы будем использовать MariaDB, популярную систему управления базами данных, известную своей производительностью и совместимостью с MySQL.
Для начала установите MariaDB на ваш сервер командой:
apt install mariadb-serverЭта команда установит MariaDB вместе со всеми необходимыми зависимостями.
Безопасная настройка MariaDB
После установки выполните скрипт mysql_secure_installation, который поможет установить пароль для пользователя root, удалить анонимных пользователей, ограничить доступ к базе данных удаленно и удалить тестовую базу данных. Это улучшит безопасность вашего сервера баз данных:
mysql_secure_installationСледуйте подсказкам на экране, чтобы завершить настройку.
Создание пользователя и базы данных
Затем войдите в консоль MariaDB и создайте пользователя и базу данных, которые будут использоваться системой:
После входа выполните следующие команды:
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. Это включает в себя права на чтение, запись и модификацию данных, что необходимо для полноценной работы приложения.
Эта команда применяет все изменения привилегий, которые были сделаны. Она обновляет привилегии, чтобы новые настройки вступили в силу немедленно, без перезагрузки или переподключения к серверу. Для выхода из mysql нажмите сочетание клавиш CTRL+D.
Чтобы установить Gitea на ваш сервер, выполните следующие шаги, которые включают подготовку окружения, загрузку исполняемого файла и настройку автозапуска сервиса.
Загрузка и установка исполняемого файла
Скачайте последнюю стабильную версию Gitea с официального сайта:
wget -O gitea https://dl.gitea.io/gitea/1.21.10/gitea-1.21.10-linux-amd64Список всех доступных версий можно увидеть на сайте Gitea.
Сделайте скачанный файл исполняемым:
Проверка установленной версии Git
Убедитесь, что на вашем сервере установлен Git, так как он необходим для работы Gitea:
Создание системного пользователя: Создайте отдельного пользователя, под которым будет работать 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Проверьте, что сервис запущен и работает корректно:
Завершение установки через веб-интерфейс
После того как вы запустили сервис и обратились к серверу по адресу ip:3000, вас встретит мастер установки. На этом этапе вам предстоит настроить связь с базой данных и Заказать VPS администратора.
-
В поле Database Type выберите MySQL , что соответствует типу вашей базы данных.
-
В поле Host оставьте значение по умолчанию.
-
Введите имя пользователя базы данных в поле Username — в вашем случае это twgitea.
-
Введите пароль, который вы задали при создании пользователя базы данных, в поле Password.
-
В поле Database Name укажите имя вашей базы данных, которое вы задали ранее, — giteadb.
-
В разделе General Settings вы можете оставить значения по умолчанию. Эти параметры включают настройки пути и базовых URL, которые можно будет изменить позже, если потребуется.
-
В разделе Administrator Account Settings необходимо Заказать VPS администратора, указав желаемое имя пользователя, пароль и контактный email. Этот аккаунт будет использоваться для входа в систему и управления Gitea.
Настройка Nginx и SSL для вашего домена
После установки, для обеспечения безопасности и корректной работы на собственном домене, рекомендуется настроить веб-сервер Nginx и установить SSL-сертификат. Это позволит защитить данные и обеспечить их шифрование при передаче через интернет.
Установка и настройка Nginx
Установите 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, чтобы запретить регистрацию новых пользователей. Это увеличит безопасность вашей системы, ограничив доступ только к выбранным пользователям.
Для применения изменений необходимо перезапустить сервис командой:
Безопасность и резервное копирование
Чтобы обеспечить безопасность ваших данных, настроим файрвол на сервере и систему резервного копирования.
Настройка брандмауэра UFW
Для обеспечения безопасности вашего сервера важно правильно настроить брандмауэр. Используя ufw (Uncomplicated Firewall), вы можете легко управлять доступом к различным портам и услугам. Ниже приведены основные шаги по настройке ufw:
Сброс текущих настроек брандмауэра:
Запрет входящих соединений по умолчанию и разрешение исходящих:
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:
Перейдите в директорию, где будет создан бэкап (например, /home/git):
Выполните команду для создания дампа данных:
/usr/local/bin/gitea dump -c /etc/gitea/app.iniЭта команда создаст архив с резервной копией, который включает базу данных, конфигурационные файлы, репозитории и другие важные данные.
Созданный архив будет содержать важные компоненты, такие как:
-
app.ini— файл конфигурации (если он был вне стандартной папкиcustom/), -
custom/— все настройки кастомных решений, если такие используются, -
data/— данные приложения, включая вложения и аватары, -
repos/— полная копия директории репозиториев, -
gitea-db.sql— дамп базы данных, -
log/— различные логи, хотя они не обязательны для восстановления.
app.ini — файл конфигурации (если он был вне стандартной папки custom/),
custom/ — все настройки кастомных решений, если такие используются,
data/ — данные приложения, включая вложения и аватары,
repos/ — полная копия директории репозиториев,
gitea-db.sql — дамп базы данных,
log/ — различные логи, хотя они не обязательны для восстановления.
Восстановление из резервной копии
Для восстановления данных из резервной копии выполните следующие шаги:
Распакуйте архив резервной копии:
Перейдите в директорию с распакованными данными:
Восстановите основные компоненты:
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 на имя пользователя, пароль и имя базы данных соответственно.
Эти шаги позволят вам восстановить всю необходимую информацию и данные на вашем сервере после сбоя или переноса на новый сервер.
Настройка репозиториев и деплой
Эта глава посвящена управлению репозиториями и развертыванию приложений с помощью Simple-Server App Platform.
Для начала упростим процесс работы с вашими репозиториями, добавив SSH-ключ в Gitea. Для этого перейдите в настройки вашего пользователя, выберите «Ключи SSH/GPG» и нажмите на «Добавить ключ». В поле «Содержимое» вставьте ваш публичный SSH-ключ, который можно получить с помощью команды cat ~/.ssh/id_rsa.pub в Linux.
Пример создания и деплоя приложения
Скачайте и подготовьте ваш проект. Например, клонируйте на локальный компьютер тестовое приложение и удалите из него папку .git, после чего инициируйте новый репозиторий:
git clone https://github.com/Simple-Server-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 для взаимодействия. Открывшаяся страница опишет, как можно создать новый репозиторий или добавить уже существующий.
Нам подойдет второй вариант:
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Обновите страницу репозитория, чтобы убедиться, что файлы были успешно добавлены.
Настройка деплоя в App Platform
После добавления репозитория, следующим шагом будет его размещение в App Platform. Для этого сначала создадим токен для авторизации.
- Создание токена для авторизации:
* Вернитесь в настройки Gitea и перейдите в раздел «Приложения».
* Введите имя для вашего токена и выберите «Выбрать разрешения».
* Установите для «repository» значение «Прочитанные» (в оригинале Read).
* После создания токен будет показан один раз на верху страницы. Обязательно сохраните его.- Подключение репозитория в App Platform:
* В панели управления Simple-Server перейдите в раздел «App Platform».
* Выберите раздел «Frontend» и фреймворк «Svelte».
* В разделе «Репозиторий» выберите «Подключить git-репозиторий по URL».
* В «URL репозитория» введите ссылку, указанную в репозитории Gitea при выборе HTTPS.
* В «Имя пользователя» введите ваше имя пользователя из Gitea.
* В «Пароль или токен» введите ранее полученный токен.- Запуск и управление деплоем:
* После добавления репозитория все дополнительные настройки можно оставить по умолчанию.
* Нажмите на «Запустить деплой» и дождитесь завершения процесса.
* На странице настроек вы увидите домен, подключенный к вашему приложению. Здесь же вы можете изменить его.
* Для выбора коммитов для деплоя нажмите на «Редактировать» в разделе «Настройки деплоя».-
Вернитесь в настройки Gitea и перейдите в раздел «Приложения».
-
Введите имя для вашего токена и выберите «Выбрать разрешения».
-
Установите для «repository» значение «Прочитанные» (в оригинале Read).
-
После создания токен будет показан один раз на верху страницы. Обязательно сохраните его.
-
В панели управления Simple-Server перейдите в раздел «App Platform».
-
Выберите раздел «Frontend» и фреймворк «Svelte».
-
В разделе «Репозиторий» выберите «Подключить git-репозиторий по URL».
-
В «URL репозитория» введите ссылку, указанную в репозитории Gitea при выборе HTTPS.
-
В «Имя пользователя» введите ваше имя пользователя из Gitea.
-
В «Пароль или токен» введите ранее полученный токен.
-
После добавления репозитория все дополнительные настройки можно оставить по умолчанию.
-
Нажмите на «Запустить деплой» и дождитесь завершения процесса.
-
На странице настроек вы увидите домен, подключенный к вашему приложению. Здесь же вы можете изменить его.
-
Для выбора коммитов для деплоя нажмите на «Редактировать» в разделе «Настройки деплоя».
Эти шаги помогут вам не только настроить репозитории, но и автоматизировать процесс деплоя приложений через Simple-Server, упрощая разработку и обеспечивая более эффективное управление проектами.
Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.