Свой GitLab на VPS: установка, требования, CI

Для бизнеса
Свой GitLab на VPS: установка, требования, CI

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 на том же хосте.

СценарийCPURAMПодойдёт тариф
Минимум: до 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 можно уже через час после оплаты.

Читайте также