EUR
european

EUR

usa

USD

Ex. VAT Ex. VAT 0%

Як встановити 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-адресу сервера.

Warning

Якщо ви додаєте ще й запис 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.

Info

У всьому посібнику замініть gitlab.example.com на свій домен, а 203.0.113.10 на IP-адресу вашого сервера.

Підключення до сервера

Підключіться до сервера через SSH зі свого комп'ютера:

ssh [email protected]

Перевірте версію операційної системи:

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)

Warning

Якщо 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 години після встановлення, тому увійдіть у систему й задайте свій пароль до цього терміну.

Info

Пароль root можна задати самостійно під час встановлення: додайте GITLAB_ROOT_PASSWORD='ваш-пароль' перед EXTERNAL_URL у команді встановлення. Використовуйте одинарні лапки, щоб оболонка не змінила символи на кшталт $ або !. Якщо пароль коротший за 8 символів, GitLab його не використає й згенерує випадковий.

Перший вхід і перевірка HTTPS

Відкрийте https://gitlab.example.com у браузері. Сторінка має відкритися без попередження про безпеку, а браузер має показувати дійсний сертифікат від Let's Encrypt.

Info

Якщо сторінка показує помилку 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.

Info

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 можна на сторінці Виділені сервери.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • kingdom
  • germany
  • Español
  • French
  • Hrvatska
  • Italiano
  • Poland
  • Slovenski
  • ukraine
  • Türkçe
  • Русский
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA