Як встановити GitLab на виділений сервер
GitLab є платформою для Git-репозиторіїв, рев'ю коду, обліку задач і CI/CD, яку можна розгорнути на власному сервері. Власна інсталяція тримає вихідний код під вашим контролем, а її можливості залежать лише від ресурсів сервера та функцій GitLab, які ви використовуєте.
Виділений сервер добре підходить для GitLab. Сховище репозиторіїв активно працює з диском, а база даних і фонові сервіси потребують стабільного обсягу оперативної пам'яті. На виділеному обладнанні ці ресурси ні з ким не поділяються, тому GitLab відповідає швидко навіть під час великих пушів і запусків CI.
Навіщо власний GitLab
Для старту зручний GitLab.com, але зі зростанням команди власна інсталяція часто виявляється вигіднішою:
- Код залишається на вашому сервері. Вихідний код, задачі та секрети CI/CD зберігаються на обладнанні, яке ви контролюєте, у вибраній вами локації дата-центру. Це важливо для проєктів з NDA або вимогами до місця зберігання даних.
- Немає тарифних обмежень на користувачів, сховище та хвилини CI/CD. Безкоштовний тариф GitLab.com їх обмежує, а на власному сервері межу задають лише його ресурси.
- Власні CI/CD-ранери. Збірки виконуються на ваших серверах без оплати обчислювальних хвилин і можуть звертатися до внутрішніх сервісів, закритих від інтернету.
- Повний контроль над оновленнями та налаштуваннями. Ви самі вирішуєте, коли оновлюватися, які інтеграції вмикати і як робити резервні копії.
Якщо ви вже працюєте в GitLab.com, спочатку встановіть власну інсталяцію, а потім перенесіть до неї групи та проєкти.
У цьому посібнику показано, як встановити GitLab з офіційного пакета на Ubuntu або Debian, отримати безкоштовний сертифікат Let's Encrypt і підготувати інсталяцію для роботи команди.
Що потрібно перед встановленням
Виділений сервер щонайменше з 8 vCPU (потоками процесора) і 16 ГБ RAM. 4-ядерний процесор із Hyper-Threading або SMT уже дає 8 потоків. GitLab запуститься і на 8 ГБ, але займе майже всю пам'ять і під навантаженням працюватиме повільно. Використовуйте SSD або NVMe: не менше 40 ГБ вільного місця під систему й GitLab, плюс місце під усі репозиторії та резервні копії.
На сервері встановлено Ubuntu 26.04 LTS, Ubuntu 24.04 LTS або Debian 13. Команди в посібнику однакові для всіх трьох систем; там, де Debian відрізняється, це зазначено окремо.
Домен або піддомен для GitLab, наприклад gitlab.example.com.
DNS-запис типу A, який спрямовує цей домен на публічну IPv4-адресу сервера.
Якщо ви додаєте ще й запис AAAA, IPv6 на сервері вже має працювати. За наявності запису AAAA Let's Encrypt перевіряє домен через IPv6, і якщо сервер ним недоступний, сертифікат не буде випущено. Якщо не впевнені, додайте лише запис A.
Доступ root або користувач із правами sudo. Команди в посібнику виконуються від root; якщо ви працюєте під користувачем із sudo, додавайте sudo перед ними. У команді додавання репозиторію GitLab sudo ставиться перед bash: curl ... | sudo bash.
Порти 22 (SSH), 80 (HTTP) і 443 (HTTPS) відкриті з інтернету. Порт 80 потрібен, навіть якщо ви плануєте працювати лише через HTTPS: Let's Encrypt перевіряє домен через HTTP.
У всьому посібнику замініть gitlab.example.com на свій домен, а 203.0.113.10 на IP-адресу вашого сервера.
Підключення до сервера
Підключіться до сервера через SSH зі свого комп'ютера:
Перевірте версію операційної системи:
cat /etc/os-release
Приклад виводу:
PRETTY_NAME="Ubuntu 26.04 LTS" NAME="Ubuntu" VERSION_ID="26.04" ...
У виводі має бути Ubuntu 26.04, Ubuntu 24.04 або Debian 13. Потім перевірте кількість ядер CPU, обсяг оперативної пам'яті та вільне місце на диску:
nproc free -h df -h /
Переконайтеся, що домен уже спрямовано на сервер. Виконайте цю команду на своєму комп'ютері (вона працює у Windows, macOS і Linux):
nslookup gitlab.example.com
Запис A має повертати публічну IPv4-адресу сервера. Якщо ви використовуєте й запис AAAA, переконайтеся, що сервер доступний через IPv6. Якщо адреси не збігаються, виправте DNS-записи й дочекайтеся, поки зміни наберуть чинності. Не продовжуйте, доки домен не вказуватиме на сервер: GitLab запитує сертифікат Let's Encrypt під час первинного налаштування.
Оновлення сервера та встановлення залежностей
Оновіть списки пакетів і встановлені пакети:
apt update && apt upgrade -y
Задайте ім'я сервера, що збігається з доменом GitLab. Для встановлення це не обов'язково, але так ім'я системи збігається з адресою GitLab у логах і вихідних листах:
hostnamectl set-hostname gitlab.example.com
Встановіть пакети, потрібні GitLab:
apt install -y curl openssh-server ca-certificates perl tzdata locales
GitLab також потрібна локаль UTF-8: без неї вбудована база даних PostgreSQL може не ініціалізуватися під час встановлення. Увімкніть en_US.UTF-8 у списку локалей і згенеруйте її (в Ubuntu 26.04 вона вже увімкнена, і перша команда нічого не змінює):
sed -i 's/^# *en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen locale-gen
Налаштування файрвола
У посібнику використовується файрвол UFW. В Ubuntu він є, але вимкнений за замовчуванням; у Debian його потрібно спочатку встановити:
apt install -y ufw
Якщо UFW на сервері вже увімкнений, спочатку перевірте поточні правила командою ufw status. Дозвольте SSH, HTTP і HTTPS і лише після цього увімкніть файрвол, щоб поточна SSH-сесія не обірвалася:
ufw allow ssh ufw allow http ufw allow https ufw enable
На запит підтвердження відповідайте y. Перевірте правила:
ufw status
Приклад виводу:
Status: active To Action From -- ------ ---- 22/tcp ALLOW Anywhere 80/tcp ALLOW Anywhere 443/tcp ALLOW Anywhere 22/tcp (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443/tcp (v6) ALLOW Anywhere (v6)
Якщо SSH-сервер працює на порту, відмінному від 22, дозвольте цей порт до ufw enable, наприклад ufw allow 2222/tcp. Інакше з'єднання із сервером буде втрачено.
Додавання репозиторію GitLab
GitLab поширюється у двох редакціях:
- GitLab Enterprise Edition (
gitlab-ee). Містить усі безкоштовні функції та дозволяє пізніше активувати платні без перевстановлення. - GitLab Community Edition (
gitlab-ce). Повністю відкрита збірка з безкоштовними функціями GitLab.
У посібнику використовується gitlab-ee. Якщо ви віддаєте перевагу Community Edition, замініть gitlab-ee на gitlab-ce в усіх командах.
Додайте офіційний репозиторій GitLab:
curl -fsSL https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | bash
Скрипт додає репозиторій і його ключ підпису та оновлює список пакетів.
Встановлення GitLab
Встановіть пакет і передайте адресу інсталяції в EXTERNAL_URL. Вкажіть адресу з https://: у цьому разі GitLab сам запитає сертифікат Let's Encrypt і налаштує перенаправлення з HTTP на HTTPS.
EXTERNAL_URL='https://gitlab.example.com' apt install -y gitlab-ee
Під час встановлення GitLab розпаковує свої компоненти (вебсервер, базу даних PostgreSQL, Redis, сховище Git і фонові сервіси), записує конфігурацію в /etc/gitlab/gitlab.rb, запитує сертифікат і запускає всі сервіси. Це займає від 5 до 10 хвилин. Наприкінці виводу з'явиться повідомлення «Thank you for installing GitLab!».
Приклад виводу:
Thank you for installing GitLab! GitLab should be available at https://gitlab.example.com
GitLab генерує випадковий пароль для облікового запису root і зберігає його у файл. Виведіть його:
cat /etc/gitlab/initial_root_password
Скопіюйте пароль. Файл автоматично видаляється через 24 години після встановлення, тому увійдіть у систему й задайте свій пароль до цього терміну.
Пароль root можна задати самостійно під час встановлення: додайте GITLAB_ROOT_PASSWORD='ваш-пароль' перед EXTERNAL_URL у команді встановлення. Використовуйте одинарні лапки, щоб оболонка не змінила символи на кшталт $ або !. Якщо пароль коротший за 8 символів, GitLab його не використає й згенерує випадковий.
Перший вхід і перевірка HTTPS
Відкрийте https://gitlab.example.com у браузері. Сторінка має відкритися без попередження про безпеку, а браузер має показувати дійсний сертифікат від Let's Encrypt.
Якщо сторінка показує помилку 502, GitLab ще запускає сервіси. Зачекайте хвилину-дві й оновіть сторінку.
Увійдіть з іменем користувача root і паролем з initial_root_password.
Одразу змініть пароль. Натисніть на свій аватар і виберіть Edit profile. У меню ліворуч розгорніть Access, виберіть Password and authentication і натисніть Change password. Введіть поточний і новий пароль і натисніть Save password. GitLab не приймає слабкі паролі, зокрема ті, що містять слово «gitlab» або ім'я користувача.
Якщо сторінка не відкривається через HTTPS, найімовірніше, сертифікат не було випущено. У цьому разі у виводі встановлення буде помилка Let's Encrypt. Перевірте, що домен спрямовано на IP-адресу сервера, порт 80 відкритий і немає запису AAAA без робочого IPv6. Усунувши причину, запросіть сертифікат повторно:
gitlab-ctl reconfigure
Let's Encrypt обмежує кількість невдалих спроб на годину, тому спочатку усуньте причину, а потім повторюйте.
Базове налаштування GitLab
Вимкніть публічну реєстрацію. Якщо інсталяція призначена лише для вашої команди, вимкніть створення облікових записів зі сторінки реєстрації. За замовчуванням будь-хто, хто відкриє сторінку вашого GitLab, може зареєструватися, і новий обліковий запис чекає на підтвердження адміністратора. Найшвидше це зробити кнопкою Deactivate у банері на головній сторінці GitLab. Також можна натиснути Admin у правому верхньому куті, перейти до Settings > General і розгорнути розділ New user account restrictions. Зніміть прапорець Allow new user accounts і натисніть Save changes. Після цього нові облікові записи створюватимуть лише адміністратори.

Створіть облікові записи користувачів. Перейдіть до Admin > Instance overview > Users і натисніть New user, заповніть ім'я, ім'я користувача та адресу електронної пошти й натисніть Create user. Для щоденної роботи використовуйте особистий обліковий запис із правами адміністратора, а root лише за потреби.
Створіть групу. Групи об'єднують проєкти та учасників команди. Натисніть Create new (значок плюса) на верхній панелі, потім New group > Create group, введіть назву й натисніть Create group. Додайте колег до групи в розділі Manage > Members.



Додайте SSH-ключ. Щоб працювати з репозиторіями через SSH, кожен користувач додає свій публічний ключ у Edit profile > Access > SSH keys: натисніть Add new key, вставте ключ і натисніть Add key.
GitLab надсилає листи для скидання пароля, підтвердження облікового запису та його розблокування після невдалих спроб входу. Поки вихідну пошту не налаштовано (див. «Що налаштувати далі»), ці функції не працюють, і скидати паролі адміністраторам доведеться вручну.
Перевірка встановлення
Перевірте, що всі сервіси GitLab запущені:
gitlab-ctl status
Приклад виводу:
run: gitaly: (pid 2981) 512s; run: log: (pid 2975) 512s run: gitlab-workhorse: (pid 3412) 498s; run: log: (pid 3401) 498s run: nginx: (pid 3530) 495s; run: log: (pid 3522) 495s run: postgresql: (pid 3105) 507s; run: log: (pid 3098) 507s run: puma: (pid 3288) 501s; run: log: (pid 3280) 501s run: redis: (pid 2950) 514s; run: log: (pid 2944) 514s run: sidekiq: (pid 3350) 499s; run: log: (pid 3342) 499s ...
Кожен рядок має починатися з run:.
Запустіть вбудовану перевірку конфігурації та сервісів:
gitlab-rake gitlab:check SANITIZE=true
Створіть тестовий репозиторій. У вебінтерфейсі натисніть Create new > New project/repository > Create blank project, введіть ім'я test, оберіть свою групу й залиште увімкненим прапорець Initialize repository with a README. Натисніть Create project.


Перевірте доступ через SSH зі свого комп'ютера:
ssh -T [email protected]
Приклад виводу:
Welcome to GitLab, @username!
За робочого налаштування з'явиться привітання з вашим іменем користувача. Потім клонуйте тестовий репозиторій:
git clone [email protected]:group/test.git
Замініть group на шлях своєї групи. Якщо репозиторій склонувався і в ньому є README.md, GitLab встановлено й він працює.
Що налаштувати далі
Резервне копіювання. Команда gitlab-backup create створює резервну копію застосунку з базою даних GitLab, репозиторіями та іншими даними в /var/opt/gitlab/backups. Файли конфігурації /etc/gitlab/gitlab.rb і /etc/gitlab/gitlab-secrets.json до архіву не входять, їх потрібно зберігати окремо, наприклад командою gitlab-ctl backup-etc. Без gitlab-secrets.json відновлена інсталяція не зможе розшифрувати налаштування 2FA та змінні CI/CD. Робіть резервні копії застосунку та конфігурації регулярно й копіюйте їх до сховища за межами сервера GitLab, наприклад до INTROSERV Cloud Storage: див. Підключення INTROSERV Cloud Storage до сервера.
Вихідна пошта. Налаштуйте SMTP-сервер у /etc/gitlab/gitlab.rb, щоб GitLab міг надсилати сповіщення, листи для скидання пароля та підтвердження облікових записів. Див. SMTP settings у документації GitLab.
GitLab Runner. Runner виконує пайплайни CI/CD. Збірки сильно навантажують CPU і RAM, тому Runner краще встановлювати на окремий VPS або виділений сервер, а не на сервер із GitLab.
Оновлення. GitLab випускає нову версію щомісяця, а виправлення безпеки ще частіше. Перед оновленням через кілька версій звіртеся з офіційним шляхом оновлення: GitLab потрібно проводити через певні проміжні версії. Зробіть резервну копію, потім оновіть командою apt update && apt install -y gitlab-ee.
Моніторинг. У GitLab вбудовано Prometheus, і він експортує власні метрики. Стан інсталяції можна перевірити в Admin > Monitoring > Health check, а вказані там адреси підключити до зовнішньої системи моніторингу.

Підібрати сервер для GitLab можна на сторінці Виділені сервери.