Self-hosted git-сервер: Forgejo/Gitea, CI/CD, LDAP та міграція
Якщо ви використовуєте GitLab CE для команди з 10–15 розробників, то знаєте, скільки ресурсів він потребує: мінімум 4 ГБ RAM для старту, а в production — 8–16 ГБ плюс окремі Postgres, Redis та Sidekiq. Для невеликих проектів це надмірно і дорого. Ми пропонуємо легку альтернативу — Forgejo або Gitea. Один бінарник, 1 ГБ RAM, 50 МБ на диску — і ви отримуєте повноцінний git-сервер з web-інтерфейсом, issue tracker, а тепер ще й вбудований CI через Forgejo Actions. Наша команда за кілька років розгорнула понад 50 таких інсталяцій для fintech, e-commerce та SaaS. Жодної відмови з вини платформи. На відміну від GitLab, Forgejo не потребує виділеного сервера — достатньо VPS з 1 ГБ RAM. Економія на хмарних серверах становить 3–5 разів, що знижує місячні витрати з $500 до $150.
Які проблеми вирішує Forgejo?
Forgejo вирішує три основні завдання: ресурси, складність та CI/CD. Розглянемо кожне детальніше:
- Ресурси: GitLab CE споживає до 8 ГБ RAM навіть при 10 користувачах. Forgejo працює на 1 ГБ без просідань, що знижує вартість хмарних серверів у 3–5 разів.
- Складність: GitLab потребує окремих Postgres, Redis, Sidekiq. Forgejo — один бінарник або Docker Compose з двох контейнерів (app + db).
- CI/CD: GitLab CI потребує GitLab Runner. Forgejo Actions використовує синтаксис GitHub Actions і не потребує зовнішніх сервісів.
Чому Forgejo економніший за GitLab?
Порівняння ресурсів:
| Параметр | Forgejo | GitLab CE |
|---|---|---|
| Мінімальна RAM | 1 ГБ | 4 ГБ |
| Рекомендована RAM (50 користувачів) | 2 ГБ | 8 ГБ |
| Диск | 50 МБ | 1 ГБ+ |
| Залежності | Postgres | Postgres, Redis, Sidekiq |
| Час розгортання | 30 хв | 2–4 години |
Forgejo — форк Gitea, який з'явився після конфлікту в спільноті. Технічно вони сумісні: конфіги та API переносяться без змін. Forgejo отримує патчі на 30% швидше (за даними OpenHUB). Для нових проектів ми рекомендуємо Forgejo.
Варіанти розгортання
| Спосіб | Складність | Час | Гнучкість |
|---|---|---|---|
| Docker Compose | Низька | 30 хв | Середня |
| Бінарний файл | Середня | 1 год | Висока |
| Helm-чарт (Kubernetes) | Висока | 2 год | Максимальна |
Як налаштувати Forgejo з CI/CD за годину?
-
Розгортання через Docker Compose – створіть файл
docker-compose.yml:--- version: "3" services: forgejo: image: codeberg.org/forgejo/forgejo:8 container_name: forgejo environment: - USER_UID=1000 - USER_GID=1000 - FORGEJO__database__DB_TYPE=postgres - FORGEJO__database__HOST=db:5432 - FORGEJO__database__NAME=forgejo - FORGEJO__database__USER=forgejo - FORGEJO__database__PASSWD=secret volumes: - ./data:/data ports: - "3000:3000" - "222:22" restart: unless-stopped db: image: postgres:16 environment: - POSTGRES_USER=forgejo - POSTGRES_PASSWORD=secret - POSTGRES_DB=forgejo volumes: - ./postgres:/var/lib/postgresql/dataЗапустіть:
docker-compose up -d.Налаштуйте через web-інтерфейс – вкажіть домен, пошту, вимкніть реєстрацію. Основні параметри в
/data/gitea/conf/app.ini:[server] DOMAIN = git.company.com ROOT_URL = https://git.company.com/ SSH_DOMAIN = git.company.com SSH_PORT = 22 DISABLE_SSH = false [service] DISABLE_REGISTRATION = true REQUIRE_SIGNIN_VIEW = true REGISTER_EMAIL_CONFIRM = trueDISABLE_REGISTRATION = trueобов'язково для закритої команди. Налаштуйте Forgejo Actions – додайте workflow-файл.forgejo/workflows/ci.yaml:on: [push] jobs: test: runs-on: docker steps: - uses: actions/checkout@v4 - name: Run tests run: go test ./...Зареєструйте act runner:
act_runner register \ --instance https://git.company.com \ --token <runner_token> \ --name my-runner \ --labels docker:docker://node:20-bookwormRunner виконує завдання в ізольованих Docker-контейнерах. Весь процес займає 30–60 хвилин.
Приклад конфігурації для production
Для production-середовища рекомендуємо додати резервування бази даних та налаштувати автоматичне оновлення SSL-сертифікатів через Let's Encrypt. Використовуйте зовнішній Postgres з реплікацією та регулярні бекапи репозиторіїв. Також налаштуйте моніторинг через Prometheus та оповіщення в Slack.
Як перенести репозиторії з GitHub або GitLab?
Forgejo підтримує імпорт зі збереженням issues, pull requests, milestones та wiki. Для масової міграції використовуйте API:
for repo in $(gh repo list myorg --json name -q '.[].name'); do curl -X POST https://git.company.com/api/v1/repos/migrate \ -H "Authorization: token $FORGEJO_TOKEN" \ -H "Content-Type: application/json" \ -d "{\"clone_addr\":\"https://github.com/myorg/$repo\",\"repo_name\":\"$repo\",\"mirror\":false,\"private\":true}" doneАвтоматизація міграції 50 репозиторіїв займає не більше 2–3 днів.
Що входить в роботу
- Встановлення та налаштування Forgejo (або Gitea) з HTTPS та LDAP.
- Інтеграція з LDAP/SSO (Active Directory, OpenLDAP, Keycloak).
- Налаштування Forgejo Actions та реєстрація act runner.
- Міграція репозиторіїв з GitHub, GitLab, Bitbucket зі збереженням історії.
- Написання документації та навчання команди.
- Гарантійна підтримка 1 місяць.
Наші DevOps‑інженери мають сертифікати CKA та 5+ років досвіду в Kubernetes та GitOps. Виконано понад 50 проектів з міграції та налаштування Git‑серверів для fintech та e‑commerce.
Терміни орієнтовно
- Базова установка Forgejo/Gitea з HTTPS та LDAP – від 4 до 8 годин.
- Додавання Forgejo Actions та міграція – від 1 до 3 днів.
- Повний проект під ключ – від 3 до 5 днів.
Вартість розраховується індивідуально після аудиту вашої інфраструктури. Замовте розгортання Forgejo з CI/CD та LDAP під ключ — отримайте готовий git-сервер за 4 години. Зв'яжіться з нами для аудиту вашої інфраструктури. Отримайте консультацію DevOps-інженера з налаштування Forgejo.
Forgejo — відкрита платформа для управління git-репозиторіями.







