Skip to content
VDS · Застосунки та боти

Власний Git: Forgejo або Gitea

Як налаштувати персональний сервер репозиторіїв з вебінтерфейсом, доступом через SSH і збірками — і що копіювати, щоб не втратити код.

Оновлено 23 серпня 2026 р.

Вам потрібен власний Git, коли код не повинен потрапляти на чужу платформу або коли ви не хочете обмежень на приватні репозиторії та хвилини збірки. Forgejo і Gitea — два близькоспоріднені проєкти (Forgejo виріс із Gitea); обидва встановлюються в один контейнер і працюють на скромній машині.

Що вибрати і скільки ресурсів

У повсякденній роботі різниці майже немає: інтерфейс, issues, pull requests, дзеркала, Actions для збірок. Forgejo розробляє спільнота, Gitea — компанія. Вибирайте Forgejo, якщо вам важлива незалежність проєкту.

Для двох-трьох людей достатньо VDS-1. Щойно ви додасте runner для збірок, беріть VDS-3 або вище: збірки з'їдають CPU і диск, а швидкість диска обмежена тіром.

Встановлення через Compose

services:
  forgejo:
    image: codeberg.org/forgejo/forgejo:11
    container_name: forgejo
    restart: unless-stopped
    environment:
      - USER_UID=1000
      - USER_GID=1000
    volumes:
      - ./data:/data
      - /etc/timezone:/etc/timezone:ro
    ports:
      - "3000:3000"
      - "2222:22"
docker compose up -d
docker compose logs -f forgejo

Відкрийте http://<machine-address>:3000 і пройдіть початкове налаштування. Перший створений користувач стає адміністратором.

Не обов'язково залишати порт 3000 відкритим назовні. Закрийте його і поставте перед сервісом вебсервер із сертифікатом — так ви отримаєте HTTPS і не покажете панель налаштування стороннім. Поки налаштування не завершено, будь-хто, хто відкриє адресу, може першим створити адміністратора.

Доступ через SSH

Порт 22 усередині контейнера проброшено на 2222, бо 22 зайнятий системним SSH. У налаштуваннях репозиторію адреса виглядатиме так:

git clone ssh://git@example.com:2222/user/repo.git

Якщо ви хочете звичний git@example.com:user/repo.git без порту, залиште 2222 для контейнера і налаштуйте проброс на хості через системний SSH або перенесіть адміністративний SSH на інший порт (див. захист доступу).

Збірки

Actions запускає окремий runner — контейнер forgejo-runner, який реєструється за токеном із налаштувань адміністратора. Давайте йому доступ до Docker-сокета лише свідомо: це рівнозначно root на машині. Для збірок краще обмежити runner за пам'яттю та CPU — див. обмеження ресурсів.

Що резервувати

Увесь стан зберігається в томі ./data: репозиторії, база даних, вкладення, конфігурація. Резервна копія робиться так:

docker compose stop forgejo
restic -r <repository> backup ./data
docker compose start forgejo

Потрібно зупинити сервіс, якщо він використовує SQLite — інакше знімок бази даних може бути неузгодженим. З PostgreSQL достатньо pg_dump без зупинки. Докладніше див. що саме резервувати і Restic.

Типові помилки

  • Забути про розмір репозиторіїв. Збірки ігрових серверів і медіа швидко з'їдають місце на диску: 40 ГБ початкового тіру закінчуються непомітно.
  • Не налаштована пошта. Без неї не працюють запрошення та скидання пароля. Простіше підключити зовнішній SMTP, ніж налаштовувати власний поштовий сервер.
  • Оновлення без резервної копії. Зміна мажорної версії змінює схему бази даних. Спочатку резервна копія, потім docker compose pull — див. оновлення контейнерів.