Table of Contents

Gitea — посібник для початку роботи

Gitea — легкий self-hosted Git-сервіс із вбудованим CI/CD (Gitea Actions), трекером задач, вікі та реєстром пакетів — швидка приватна альтернатива GitHub під вашим повним контролем. Він підтримує pull request із рев’ю коду, організації та команди, редагування коду у вебінтерфейсі, вебхуки та просту міграцію з GitHub чи GitLab. Gitea написаний на Go й споживає мінімум ресурсів — він плавно працює навіть на невеликих серверах. Сервер постачається з повністю встановленим і налаштованим Gitea, обліковим записом адміністратора та паролем, вказаними під час замовлення. Вбудований CI/CD-runner уже готовий до роботи.


Крок 1 — перевірте, що Gitea працює

IP-адресу сервера й пароль root показано на сторінці Server Details у клієнтській панелі. Gitea доступний одразу після створення сервера. Відкрийте https://your.server.ip у браузері, щоб переконатися, що все працює.

Вхід у Gitea:

  • Імʼя користувача: admin
  • Пароль: пароль адміністратора (Admin Password), який ви вказали під час замовлення

За замовчуванням Gitea використовує самопідписаний SSL-сертифікат. Браузер покаже попередження безпеки — натисніть Advanced > Proceed (або Accept the Risk у Firefox). Це очікувано й безпечно. Пізніше можна встановити повноцінний сертифікат Let’s Encrypt (див. крок 4).

Якщо ви розмістили сервер за маршрутизатором VyOS у приватній мережі, налаштуйте переадресацію портів (22, 80 і 443), щоб Gitea був доступний з інтернету, або підключайтеся через VPN до Gitea за приватною IP сервера.


Крок 2 — створіть перший репозиторій

Натисніть + у правому верхньому куті й оберіть New Repository. Вкажіть назву репозиторію й натисніть Create Repository.

Клонуйте репозиторій через HTTPS або SSH:

# HTTPS
git clone https://your.server.ip/admin/my-repo.git

# SSH (add your public key in Settings > SSH/GPG Keys first)
git clone git@your.server.ip:admin/my-repo.git

Git через SSH використовує порт 22 (стандартний порт SSH). Gitea автоматично керує SSH-ключами — щойно ви додаєте публічний ключ у вебінтерфейсі, він одразу стає доступним для операцій Git.


Крок 3 — налаштуйте власний домен

Щоб використовувати Gitea на власному домені замість IP сервера:

  1. Створіть DNS A-запис, що вказує домен на IP сервера:
    Тип Імʼя Значення
    Agityour.server.ip
  2. Підключіться до сервера через SSH і відредагуйте конфігурацію Gitea:
    nano /etc/gitea/app.ini
    Оновіть ці рядки в розділі [server] :
    DOMAIN     = git.yourdomain.com
    SSH_DOMAIN = git.yourdomain.com
    ROOT_URL   = https://git.yourdomain.com/
  3. Оновіть Nginx і перезапустіть сервіси:
    sed -i "s/server_name .*/server_name git.yourdomain.com;/g" /etc/nginx/sites-available/gitea
    systemctl restart gitea
    systemctl reload nginx

Зміни DNS зазвичай застосовуються за кілька хвилин, але можуть тривати до 24 годин. Перевірити можна на dnschecker.org.


Крок 4 — увімкніть SSL від Let’s Encrypt

Коли домен уже спрямовано на сервер, замініть самопідписаний сертифікат безкоштовним сертифікатом Let’s Encrypt. Підключіться через SSH і виконайте:

/opt/setup/get-ssl.sh git.yourdomain.com

Скрипт перевіряє DNS, отримує сертифікат, налаштовує Nginx для HTTPS і автоматично оновлює конфігурацію Gitea. Сертифікат поновлюється автоматично.

Перед запуском скрипта переконайтеся, що A-запис домену вже оновився. SSL необовʼязковий — Gitea нормально працює із самопідписаним сертифікатом.


Крок 5 — CI/CD з Gitea Actions

Ваш Gitea має вбудований CI/CD-runner (Gitea Actions), сумісний із синтаксисом робочих процесів GitHub Actions. Щоб ним скористатися, створіть файл workflow у репозиторії:

.gitea/workflows/build.yaml

Приклад workflow:

name: Build
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: echo "Hello from Gitea Actions!"

Runner виконує завдання безпосередньо на хості (Docker не потрібен). Перевірте стан runner:

systemctl status act_runner

Після встановлення

Fail2Ban — захист від підбору паролів

Сервер постачається з Fail2Ban , попередньо налаштованим для захисту SSH і вебінтерфейсу Gitea від підбору паролів.

Правило Макс. спроб Тривалість блокування
SSH5 невдалих входів1 година
Вхід у вебінтерфейс Gitea5 невдалих входів1 година

Корисні команди:

# Check banned IPs
fail2ban-client status sshd
fail2ban-client status gitea

# Unban an IP
fail2ban-client set sshd unbanip 1.2.3.4
fail2ban-client set gitea unbanip 1.2.3.4

Якщо ви випадково заблокували себе, підключіться через VNC-консоль у клієнтській панелі й розблокуйте свою IP.

Оновлення

Gitea встановлено як окремий бінарний файл, і він не оновлюється автоматично. Щоб оновити вручну, завантажте нову версію й замініть бінарний файл:

# Download new version (replace X.Y.Z with the desired version)
wget -O /tmp/gitea https://dl.gitea.com/gitea/X.Y.Z/gitea-X.Y.Z-linux-amd64
chmod +x /tmp/gitea

# Replace binary and restart
systemctl stop gitea
cp /tmp/gitea /usr/local/bin/gitea
systemctl start gitea

Оновлення ОС можна встановити через SSH:

apt update && apt upgrade -y

Облікові дані сервера

Облікові дані адміністратора Gitea зберігаються у /root/.gitea_credentials. Їх також видно під час підключення через SSH (у вітальному повідомленні).

Керування сервісами

# Service status and control
systemctl status gitea          # check Gitea status
systemctl restart gitea         # restart Gitea
systemctl status nginx          # check Nginx (reverse proxy)
systemctl reload nginx          # reload Nginx after config change
systemctl status act_runner     # check CI/CD runner

# Gitea admin CLI
sudo -u git gitea admin user list --config /etc/gitea/app.ini
sudo -u git gitea admin user change-password --username admin --password "newpass" --config /etc/gitea/app.ini

# Database backup (SQLite)
cp /var/lib/gitea/data/gitea.db /root/gitea-backup-$(date +%Y%m%d).db

# Logs
tail -f /var/lib/gitea/log/gitea.log     # Gitea application log
journalctl -u gitea -f                    # systemd journal
tail -f /var/log/nginx/error.log          # Nginx errors

Встановлене ПЗ

Компонент Деталі
Ubuntu24.04 LTS
Gitea1.25 (SQLite, Git LFS)
NginxЗворотний проксі з SSL
Gitea Actions RunnerВбудований CI/CD (виконання на хості)
CertbotSSL від Let’s Encrypt
Fail2BanЗахист SSH і Gitea від підбору паролів

Усунення проблем

Проблема Рішення
Браузер показує попередження SSL Це очікувано зі стандартним самопідписаним сертифікатом. Натисніть “Advanced” і продовжте. Щоб виправити остаточно, налаштуйте домен і запустіть /opt/setup/get-ssl.sh
Не вдається відкрити вебінтерфейс Gitea Перевірте сервіси: systemctl status gitea nginx. Переконайтеся, що використовуєте https:// (а не http)
Git push/pull через SSH не працює Додайте публічний SSH-ключ у Gitea (Settings > SSH/GPG Keys). Використовуйте git@ в URL клонування, а не root@
Workflow Gitea Actions не запускається Перевірте runner: systemctl status act_runner. Файл workflow має бути в каталозі .gitea/workflows/ (а не .github/workflows/)
Не вдалося отримати сертифікат Let’s Encrypt Переконайтеся, що DNS A-запис вказує на IP сервера й уже оновився. Перевірити можна на dnschecker.org. Порт 80 має бути доступний з інтернету для перевірки HTTP-01
Забули пароль адміністратора Підключіться через SSH і перевірте /root/.gitea_credentialsабо скиньте: sudo -u git gitea admin user change-password --username admin --password "newpass" --config /etc/gitea/app.ini
Заблоковано Fail2Ban Розблокуйте свою IP через VNC-консоль у клієнтській панелі: fail2ban-client set sshd unbanip 1.2.3.4
Забули пароль root Скиньте його через VNC-консоль у клієнтській панелі