Главная
|
Услуги и цены
VDS
Выделенные серверы
Размещение сервера
|
F.A.Q
|
О компании
|

Gitea на VDS: лёгкий аналог GitHub для команды с CI/CD

Gitea — веб-платформа для работы с Git-репозиториями. Она позволяет хранить исходный код, управлять пользователями и правами доступа, создавать issues и выполнять code review.

По интерфейсу Gitea во многом напоминает GitHub и GitLab. При этом система рассчитана на самостоятельное размещение и не требует большой инфраструктуры.

Для небольшой команды это особенно удобно. Один VDS может одновременно выполнять роль Git-сервера, сервера задач и точки запуска CI/CD.

Плюсы Gitea на VDS

  1. Исходный код хранится на вашей инфраструктуре. Вы самостоятельно определяете, кто имеет доступ к репозиториям и где находятся резервные копии.
  2. Не приходится зависеть от тарифов и ограничений стороннего сервиса. Можно создать столько приватных репозиториев и пользователей, сколько позволяет ваша инфраструктура.
  3. Скорость работы с локальными репозиториями. Если VDS находится близко к разработчикам, клонирование и отправка изменений происходят быстро даже при большом количестве небольших файлов.

Если вы только купили сервер:

Подключитесь к серверу

Выполните подготовку сервера к работе

Содержание

  • Создаём пользователя для Gitea
  • Устанавливаем PostgreSQL
  • Устанавливаем Gitea
  • Создаём systemd-сервис
  • Открываем веб-интерфейс
  • Настраиваем Nginx
  • Настраиваем HTTPS
  • Завершаем установку через веб-интерфейс
  • Создаём администратора
  • Создаём первый Git-репозиторий
  • Итог

Создаём пользователя для Gitea

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

adduser \
  --system \
  --shell /bin/bash \
  --gecos 'Git Version Control' \
  --group \
  --disabled-password \
  --home /home/git \
  git

Проверим созданного пользователя:

id git

В результате должна отображаться информация о пользователе и его группе.

Устанавливаем PostgreSQL

Gitea поддерживает несколько баз данных. Для рабочей установки удобно использовать PostgreSQL, особенно если сервер планируется использовать длительное время.

Установим PostgreSQL:

apt install postgresql postgresql-contrib -y

Проверим службу:

systemctl status postgresql

Если всё в порядке, увидите:

Проверка состояния службы PostgreSQL

Active: active (running)

Теперь создадим отдельную базу данных и пользователя:

sudo -u postgres psql

В консоли PostgreSQL выполните:

CREATE USER gitea WITH PASSWORD 'STRONG_PASSWORD';
CREATE DATABASE gitea OWNER gitea;

После этого выйдите:

\q

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

Устанавливаем Gitea

Перед скачиванием проверьте актуальную версию Gitea на официальном сайте.

Создадим каталог для Gitea:

mkdir -p /var/lib/gitea/{custom,data,log}
mkdir -p /etc/gitea

Назначим владельца:

chown -R git:git /var/lib/gitea
chown -R git:git /etc/gitea

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

https://docs.gitea.com/installation/install-from-binary/

wget -O /usr/local/bin/gitea https://dl.gitea.com/gitea/1.27.3/gitea-1.27.3-linux-amd64
chmod +x /usr/local/bin/gitea
gitea --version
Проверка версии Gitea

Команда должна вернуть установленную версию Gitea.

Создаём systemd-сервис

Чтобы Gitea автоматически запускалась после перезагрузки VDS, создадим службу systemd:

nano /etc/systemd/system/gitea.service

Добавьте:

[Unit]
Description=Gitea
After=network.target
After=postgresql.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 daemon-reload
systemctl enable gitea
systemctl start gitea
systemctl status gitea

Если всё настроено правильно, служба будет иметь статус:

Active: active (running)
Проверка состояния службы Gitea

Если служба сразу завершается, посмотрите журнал:

journalctl -u gitea -n 50 --no-pager

Открываем веб-интерфейс

По умолчанию Gitea слушает порт 3000.

Проверить это можно:

ss -tlnp | grep 3000

Временно открыть интерфейс можно по адресу:

http://194.48.141.32:3000

Но для постоянного использования такой вариант не подходит. Лучше поставить перед Gitea Nginx и работать через обычный HTTPS-домен.

Например:

https://git.example.com

Это также позволит нормально использовать Git по HTTPS и получить TLS-сертификат.

Настраиваем Nginx

Установим Nginx:

apt install nginx -y

Создадим конфигурацию:

nano /etc/nginx/sites-available/gitea

Добавьте:

server {
    listen 80;
    server_name git.example.com;

    location / {
        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;
    }
}

Замените git.example.com на свой домен.

Активируем конфигурацию:

ln -s /etc/nginx/sites-available/gitea \
      /etc/nginx/sites-enabled/gitea

Проверим Nginx:

nginx -t

Если конфигурация корректна:

syntax is ok
test is successful

После этого перезагрузим Nginx:

systemctl reload nginx

Настраиваем HTTPS

Для Git-сервера HTTPS нужен практически всегда. Через него передаются учётные данные, токены и исходный код.

Установим Certbot:

apt install certbot python3-certbot-nginx -y

Получим сертификат:

certbot --nginx -d git.example.com

Certbot настроит HTTPS и предложит перенаправлять HTTP-запросы на защищённое соединение.

После этого откройте:

https://git.example.com

Должна появиться страница первоначальной настройки Gitea.

Проверить автоматическое обновление сертификата можно:

systemctl status certbot.timer

А тестовое продление:

certbot renew --dry-run

Если команда завершилась без ошибок, механизм обновления сертификата работает.

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

На странице установки Gitea укажите параметры базы данных PostgreSQL:

Тип базы данных: PostgreSQL
Хост: 127.0.0.1:5432
Имя пользователя: gitea
Пароль: STRONG_PASSWORD
Имя базы: gitea
Настройка PostgreSQL при установке Gitea

Также проверьте URL сайта:

https://git.example.com/

Gitea использует базовый URL при формировании ссылок на репозитории, issues и другие объекты.

Путь к репозиториям оставьте в каталоге пользователя git. Если вы использовали структуру из предыдущих шагов, не меняйте её без необходимости.

После сохранения настроек Gitea создаст таблицы в PostgreSQL и завершит установку.

Создаём администратора

После установки создайте первую учётную запись администратора.

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

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

Создаём первый Git-репозиторий

Создание Git-репозитория в Gitea

Создадим новый репозиторий через веб-интерфейс Gitea.

Нажмите на плюс справа вверху

Например:

my-project

После создания Gitea покажет URL для подключения.

URL для подключения к репозиторию Gitea

Через HTTPS он будет выглядеть примерно так:

git clone http://194.48.141.32:3000/admin/my-project.git

Введите логин и пароль пользователя

Перейдите в каталог проекта:

cd my-project

Добавьте файл:

echo "# My project" > README.md

Создайте первый коммит:

git config --global user.name "admin"
git config --global user.email "admin@example.com"
git add README.md
git commit -m "Initial commit"

Отправьте изменения:

git push origin main

После этого обновите страницу репозитория. Файл README.md должен появиться в веб-интерфейсе.

Репозиторий Gitea с файлом README.md

Итог

Gitea позволяет превратить обычный VDS в собственный сервер для разработки.

Он подходит чтобы хранить исходный код, работать с pull request, управлять доступом и запускать автоматические тесты и т.д.

logo
© 2022 62yun
Все права защищены
vk.com/62yuncom
support@62yun.ru
logo
vk.com/62yuncom
support@62yun.ru
Услуги
VDS Выделенные серверы
Полезное
F.A.Q О компании Политика конфиденциальности Оферта
Способы оплаты
wechatpay visa mastercard
MirAccept
Партнеры
25port
© 2022 62yun Все права защищены
ВВЕРХ