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 сервера:
- Створіть DNS A-запис, що вказує домен на IP сервера:
Тип Імʼя Значення A git your.server.ip - Підключіться до сервера через SSH і відредагуйте конфігурацію Gitea:
Оновіть ці рядки в розділіnano /etc/gitea/app.ini[server]:DOMAIN = git.yourdomain.com SSH_DOMAIN = git.yourdomain.com ROOT_URL = https://git.yourdomain.com/ - Оновіть 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 від підбору паролів.
| Правило | Макс. спроб | Тривалість блокування |
|---|---|---|
| SSH | 5 невдалих входів | 1 година |
| Вхід у вебінтерфейс Gitea | 5 невдалих входів | 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
Встановлене ПЗ
| Компонент | Деталі |
|---|---|
| Ubuntu | 24.04 LTS |
| Gitea | 1.25 (SQLite, Git LFS) |
| Nginx | Зворотний проксі з SSL |
| Gitea Actions Runner | Вбудований CI/CD (виконання на хості) |
| Certbot | SSL від 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-консоль у клієнтській панелі |