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