Команда инженеров · свой ЦОД в РФ · своё железо · своя панель · CloudStack + Linstor · MCP · база знаний по self-hosted
INFRA

GitLab CE

Self-hosted DevOps-платформа: Git-репозитории, code review, CI/CD, реестр контейнеров, задачи и wiki в одном омнибус-пакете. Развернули одной кнопкой из маркетплейса Fatmetal, замерили аппетиты и по ходу нашли (и починили) баг в своей же magic-DNS, из-за которого не поднимался TLS.

INFRA Лицензия: MIT (CE) Проверено: развернут из маркетплейса, 19.1.2

Коротко: брать или нет

Подходит
  • Нужен весь DevOps-конвейер в одном месте: repo + review + CI/CD + registry + issues
  • Уходите с per-seat SaaS (GitHub/Bitbucket) ради контроля и TCO
  • Код должен оставаться у вас (152-ФЗ)
Не подходит
  • Нужен только git + pull request малой командой - Gitea/Forgejo легче в разы
  • VM меньше 4 ГБ RAM - омнибус уйдет в OOM
  • Некому сопровождать: обновления, бэкапы, reconfigure
RAM в простое ~5.5 GiB Установка ~7 мин Версия 19.1.2 (latest) Сервисов 14 TLS Let's Encrypt на magic-DNS
Что это

Что это и какую задачу решает

GitLab CE - не просто git-хостинг, а целая DevOps-платформа на вашем сервере. В одном омнибус-пакете (gitlab-ce) едут веб-приложение на Rails, Gitaly (git-RPC), PostgreSQL, Redis, NGINX, Sidekiq, реестр Docker-образов, Prometheus и десяток экспортеров. Итог: приватные репозитории, merge request-ы и code review, встроенный CI/CD, трекер задач, wiki и доски - без оплаты за пользователей и без облака.

Community Edition распространяется под MIT. Проприетарные фичи (advanced security, часть управленческих) живут в том же монорепо и открываются платной подпиской EE - классический open-core.

Сравнение

Чем отличается от Gitea, Forgejo и SaaS

На Хабре нишу self-hosted git делят по весам. Gitea и Forgejo - легкие (Go, один бинарь, ~100-300 MiB RAM): дают git, pull request-ы и базовый CI, и этого многим хватает. GitLab CE - тяжелый монолит, но взамен отдает полный DevOps из коробки, чего у легких нет в таком объеме.

Против GitHub Enterprise и Bitbucket главный аргумент - TCO: GitLab CE бесплатен и не берет плату за место (per-seat), вы платите только за сервер. Расплата - ресурсы (см. замеры ниже).

Установка

В маркетплейсе Fatmetal

Не хотите ставить руками?

Этот стек есть в маркетплейсе Fatmetal - можно не повторять установку из этого разбора вручную. Заказываете сервер, за пару минут получаете рабочий домен, валидный TLS и файл с доступами.

Рекомендуемая конфигурация:
4 vCPU · 8 ГБ RAM · 100 ГБ NVMe от 990 ₽/мес

Развернуть в 1 клик →

Развертывание: одна кнопка из маркетплейса

Заказали GitLab из маркетплейса Fatmetal (marketplace-приложение на чистой Ubuntu 24.04, тариф CPU6-RAM16). Установка идет сама: cloud-init подключает репозиторий packages.gitlab.com и ставит омнибус-пакет, дальше gitlab-ctl reconfigure собирает весь стек. От заказа до рабочего входа - около 7 минут.

i

Версия не залочена - и это правильно. Скрипт ставит gitlab-ce без пина, то есть актуальную на момент заказа. У нас встал 19.1.2. Пользователю нужен свежий GitLab, а не законсервированный, поэтому в карточке версия указана как latest, а конкретный номер - только «на момент проверки».

Дашборд GitLab 19.1.2 после входа под root - вход из маркетплейс-установки работает сразу.
Дашборд GitLab 19.1.2 после входа под root - вход из маркетплейс-установки работает сразу.
Замеры

Сколько реально ест

GitLab знаменит прожорливостью, и цифры это подтверждают. В простое (без нагрузки, сразу после установки) омнибус занимает ~5.5 GiB RAM и держит 14 запущенных сервисов; на диске /opt/gitlab - 3.4 ГБ. Для сравнения, легкие Gitea/Forgejo обходятся сотнями мегабайт. Официальный минимум - 4 ГБ RAM, комфортно - 8 и больше.

Проверили не только вход, но и работу: создали проект с README - репозиторий, первый коммит и клон-адрес поднялись штатно.

Созданный проект demo-fatmetal: README, первый коммит, 1 branch - платформа реально работает, а не только открывает форму входа.
Созданный проект demo-fatmetal: README, первый коммит, 1 branch - платформа реально работает, а не только открывает форму входа.
Доступ и TLS

Как войти - и почему TLS сначала не поднялся

Адрес формируется из публичного IP через magic-DNS Fatmetal: точки на дефисы плюс .fatmetal.net (например 45-15-159-14.fatmetal.net). Логин - root, пароль - пароль вашего сервера (тот же, что для SSH, из панели). Все это отдается и в карточке маркетплейса, и в файле /root/gitlab-credentials.txt на сервере.

А вот валидный HTTPS с первого раза не встал - и это оказалась не проблема GitLab, а наш баг в magic-DNS. Встроенный Let's Encrypt при выпуске серта падал:

DNS problem: SERVFAIL looking up A for 45-15-159-14.fatmetal.net - the domain's nameservers may be malfunctioning

Причина - DNS 0x20. Резолвер Let's Encrypt (как и многие) для защиты от спуфинга шлет имя в случайном регистре (45-15-159-14.FaTmEtAl.NeT). Наша Lua-запись magic-DNS матчила fatmetal.net строго в нижнем регистре - при смешанном регистре совпадение не срабатывало, запись отдавала пусто, резолвер получал SERVFAIL. Обычный dig шлет lowercase, поэтому проблема и пряталась.

Решение - одна строка. Привели имя к нижнему регистру перед сравнением (qname:lower()) в Lua-записи на nameserver. Починка общая для всех magic-хостов сразу. После этого gitlab-ctl reconfigure выписал валидный серт Let's Encrypt, и curl без -k подтвердил доверенную цепочку.

Админ-панель GitLab: обзор экземпляра под root после установки из маркетплейса.
Админ-панель GitLab: обзор экземпляра под root после установки из маркетплейса.
Где может сломаться

Где может сломаться

Память и OOM

На VM меньше 4 ГБ RAM омнибус не соберется - reconfigure упадет по памяти. ~5.5 ГБ в простое означают, что 8 ГБ - это рабочий минимум с запасом под CI и всплески.

Тяжелый reconfigure

Первая установка и каждое крупное обновление гоняют gitlab-ctl reconfigure (cinc/chef) - это минуты и заметная нагрузка. Перед мажорным апгрейдом делайте бэкап: конфиг иногда ломается.

RU-доступ к зеркалам

Пакеты и Docker-образы для CI тянутся с зарубежных зеркал. С российского IP часть источников может быть недоступна - закладывайте прокси/зеркала для CI-раннеров.

Когда НЕ ваш выбор

Когда это НЕ ваш выбор

Если задача - «положить git и делать pull request-ы» небольшой командой, GitLab избыточен: Gitea или Forgejo дадут то же самое за доли ресурсов и поднимутся на самом тарифе CPU4-RAM8-DISK100. GitLab CE оправдан, когда реально нужен весь конвейер - CI/CD, реестр образов, pages, управление - в одном месте, и есть кому его сопровождать. Брать тяжелый омнибус только ради репозиториев - переплата ресурсами.

Итог

GitLab CE - зрелая и полная DevOps-платформа: за один клик из маркетплейса вы получаете рабочий git с CI/CD и registry, вход по magic-DNS с валидным HTTPS. Цена полноты - ресурсы (~5.5 ГБ RAM в простое, минимум 4 ГБ). Если нужен весь конвейер - отличный выбор; если только репозитории - смотрите в сторону легких Gitea/Forgejo.

Рекомендуемая конфигурация для установки:
4 vCPU · 8 ГБ RAM · 100 ГБ NVMe

Не хотите устанавливать вручную?

Запустите GitLab на этой конфигурации автоматически - от 990 ₽/мес.

Запустить GitLab →
Анонсы новых разборов в Telegram-канале Новые гайды и карточки в маркетплейсе первыми @fatmetal_channel →

Замеры сняты на Fatmetal Cloud Server (CPU6-RAM16-DISK100, Ubuntu 24.04) в июле 2026, GitLab CE 19.1.2. Реальные IP, пароли и адреса серверов в публикацию не выносятся.