bolt Valebyte VPS від $4/міс — NVMe, запуск за 60 секунд.

Отримати VPS arrow_forward
eco Початковий Туторіал

Встановлення self-hosted

calendar_month Jun 28, 2026 schedule 17 хв. читання visibility 40 переглядів
Установка self-hosted GitLab на VPS: SSL, бэкапы, обновления
info

Потрібен сервер для цього гайду? Ми пропонуємо виділені сервери та VPS у 50+ країнах з миттєвим налаштуванням.

Потрібен сервер для цього гайду?

Розгорніть VPS або виділений сервер за хвилини.

Установка self-hosted GitLab на VPS: SSL, бекапи, оновлення

TL;DR

У цьому докладному посібнику ми крок за кроком налаштуємо self-hosted екземпляр GitLab на віртуальному приватному сервері (VPS), забезпечивши його безпечну роботу з використанням SSL/TLS, автоматичне резервне копіювання та готовність до майбутніх оновлень. Ви навчитеся вибирати відповідний VPS, готувати операційну систему Ubuntu 24.04 LTS, встановлювати GitLab Omnibus, налаштовувати HTTPS з Let's Encrypt та впроваджувати стратегію бекапів, щоб ваш репозиторій коду та CI/CD пайплайни завжди були доступні та захищені.

  • Налаштування безпечного та продуктивного self-hosted GitLab на Ubuntu 24.04 LTS.
  • Інтеграція HTTPS за допомогою Certbot та Let's Encrypt для шифрування трафіку.
  • Впровадження автоматичного резервного копіювання даних GitLab для мінімізації ризиків.
  • Застосування найкращих практик з обслуговування та оновлення системи.
  • Вибір оптимальної конфігурації VPS або виділеного сервера під ваші потреби.

Що ми налаштовуємо і навіщо

Схема: Що ми налаштовуємо і навіщо
Схема: Що ми налаштовуємо і навіщо

У цьому посібнику ми займемося встановленням та налаштуванням GitLab — потужної платформи для управління життєвим циклом розробки програмного забезпечення. GitLab надає повний набір інструментів, включаючи управління Git-репозиторіями, відстеження завдань, CI/CD (безперервну інтеграцію та безперервну доставку), моніторинг, безпеку та багато іншого. Наша мета — розгорнути self-hosted версію GitLab на віртуальному приватному сервері (VPS), що дасть вам повний контроль над вашими даними, безпекою та конфігурацією.

У підсумку ви отримаєте повністю функціональний екземпляр GitLab, доступний за доменним ім'ям через захищене HTTPS-з'єднання. Він буде готовий до використання вашою командою для хостингу коду, управління проектами та автоматизації процесів розробки. Це ідеальне рішення для розробників, стартапів та невеликих команд, яким потрібна гнучкість та приватність, недоступні в публічних хмарних рішеннях.

Альтернативи та вибір self-hosted:

  • Cloud-managed GitLab (GitLab.com): Це найпростіший спосіб розпочати роботу, оскільки GitLab бере на себе всі турботи щодо інфраструктури, оновлень та бекапів. Однак ви обмежені тарифними планами, не маєте повного контролю над даними (вони зберігаються на серверах GitLab), і кастомізація може бути обмежена. Для проектів з високими вимогами до безпеки або специфічними регуляціями це може бути неприйнятно.
  • Self-hosted GitLab на VPS: Цей варіант дає вам максимальний контроль. Ви самі вибираєте сервер, операційну систему, налаштовуєте всі компоненти та відповідаєте за безпеку й обслуговування. Це вимагає технічних знань, але дозволяє адаптувати GitLab під будь-які потреби, інтегрувати його з внутрішньою інфраструктурою та забезпечувати повну приватність ваших даних. Це особливо актуально, якщо ви працюєте з чутливою інформацією або хочете мати повний контроль над своїм ланцюжком постачання ПЗ.

Вибір на користь self-hosted GitLab на VPS обумовлений прагненням до суверенітету даних, можливістю глибокої інтеграції з іншими внутрішніми сервісами та оптимізацією витрат у довгостроковій перспективі порівняно з постійно зростаючими витратами на хмарні сервіси при масштабуванні.

Який VPS-конфіг потрібен під це завдання

Схема: Який VPS-конфіг потрібен під це завдання
Схема: Який VPS-конфіг потрібен під це завдання

GitLab — досить ресурсоємний застосунок, особливо якщо ви плануєте активно використовувати CI/CD та розміщувати багато репозиторіїв. Правильний вибір конфігурації VPS є критичним для забезпечення стабільної та швидкої роботи.

Мінімальні вимоги для одного користувача або невеликої команди (до 5 осіб):

  • Процесор (CPU): 2 ядра (vCPU) з частотою від 2.5 GHz.
  • Оперативна пам'ять (RAM): 4 ГБ. GitLab дуже любить оперативну пам'ять, і 4 ГБ — це абсолютний мінімум, при якому система працюватиме без постійних свопів. Для комфортної роботи рекомендується 8 ГБ.
  • Диск: 50 ГБ SSD. SSD-накопичувачі значно прискорюють операції введення-виведення, що критично для баз даних та роботи з Git-репозиторіями. Якщо планується багато репозиторіїв або великі файли, знадобиться більше місця.
  • Мережа: 100 Мбіт/с або 1 Гбіт/с порт з необмеженим трафіком або достатнім обсягом (від 1 ТБ/місяць).

Рекомендований VPS-план для команди до 15-20 осіб з активним CI/CD:

  • Процесор (CPU): 4 ядра (vCPU) з частотою від 2.8 GHz.
  • Оперативна пам'ять (RAM): 8 ГБ або 16 ГБ. Це забезпечить стабільну роботу всіх компонентів GitLab, включаючи PostgreSQL, Redis та Gitaly, а також дозволить запускати кілька CI/CD пайплайнів одночасно.
  • Диск: 100-200 ГБ NVMe SSD. NVMe надає ще вищу швидкість читання/запису, що помітно прискорить роботу з великими репозиторіями та проектами.
  • Мережа: 1 Гбіт/с порт з необмеженим трафіком.

Для оренди VPS із зазначеними характеристиками, наприклад, 4 vCPU, 8-16 ГБ RAM, 100-200 ГБ NVMe SSD, можна розглянути пропозиції провайдерів. Відповідний варіант можна знайти тут: VPS із зазначеними характеристиками.

Коли потрібен dedicated, а не VPS?

Виділений сервер (dedicated server) стає необхідним, якщо:

  • Велика команда (понад 50 користувачів): GitLab з великою кількістю активних користувачів та CI/CD-завдань може споживати значні ресурси.
  • Високі вимоги до продуктивності: Для дуже активних CI/CD пайплайнів, великих монорепозиторіїв або специфічних робочих навантажень.
  • Специфічні вимоги до безпеки/ізоляції: Якщо вам потрібна повна ізоляція від інших клієнтів провайдера, виділений сервер надає це.
  • Необхідність у кастомному обладнанні: Для специфічних завдань (наприклад, GPU для машинного навчання в CI/CD) може знадобитися пряме управління залізом.

Якщо ви зіткнулися з такими потребами, розгляньте можливість взяти виділений сервер.

Локація: на що впливає

Вибір географічної локації VPS-сервера впливає на кілька ключових аспектів:

  • Затримка (Latency): Чим ближче сервер до вашої команди та кінцевих користувачів, тим нижча затримка. Це критично для комфортної роботи з Git, швидкого завантаження веб-інтерфейсу та виконання CI/CD завдань.
  • Законодавство: Розташування сервера визначає застосовне законодавство про дані. Це важливо для відповідності таким нормам, як GDPR, HIPAA або місцевим законам про зберігання даних.
  • Вартість: Ціни на VPS можуть варіюватися залежно від регіону.

Рекомендується вибирати локацію, максимально близьку до основної частини вашої команди розробників.

Підготовка сервера

Схема: Підготовка сервера
Схема: Підготовка сервера

Перш ніж приступити до встановлення GitLab, необхідно виконати базове налаштування операційної системи. Ми будемо використовувати Ubuntu Server 24.04 LTS, оскільки це актуальна довгострокова версія, що підтримується до 2029 року.

1. Підключення по SSH та створення нового користувача

Після отримання даних для доступу до VPS (зазвичай це IP-адреса, логін root та пароль), підключіться до сервера:


ssh root@ВАША_IP_АДРЕСА

Створіть нового користувача з правами sudo для повсякденної роботи. Замініть ваш_пользователь на бажане ім'я:


# Додавання нового користувача
adduser ваш_пользователь

# Додавання користувача до групи sudo
usermod -aG sudo ваш_пользователь

Тепер вийдіть із сесії root та увійдіть під новим користувачем:


exit
ssh ваш_пользователь@ВАША_IP_АДРЕСА

2. Налаштування SSH-ключів (рекомендується)

Для підвищення безпеки рекомендується використовувати SSH-ключі замість паролів. Якщо у вас ще немає ключів, згенеруйте їх на локальній машині:


# На вашій локальній машині
ssh-keygen -t rsa -b 4096 -C "ваша_почта@example.com"

Потім скопіюйте публічний ключ на сервер:


# На вашій локальній машині
ssh-copy-id ваш_пользователь@ВАША_IP_АДРЕСА

Після цього ви можете відключити авторизацію за паролем для root у файлі /etc/ssh/sshd_config. Знайдіть рядки:


# PermitRootLogin prohibit-password
# PasswordAuthentication yes

І змініть їх на:


PermitRootLogin no
PasswordAuthentication no

Перезапустіть SSH-сервіс:


# На сервері, під вашим_користувачем
sudo systemctl restart sshd

3. Оновлення системи та встановлення базових утиліт

Переконайтеся, що система актуальна та встановлені необхідні пакети:


# Оновлення списку пакетів
sudo apt update

# Оновлення всіх встановлених пакетів
sudo apt upgrade -y

# Встановлення необхідних утиліт
sudo apt install -y curl wget gnupg2 ca-certificates apt-transport-https htop git unattended-upgrades

Unattended Upgrades: Цей пакет автоматично встановлює критичні оновлення безпеки, що вкрай важливо для підтримки сервера в актуальному та захищеному стані.

4. Налаштування файрволу (UFW)

Налаштуємо базовий файрвол UFW (Uncomplicated Firewall) для захисту сервера. За замовчуванням ми дозволимо лише SSH, HTTP, HTTPS:


# Дозволити SSH (за замовчуванням порт 22)
sudo ufw allow ssh

# Дозволити HTTP (порт 80)
sudo ufw allow http

# Дозволити HTTPS (порт 443)
sudo ufw allow https

# Увімкнути файрвол
sudo ufw enable

Підтвердіть увімкнення файрволу, натиснувши y. Перевірити статус можна командою sudo ufw status.

5. Встановлення Fail2ban (захист від брутфорсу)

Fail2ban сканує логи та автоматично банить IP-адреси, які показують ознаки шкідливої активності (наприклад, багаторазові невдалі спроби входу по SSH).


# Встановлення Fail2ban
sudo apt install -y fail2ban

# Запуск та увімкнення автозапуску Fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Створіть файл конфігурації для Fail2ban, щоб він не перезаписувався при оновленнях:


sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Відкрийте /etc/fail2ban/jail.local та налаштуйте, наприклад, bantime (час бану) та findtime (період для виявлення спроб) під свої потреби. Переконайтеся, що секція [sshd] увімкнена (enabled = true).


# Приклад налаштування в /etc/fail2ban/jail.local
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5

[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

Перезапустіть Fail2ban для застосування змін:


sudo systemctl restart fail2ban

Тепер ваш сервер готовий до встановлення GitLab.

Встановлення ПЗ — покроково

Схема: Встановлення ПЗ — покроково
Схема: Встановлення ПЗ — покроково

Ми будемо встановлювати GitLab Community Edition (CE) за допомогою Omnibus-пакета, який включає в себе всі необхідні компоненти (NGINX, PostgreSQL, Redis тощо) та значно спрощує процес встановлення та обслуговування. Для 2026 року будемо орієнтуватися на GitLab версії 20.x, яка буде актуальною на той момент.

Перед встановленням переконайтеся, що у вас є доменне ім'я, яке вказує на IP-адресу вашого VPS. Наприклад, gitlab.yourdomain.com.

1. Встановлення залежностей

Для додавання репозиторію GitLab потрібно кілька пакетів:


# Встановлення пакетів, необхідних для додавання репозиторію GitLab
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl gnupg2

2. Додавання репозиторію GitLab

Імпортуємо GPG-ключ GitLab та додамо офіційний репозиторій Omnibus-пакетів:


# Додавання GPG-ключа GitLab
curl https://packages.gitlab.com/gpg.key | sudo gpg --dearmor > /usr/share/keyrings/gitlab-archive-keyring.gpg

# Додавання репозиторію GitLab CE для Ubuntu 24.04 (Noble Numbat)
echo "deb [signed-by=/usr/share/keyrings/gitlab-archive-keyring.gpg] https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu noble main" | sudo tee /etc/apt/sources.list.d/gitlab-ce.list

Оновіть список пакетів після додавання нового репозиторію:


# Оновлення списку пакетів
sudo apt update

3. Встановлення GitLab Community Edition

Тепер можна встановити GitLab. У команді встановлення вкажемо зовнішній URL, який GitLab використовуватиме для генерації посилань та налаштування NGINX. Замініть gitlab.yourdomain.com на ваш домен.


# Встановлення GitLab CE із зазначенням зовнішнього URL
sudo EXTERNAL_URL="https://gitlab.yourdomain.com" apt install gitlab-ce

Ця команда встановить останню стабільну версію GitLab CE, доступну в репозиторії. Процес може зайняти деякий час, оскільки буде завантажено та встановлено багато компонентів.

4. Початкове налаштування та переконфігурація

Після встановлення GitLab автоматично запустить процес переконфігурації, який налаштує всі компоненти. Якщо ви не вказали EXTERNAL_URL під час встановлення або хочете змінити будь-які налаштування, ви можете зробити це у файлі /etc/gitlab/gitlab.rb.

Якщо вам потрібно переконфігурувати GitLab вручну (наприклад, після зміни gitlab.rb):


# Запуск процесу переконфігурації GitLab
sudo gitlab-ctl reconfigure

Ця команда перечитає файл gitlab.rb та застосує всі зміни, а також переконається, що всі служби GitLab запущені та налаштовані правильно.

5. Перевірка статусу сервісів GitLab

Переконайтеся, що всі компоненти GitLab запущені та працюють коректно:


# Перевірка статусу всіх сервісів GitLab
sudo gitlab-ctl status

Ви повинні побачити список сервісів (nginx, postgresql, redis, unicorn, sidekiq, gitaly тощо) зі статусом run.

6. Встановлення пароля для root-користувача GitLab

При першому встановленні GitLab генерує тимчасовий пароль для користувача root. Ви можете знайти його у файлі /etc/gitlab/initial_root_password, який існує лише 24 години після встановлення.


# Перегляд тимчасового пароля root
sudo cat /etc/gitlab/initial_root_password

Рекомендується відразу ж встановити новий, надійний пароль через веб-інтерфейс або через консоль Rails:


# Запуск консолі GitLab Rails
sudo gitlab-rails console

# Всередині консолі Rails
user = User.where(id: 1).first
user.password = 'ВАШ_НОВИЙ_НАДІЙНИЙ_ПАРОЛЬ'
user.password_confirmation = 'ВАШ_НОВИЙ_НАДІЙНИЙ_ПАРОЛЬ'
user.save!

# Вихід з консолі
exit

Тепер ви можете отримати доступ до веб-інтерфейсу GitLab за адресою https://gitlab.yourdomain.com, використовуючи логін root та ваш новий пароль.

Конфігурація

Схема: Конфігурація
Схема: Конфігурація

Основний файл конфігурації для GitLab Omnibus — це /etc/gitlab/gitlab.rb. Після будь-яких змін у цьому файлі необхідно виконати sudo gitlab-ctl reconfigure для їх застосування.

1. Базова конфігурація GitLab (/etc/gitlab/gitlab.rb)

Відкрийте файл gitlab.rb для редагування:


sudo nano /etc/gitlab/gitlab.rb

Знайдіть та розкоментуйте/змініть наступні рядки:


# Зовнішній URL вашого GitLab-інстансу. Це має бути налаштовано під час встановлення, але переконайтеся.
external_url 'https://gitlab.yourdomain.com'

# Вимкнення вбудованого NGINX, якщо ви використовуєте зовнішній проксі (не наш випадок)
# nginx['enable'] = true # За замовчуванням увімкнено

# Налаштування електронної пошти для сповіщень (обов'язково для роботи)
# Замініть на дані вашого SMTP-сервера
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.your-email-provider.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "[email protected]"
gitlab_rails['smtp_password'] = "ВАШ_ПАРОЛЬ_ВІД_ПОШТИ"
gitlab_rails['smtp_domain'] = "yourdomain.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false # Встановіть у true, якщо ваш провайдер вимагає TLS

gitlab_rails['gitlab_email_from'] = '[email protected]'
gitlab_rails['gitlab_email_display_name'] = 'GitLab'

# Налаштування резервного копіювання (буде розглянуто докладніше в розділі бекапів)
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
gitlab_rails['backup_keep_time'] = 604800 # 7 днів у секундах

Після внесення змін збережіть файл та виконайте переконфігурацію:


sudo gitlab-ctl reconfigure

2. Налаштування TLS/HTTPS за допомогою Certbot (Let's Encrypt)

Для забезпечення безпечного з'єднання по HTTPS ми будемо використовувати Certbot для отримання безкоштовних SSL/TLS-сертифікатів від Let's Encrypt. GitLab Omnibus має вбудовану підтримку Let's Encrypt, що значно спрощує процес.

У файлі /etc/gitlab/gitlab.rb знайдіть наступні рядки та переконайтеся, що вони налаштовані:


# Увімкнення автоматичного керування сертифікатами Let's Encrypt
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['ваша_почта@example.com'] # Обов'язково вкажіть ваш email
letsencrypt['auto_renew_hour'] = 12 # Година для щоденної спроби оновлення
letsencrypt['auto_renew_minute'] = 30 # Хвилина для щоденної спроби оновлення
letsencrypt['auto_renew_day_of_month'] = "/7" # Раз на 7 днів

# Увімкнення перенаправлення HTTP на HTTPS (рекомендується)
nginx['redirect_http_to_https'] = true

Збережіть файл та знову виконайте переконфігурацію:


sudo gitlab-ctl reconfigure

GitLab автоматично спробує отримати та встановити сертифікат. Якщо у вас виникнуть проблеми, переконайтеся, що:

  • Ваш домен (gitlab.yourdomain.com) коректно вказує на IP-адресу вашого VPS.
  • Порти 80 (HTTP) та 443 (HTTPS) відкриті у вашому файрволі (UFW).

3. Перевірка працездатності

Після налаштування та переконфігурації переконайтеся, що GitLab працює коректно:

  • Доступ через веб-інтерфейс: Відкрийте в браузері https://gitlab.yourdomain.com. Ви повинні побачити сторінку входу GitLab. Перевірте, що з'єднання захищено (зелений замочок в адресному рядку).
  • Перевірка HTTP-редиректу: Спробуйте зайти за адресою http://gitlab.yourdomain.com. Вас має автоматично перенаправити на HTTPS-версію.
  • Перевірка стану GitLab:
    
    # Перевірка основних сервісів GitLab
    sudo gitlab-ctl status
    
    # Запуск вбудованої перевірки здоров'я GitLab
    sudo gitlab-rake gitlab:check SANITIZE=true
                

    Команда gitlab-rake gitlab:check виконає серію перевірок, яка покаже потенційні проблеми з конфігурацією, правами доступу або базою даних. Якщо є помилки, уважно прочитайте їх та дотримуйтесь рекомендацій.

  • Перевірка портів:
    
    # Перевірка, що NGINX слухає порти 80 та 443
    sudo netstat -tulnp | grep -E ':(80|443)'
                

На цьому етапі ваш self-hosted GitLab має бути повністю функціональним та доступним через захищене з'єднання.

Резервне копіювання та обслуговування

Схема: Резервне копіювання та обслуговування
Схема: Резервне копіювання та обслуговування

Резервне копіювання — це критично важлива частина будь-якої продакшн-системи. У GitLab є вбудовані механізми для створення резервних копій, які дозволяють зберегти всі дані: репозиторії Git, бази даних, завантажені файли, конфігурацію та секрети.

1. Що резервувати

GitLab Omnibus включає в себе все необхідне. Команда резервного копіювання GitLab за замовчуванням зберігає:

  • Базу даних PostgreSQL
  • Git-репозиторії
  • Завантажені файли (аватари, вкладення)
  • Конфігураційні файли (не всі, але основні)
  • Секрети (ключі шифрування)

Важливо: файл /etc/gitlab/gitlab.rb та директорія /etc/gitlab/ssl/ (якщо ви використовуєте кастомні сертифікати) не включаються до стандартної резервної копії GitLab. Їх слід резервувати окремо.

2. Простий скрипт авторезервування

GitLab надає зручну команду для створення резервних копій. Ви можете налаштувати її запуск через cron.

Крок 1: Створення резервної копії вручну


# Створення повної резервної копії GitLab
sudo gitlab-rake gitlab:backup:create

Резервні копії за замовчуванням зберігаються в /var/opt/gitlab/backups/. Файли мають формат [TIMESTAMP]_gitlab_backup.tar.

Крок 2: Налаштування автоматичного резервного копіювання за допомогою Cron

Відкрийте таблицю cron для редагування:


sudo crontab -e

Додайте наступний рядок, щоб GitLab створював резервну копію щодня о 02:00 ночі:


# Щоденне резервне копіювання GitLab о 02:00
0 2    sudo gitlab-rake gitlab:backup:create CRON=1

Опція CRON=1 пригнічує інтерактивні запити та робить виведення більш лаконічним, що зручно для автоматизованих завдань.

Крок 3: Резервне копіювання конфігураційних файлів

Створіть окремий скрипт для резервного копіювання gitlab.rb та інших важливих файлів:


sudo mkdir -p /var/opt/gitlab/config_backups
sudo nano /usr/local/bin/gitlab_config_backup.sh

Додайте до файлу наступний вміст:


#!/bin/bash
TIMESTAMP=$(date +%F_%H-%M-%S)
BACKUP_DIR="/var/opt/gitlab/config_backups"
CONFIG_FILES="/etc/gitlab/gitlab.rb /etc/gitlab/gitlab-secrets.json /etc/gitlab/ssl" # Додайте інші важливі файли/папки

# Створення архіву з конфігураційними файлами
sudo tar -czf "$BACKUP_DIR/${TIMESTAMP}_gitlab_config.tar.gz" $CONFIG_FILES

# Видалення старих резервних копій (наприклад, старших за 7 днів)
find "$BACKUP_DIR" -type f -name ".tar.gz" -mtime +7 -delete

echo "GitLab configuration backup created: $BACKUP_DIR/${TIMESTAMP}_gitlab_config.tar.gz"

Зробіть скрипт виконуваним:


sudo chmod +x /usr/local/bin/gitlab_config_backup.sh

Додайте його до crontab (наприклад, о 02:30):


# Щоденне резервне копіювання конфігурації GitLab о 02:30
30 2    sudo /usr/local/bin/gitlab_config_backup.sh

3. Куди зберігати резервні копії

Зберігати резервні копії на тому ж сервері, що й основний інстанс GitLab, вкрай ризиковано. У разі втрати сервера ви втратите і резервні копії. Рекомендується використовувати зовнішнє сховище:

  • Хмарне сховище, сумісне з S3: AWS S3, DigitalOcean Spaces, Backblaze B2. GitLab Omnibus підтримує пряме завантаження резервних копій до S3. Для цього відредагуйте /etc/gitlab/gitlab.rb:
    
    # Увімкнути завантаження резервних копій до S3
    gitlab_rails['backup_upload_connection'] = {
      'provider' => 'AWS',
      'region' => 'us-east-1', # Замініть на ваш регіон S3
      'aws_access_key_id' => 'ВАШ_AWS_ACCESS_KEY_ID',
      'aws_secret_access_key' => 'ВАШ_AWS_SECRET_ACCESS_KEY'
    }
    gitlab_rails['backup_upload_remote_directory'] = 'gitlab-backups' # Назва вашого S3-бакету
                

    Після зміни виконайте sudo gitlab-ctl reconfigure.

  • Окремий VPS: Ви можете налаштувати другий, невеликий VPS та використовувати rsync або scp для регулярного перенесення резервних копій з основного сервера на нього.
  • NAS/локальний сервер: Якщо у вас є власне обладнання, можна налаштувати мережеве сховище.

Важливо: використовуйте окремі облікові дані (IAM-користувача) для S3 з мінімальними правами (лише запис до вказаного бакету).

4. Оновлення: rolling vs maintenance window

Регулярні оновлення GitLab критичні для безпеки та отримання нових функцій. GitLab випускає нові версії щомісяця (major.minor.patch).

  • Rolling updates (не рекомендується для GitLab): Це підхід, при якому оновлення застосовуються відразу після їх виходу. Для GitLab це небезпечно, оскільки кожне оновлення може містити зміни в базі даних або конфігурації, що потребують уваги.
  • Maintenance window: Рекомендований підхід. Плануйте регулярне вікно обслуговування (наприклад, раз на місяць) для оновлення GitLab. Це дозволяє підготуватися, зробити резервну копію та у разі проблем швидко відкотитися.
    
    # Зупинка GitLab перед оновленням
    sudo gitlab-ctl stop
    
    # Оновлення системи та GitLab
    sudo apt update
    sudo apt upgrade -y gitlab-ce
    
    # Запуск GitLab після оновлення
    sudo gitlab-ctl start
    
    # Переконфігурація (іноді потрібна після major-оновлень)
    sudo gitlab-ctl reconfigure
    
    # Перевірка стану
    sudo gitlab-ctl status
    sudo gitlab-rake gitlab:check
                

Завжди читайте офіційні інструкції з оновлення GitLab для вашої конкретної версії, оскільки можуть бути специфічні кроки між мажорними версіями.

Вирішення проблем + FAQ

Що робити, якщо GitLab не запускається після перезавантаження?

По-перше, перевірте логи. Основні логи GitLab знаходяться в /var/log/gitlab/. Почніть з gitlab-rails/production.log, nginx/gitlab_access.log, nginx/gitlab_error.log та gitlab-shell/gitlab-shell.log. Також виконайте sudo gitlab-ctl status, щоб побачити, які сервіси не запущені. Часто проблема пов'язана з нестачею пам'яті або неправильною конфігурацією в /etc/gitlab/gitlab.rb. Спробуйте виконати sudo gitlab-ctl reconfigure та sudo gitlab-ctl restart.

Не вдається отримати SSL-сертифікат від Let's Encrypt. У чому проблема?

Найбільш часті причини: 1) Неправильно налаштований DNS-запис для вашого домену — переконайтеся, що A-запис вказує на IP-адресу вашого VPS. 2) Порт 80 або 443 заблоковано файрволом (UFW або файрволом провайдера VPS). Переконайтеся, що sudo ufw status показує allow 80/tcp та allow 443/tcp. 3) Інший процес вже слухає порт 80 або 443. Перевірте sudo netstat -tulnp | grep -E ':(80|443)'. 4) Помилки в /etc/gitlab/gitlab.rb, наприклад, невірний external_url або не вказано contact_emails для Let's Encrypt.

Який VPS-конфіг мінімально підійде?

Для одного користувача або дуже невеликої команди (до 3-5 осіб) з мінімумом активностей та без інтенсивного CI/CD, мінімально прийнятний VPS повинен мати 2 ядра CPU, 4 ГБ RAM та 50 ГБ SSD. Однак, для більш комфортної та стабільної роботи, особливо якщо планується використовувати CI/CD, настійно рекомендується 4 ядра CPU, 8 ГБ RAM та 100 ГБ NVMe SSD. Менші параметри призведуть до постійних уповільнень та збоїв через нестачу ресурсів.

Що обрати — VPS чи dedicated для цього завдання?

Вибір між VPS та виділеним сервером залежить від масштабу вашої команди та інтенсивності використання GitLab. Для більшості невеликих та середніх команд (до 50-70 осіб) з помірним CI/CD, добре сконфігурований VPS (наприклад, 8-16 ГБ RAM, 8 vCPU, 200+ ГБ NVMe SSD) буде більш ніж достатнім та економічно вигідним. Виділений сервер стає кращим для дуже великих команд (сотні користувачів), високонавантажених CI/CD-пайплайнів, специфічних вимог до продуктивності вводу-виводу або повної фізичної ізоляції ресурсів. У будь-якому випадку, почніть з VPS та масштабуйтеся до dedicated, якщо виникнуть проблеми з продуктивністю.

Як змінити розмір максимального файлу для завантаження?

Максимальний розмір файлу для завантаження в GitLab за замовчуванням обмежений. Щоб змінити його, відредагуйте /etc/gitlab/gitlab.rb. Знайдіть або додайте наступні рядки:


# Збільшити ліміт завантаження NGINX до 2048MB (2GB)
nginx['client_max_body_size'] = '2048m'

# Збільшити ліміт Git (для великих LFS-файлів)
gitlab_rails['gitlab_shell_git_max_size'] = 2048000 # У KB, 2GB

Після збереження файлу виконайте sudo gitlab-ctl reconfigure.

Як оновити GitLab до нової версії?

Процес оновлення включає кілька кроків. Спочатку зробіть повну резервну копію GitLab. Потім зупиніть сервіси GitLab: sudo gitlab-ctl stop. Оновіть пакети системи та GitLab: sudo apt update && sudo apt upgrade -y gitlab-ce. Після оновлення запустіть GitLab: sudo gitlab-ctl start та виконайте переконфігурацію: sudo gitlab-ctl reconfigure. Завжди перевіряйте офіційну документацію GitLab щодо оновлення для вашої конкретної версії, оскільки між мажорними версіями можуть бути додаткові кроки.

Висновки та наступні кроки

Схема: Висновки та наступні кроки
Схема: Висновки та наступні кроки

Вітаємо! Ви успішно встановили та налаштували self-hosted GitLab на вашому VPS, забезпечивши його безпеку за допомогою SSL/TLS та впровадивши стратегію резервного копіювання. Тепер у вас є потужна та гнучка платформа для управління вашими проєктами розробки, контролю версій та автоматизації CI/CD процесів, повністю під вашим контролем.

Ось кілька кроків, куди можна рухатися далі:

  • Налаштування GitLab CI/CD: Вивчіть можливості GitLab CI/CD для автоматизації збірки, тестування та розгортання ваших застосунків. Налаштуйте GitLab Runner на окремому сервері або в Docker-контейнері для ізоляції та масштабування CI/CD завдань.
  • Інтеграція із зовнішніми сервісами: Підключіть GitLab до ваших існуючих інструментів, таких як системи відстеження завдань (Jira), зовнішні сховища артефактів або моніторингові системи.
  • Моніторинг продуктивності: Впровадьте інструменти моніторингу (наприклад, Prometheus та Grafana) для відстеження стану та продуктивності вашого GitLab-інстансу, щоб своєчасно реагувати на потенційні проблеми та планувати масштабування.

Поділитися цим записом:

встановлення self-hosted gitlab на vps: ssl, бекапи, оновлення
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.