GitLab CE на VPS: власна платформа для Git, CI/CD та управління проєктами

GitLab Community Edition — це повноцінна self-hosted DevOps-платформа: Git, CI/CD, issue-трекер та управління проєктами в одному пакеті. У цій статті розглянемо, як встановити GitLab CE на VPS на Debian, Ubuntu та AlmaLinux.

Що таке GitLab CE

GitLab Community Edition — це повноцінна self-hosted DevOps-платформа: Git-репозиторії, CI/CD-пайплайни, реєстр контейнерів, issue-трекер, вікі та управління проєктами — все в одному пакеті. На відміну від легших альтернатив (Gitea, Forgejo), GitLab CE закриває практично весь життєвий цикл розробки без потреби підключати сторонні сервіси, але й вимагає суттєво більше ресурсів сервера.

Що вміє GitLab

  • Git-репозиторії з повним UI — merge requests, code review, захищені гілки.
  • Вбудований CI/CD — пайплайни описуються прямо в .gitlab-ci.yml, без стороннього Jenkins чи іншого інструмента.
  • Container Registry — вбудоване сховище Docker-образів.
  • Issue-трекер та дошки задач — kanban-дошки, епіки, milestone.
  • Вікі проєкту — документація поряд з кодом.
  • Runners — власні виконавці для CI/CD-завдань, які можна розгорнути на цьому ж або на окремих серверах.

Скільки ресурсів реально потрібно

Важливо: офіційний мінімум GitLab CE — 4 ГБ оперативної пам’яті, але на практиці цього замало навіть для одного невеликого проєкту. GitLab одночасно запускає Puma, Sidekiq, PostgreSQL, Redis, Prometheus та Gitaly на одному сервері — свіже встановлення з одним проєктом вже споживає понад 6 ГБ пам’яті. Плануйте щонайменше 8 ГБ RAM і 2-4 ядра CPU, інакше сервер відчутно “гальмуватиме” вже на старті.

Що має бути готово заздалегідь

  • VPS з Debian 12/13, Ubuntu 22.04/24.04 або AlmaLinux 8/9, мінімум 8 ГБ RAM
  • Доступ sudo або root
  • Зареєстрований домен з DNS A-записом, спрямованим на IP сервера (потрібен для Let’s Encrypt)
  • Доступ до вихідного порту 25 або зовнішній SMTP-сервер для сповіщень

Встановлення GitLab CE на Debian та Ubuntu

Крок 1. Базові залежності

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl openssh-server ca-certificates tzdata perl

Крок 2. Пошта для сповіщень (опційно, але рекомендовано)

sudo apt install -y postfix

При встановленні оберіть варіант “Internet Site” та вкажіть FQDN сервера. Якщо плануєте використовувати зовнішній SMTP (Gmail, SendGrid тощо) — цей крок можна пропустити й налаштувати SMTP пізніше прямо в GitLab.

Крок 3. Підключення офіційного репозиторію та встановлення

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

sudo EXTERNAL_URL="https://ваш-домен.com" apt install -y gitlab-ce

Змінна EXTERNAL_URL обов’язково вказується до встановлення пакета — саме на її основі GitLab одразу налаштує Nginx і спробує випустити SSL-сертифікат через Let’s Encrypt.

Встановлення GitLab CE на AlmaLinux

Крок 1. Базові залежності

sudo dnf update -y
sudo dnf install -y curl policycoreutils-python-utils openssh-server perl postfix
sudo dnf remove -y httpd
sudo systemctl enable --now sshd postfix

Крок 2. Підключення офіційного репозиторію та встановлення

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

sudo EXTERNAL_URL="https://ваш-домен.com" dnf install -y gitlab-ce
На AlmaLinux з увімкненим SELinux (типова конфігурація) Omnibus-пакет GitLab розрахований на роботу з SELinux “з коробки” і зазвичай не потребує додаткових політик. Якщо все ж зустрінете відмови в логах, перевірте їх командою sudo ausearch -m avc -ts recent.

Перше налаштування

Пакет GitLab CE (він же Omnibus GitLab) сам встановлює й налаштовує PostgreSQL, Redis, Nginx та всі інші компоненти. Після завершення встановлення застосуйте конфігурацію:

sudo gitlab-ctl reconfigure

Процес займає кілька хвилин при першому запуску. Відкрийте у браузері вказаний домен:

https://ваш-домен.com

Якщо всі попередні кроки були виконані вірно, Ви отримаєте вікно входу в GitLab:

Отримання пароля адміністратора

Тимчасовий пароль облікового запису root GitLab генерує автоматично й зберігає у файлі, який видаляється через 24 години після встановлення:

sudo cat /etc/gitlab/initial_root_password
Важливо: обов’язково увійдіть і змініть цей пароль протягом перших 24 годин — після цього файл із тимчасовим паролем автоматично видаляється системою, і відновити доступ можна буде лише через скидання пароля вручну через консоль сервера.

Резервне копіювання

sudo gitlab-backup create STRATEGY=copy

Бекап не включає файли /etc/gitlab/gitlab.rb та /etc/gitlab/gitlab-secrets.json — саме в них зберігаються ключі шифрування й конфігурація. Їх треба копіювати окремо:

sudo cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab-secrets.json /var/opt/gitlab/backups/

Для автоматичних щоденних бекапів додайте завдання в cron:

echo "0 2 * * * /opt/gitlab/bin/gitlab-backup create STRATEGY=copy CRON=1" | sudo tee /etc/cron.d/gitlab-backup

Оскільки GitLab одночасно тримає в пам’яті кілька важких сервісів і активно пише в базу даних при кожному пуші чи запуску CI/CD-пайплайну — варто одразу закладатись на VPS з NVMe/SSD накопичувачами та достатнім запасом RAM, інакше швидкість роботи PostgreSQL і Gitaly під навантаженням помітно просяде.

Прокрутка до верху