Self-hosted GitLab на сервере — это неограниченные приватные репозитории, собственный CI/CD и полный контроль над кодом: он лежит на вашем VPS, а не в чужом облаке с лимитами на минуты сборки. Для компаний это ещё и вопрос комплаенса: код не покидает вашу инфраструктуру. В этой статье разберём честные системные требования GitLab CE (спойлер: меньше 8 ГБ RAM даже не пробуйте), пошагово установим его на Ubuntu 24.04, подключим gitlab-runner для пайплайнов и посмотрим на Gitea — лёгкую альтернативу для тех, кому GitLab избыточен.
Зачем разворачивать GitLab на сервере, если есть облако
GitLab.com и GitHub закрывают потребности многих команд, но у собственной инсталляции есть аргументы, которые со временем перевешивают:
- Код под контролем. Репозитории физически находятся на вашем сервере. Для проектов с NDA, госконтрактами или требованиями по локализации данных это часто единственный вариант.
- Без лимитов CI. В облачном GitLab бесплатный тариф даёт 400 минут сборки в месяц. На своём сервере пайплайны крутятся столько, сколько нужно, — ограничение только в ресурсах VPS.
- Неограниченные пользователи и репозитории. Платные seats облачных сервисов для команды из 10–20 человек стоят дороже, чем аренда сервера.
- Недоступность внешних сервисов — не ваша проблема. Блокировки, санкционные ограничения аккаунтов, инциденты на стороне провайдера не остановят ваши деплои.
Цена вопроса — один VPS и немного администрирования: обновления раз в месяц и настроенные бэкапы.
Требования GitLab CE: честно про 8 ГБ RAM
GitLab — тяжёлое приложение. Omnibus-пакет тянет за собой PostgreSQL, Redis, Puma, Sidekiq, Gitaly, встроенный Nginx и Prometheus. Официальные требования для актуальных версий: минимум 8 ГБ RAM и 4 ядра — это конфигурация «до 20 пользователей», и уже на ней GitLab чувствует себя нормально только без активного CI на том же хосте.
| Сценарий | CPU | RAM | Подойдёт тариф |
|---|---|---|---|
| Минимум: до 20 пользователей, CI на отдельном сервере | 4+ ядра | 8 ГБ | Start (впритык) |
| Небольшая команда, лёгкие пайплайны | 8+ ядер | 16 ГБ | Pro |
| Команда 10–40 человек, активный CI, Docker-сборки | 12–20 ядер | 32 ГБ | Ultra — рекомендуем |
Практический ориентир: на сервере с 8 ГБ GitLab после старта занимает 5–6 ГБ, и любая параллельная работа — сборка в runner, миграция при обновлении, всплеск Sidekiq-задач — упирается в память. Поэтому для рабочей инсталляции «GitLab + runner на одном сервере» разумный выбор — тариф Ultra у Cheap-Host: 20 vCPU, 32 ГБ RAM и 192 ГБ NVMe за 1500 ₽/мес. NVMe здесь не маркетинг: Git-операции и PostgreSQL очень чувствительны к скорости диска, на NVMe клоны и пайплайны заметно шустрее. Если сервер станет мал, CPU/RAM/диск апгрейдятся без потери данных.
Установка GitLab CE на Ubuntu 24.04: пошагово
Шаг 1. Подготовьте сервер и DNS
Понадобится чистый VPS с Ubuntu 24.04 и домен (или поддомен вида gitlab.example.com), A-запись которого указывает на IP сервера — как это сделать, разбирали в статье о привязке домена к VPS. Обновите систему и поставьте зависимости:
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl ca-certificates perl openssh-server
Если используете UFW, откройте нужные порты:
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
Шаг 2. Подключите официальный репозиторий
curl -fsSL https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
Скрипт добавит apt-репозиторий gitlab-ce и его GPG-ключ.
Шаг 3. Установите GitLab CE
Переменная EXTERNAL_URL сразу задаёт адрес инсталляции. Если указать https://, GitLab сам выпустит и будет продлевать сертификат Let's Encrypt:
sudo EXTERNAL_URL="https://gitlab.example.com" apt install -y gitlab-ce
Установка и первичная конфигурация занимают несколько минут: пакет весит около гигабайта, затем gitlab-ctl reconfigure разворачивает все сервисы.
Шаг 4. Первый вход
GitLab генерирует пароль пользователя root и кладёт его в файл, который автоматически удаляется через 24 часа:
sudo cat /etc/gitlab/initial_root_password
Зайдите на https://gitlab.example.com, авторизуйтесь как root и сразу смените пароль. Полезно сделать в первые минуты: отключить открытую регистрацию (Admin → Settings → Sign-up restrictions), включить двухфакторную аутентификацию и создать обычного пользователя для повседневной работы.
Шаг 5. Проверьте состояние сервисов
sudo gitlab-ctl status
sudo gitlab-rake gitlab:check
Обе команды должны отработать без ошибок. Управление стеком — тоже через gitlab-ctl: restart, tail (логи), reconfigure после правок /etc/gitlab/gitlab.rb.
CI/CD: подключаем gitlab-runner
Сам GitLab пайплайны не исполняет — для этого нужен gitlab-runner. Его можно поставить на тот же сервер, но лучше на отдельный: Docker-сборки любят съедать CPU и память в самый неподходящий момент. Установка на Ubuntu 24.04:
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash
sudo apt install -y gitlab-runner
Затем возьмите токен регистрации в GitLab (Admin → CI/CD → Runners → New instance runner) и зарегистрируйте runner:
sudo gitlab-runner register \
--url https://gitlab.example.com \
--token <ВАШ_ТОКЕН> \
--executor docker \
--docker-image ubuntu:24.04
Executor docker — самый практичный: каждая джоба выполняется в чистом контейнере. Для него на сервере с runner должен стоять Docker — установку разбирали в статье про Docker на VPS. Теперь достаточно положить в репозиторий .gitlab-ci.yml:
stages:
- test
test:
stage: test
image: python:3.12
script:
- pip install -r requirements.txt
- pytest
— и пайплайн запустится при каждом пуше. Кстати, той же логикой можно закрыть и задачи GitHub: как поднять self-hosted runner для GitHub Actions, мы писали отдельно.
Gitea: если GitLab избыточен
Не каждой команде нужны 8+ ГБ RAM ради приватных репозиториев. Gitea — self-hosted Git-сервис на Go: один бинарник, веб-интерфейс, pull request'ы, issue, вики и собственный CI (Gitea Actions, совместимый с синтаксисом GitHub Actions). Потребление памяти — сотни мегабайт вместо гигабайт: Gitea спокойно живёт на сервере с 1–2 ГБ RAM.
- Выбирайте GitLab, если нужны зрелый встроенный CI/CD, container registry, ревью-процессы, LDAP и перспектива роста команды до десятков человек.
- Выбирайте Gitea, если задача — «приватный Git с веб-мордой для 2–5 разработчиков за минимальные деньги». Она уместится даже на NAT VPS от Cheap-Host за 99–199 ₽/мес.
Обслуживание: бэкапы и обновления
Два правила эксплуатации self-hosted GitLab. Первое — регулярные бэкапы:
sudo gitlab-backup create
Команда собирает архив с репозиториями и базой в /var/opt/gitlab/backups. Отдельно нужно копировать /etc/gitlab/gitlab.rb и /etc/gitlab/gitlab-secrets.json — без файла секретов бэкап не восстановить. Архивы выгружайте на другой сервер или в объектное хранилище — по классической схеме из статьи о резервном копировании VPS. Добавьте задание в cron, например ежедневно в 3:00.
Второе — обновления. GitLab выпускает патчи безопасности часто, обновляться просто:
sudo gitlab-backup create
sudo apt update && sudo apt install -y gitlab-ce
Важно: мажорные версии поднимайте последовательно (например, 17 → 18, не через одну), сверяясь с официальным upgrade path.
FAQ
Сколько оперативной памяти реально нужно GitLab CE?
Официальный минимум — 8 ГБ RAM. На 8 ГБ GitLab работает, но впритык: без запаса под CI и рост команды. Комфортный вариант для команды с активными пайплайнами — 16–32 ГБ.
Можно ли запустить GitLab на дешёвом VPS с 1–2 ГБ RAM?
GitLab CE — нет: он не стартует стабильно даже со swap. Для слабых серверов есть Gitea — репозитории, issue и CI при потреблении в сотни мегабайт.
Чем Gitea отличается от GitLab?
Gitea — лёгкий однобинарный сервис, ест в 10–20 раз меньше памяти. GitLab даёт больше «из коробки»: зрелый CI/CD, container registry, инструменты ревью, интеграции. Маленькой команде Gitea часто достаточно.
Нужно ли ставить gitlab-runner на отдельный сервер?
Необязательно, но желательно: сборки конкурируют за CPU и RAM с самим GitLab. Рабочая схема — GitLab на мощном VPS, runner на втором недорогом.
Как обновлять self-hosted GitLab?
Через apt: сначала gitlab-backup create, затем apt update && apt install gitlab-ce. Мажорные версии — строго последовательно по официальному upgrade path.
Вывод
Свой GitLab на VPS — это код под полным контролем, безлимитный CI и предсказуемая цена вместо облачных подписок. Главное — не экономить на памяти: 8 ГБ — минимум для запуска, а для команды с пайплайнами берите 16–32 ГБ; тем, кому GitLab тяжёл, подойдёт Gitea. Если для этой задачи вам нужен сервер — у Cheap-Host есть тариф Ultra за 1500 ₽/мес: 20 vCPU, 32 ГБ RAM, 192 ГБ NVMe, KVM с полным root, безлимитный трафик и выдача сервера за минуту. Развернуть GitLab можно уже через час после оплаты.