береженого кольт бережет
береженого кольт бережет

Установка и настройка GitLab в Ubuntu 18.04

GitLab CE (Community Edition) — приложение с открытым исходным кодом, в основном используемое для хостинга хранилищ Git. Приложение имеет дополнительные функции, связанные с разработкой, такие как отслеживание проблем. Оно предназначено для размещения вашей собственной инфраструктуры, обеспечения гибкости развертывания внутреннего хранилища для вашей группы разработчиков, открытого взаимодействия с пользователями и размещения собственных проектов вкладчиков.

Проект GitLab позволяет относительно легко создать экземпляр GitLab на собственном оборудование с использованием удобного механизма установки. В этом руководстве мы расскажем, как устанавливать и настраивать GitLab на сервере Ubuntu 18.04.

Предварительные требования

Для данного обучающего руководства вам потребуется следующее:

  • Сервер Ubuntu 18.04 с пользователем non-root sudo и простым брандмауэром.

В опубликованных требованиях GitLab к аппаратному обеспечению рекомендуется использовать сервер со следующими параметрами:

  • 2 процессорных ядра
  • 8 Гбайт оперативной памяти

Хотя вы можете обойти это требование, используя файл подкачки оперативной памяти, делать этого не рекомендуется. Для целей настоящего руководства мы предполагаем, что ваша система как минимум отвечает вышеуказанным требованиям.

  • Доменное имя, указывающее на ваш сервер.

Шаг 1 — Установка зависимостей

Прежде чем выполнять установку GitLab, важно установить программное обеспечение, используемое при установке и на постоянной основе. К счастью, все требуемое программное обеспечение можно легко установить из заданных по умолчанию хранилищ пакетов Ubuntu.

Поскольку мы впервые используем apt в этом сеансе, мы можем обновить индекс локального пакета и установить зависимости с помощью следующей команды:

$ sudo apt update
$ sudo apt install ca-certificates curl openssh-server postfix

Вероятно, некоторые элементы этого программного обеспечения у вас уже установлены. Для установки postfix выберите вариант Internet Site в диалоговом окне. На следующем экране введите доменное имя вашего сервера, чтобы настроить отправку почты в системе.

Шаг 2 — Установка GitLab

Настроив зависимости, мы можем приступить к установке GitLab. Это простой процесс, использующий сценарий установки для настройки хранилищ GitLab в системе.

Перейдите в каталог /tmp и загрузите установочный скрипт:

$ cd /tmp
$ curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh

Вы можете изучить загруженный скрипт, чтобы понять, какие действия он будет выполнять. Размещенную версию сценария можно найти здесь:

$ less /tmp/script.deb.sh

Когда вы будете довольны безопасностью скрипта, запустите программу установки:

$ sudo bash /tmp/script.deb.sh

Скрипт настроит ваш сервер для использования хранилищ, обслуживаемых GitLab. Это позволит вам управлять GitLab с помощью тех же средств управления пакетами, которые вы используете для других системных пакетов. Завершив эту задачу, вы можете начать установку приложения GitLab с помощью apt:

$ sudo apt install gitlab-ce

При этом в системе будут установлены необходимые компоненты.

Шаг 3 — Настройка правил брандмауэра

Прежде чем настраивать GitLab, убедитесь, что правила брандмауэра разрешают веб-трафик. Если вы следовали указаниям, ссылки на которые приведены в предварительных требованиях, у вас будет активирован брандмауэр ufw.

Просмотрите текущий статус активного брандмауэра, введя следующее:

$ sudo ufw status
Output

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)

Как видите, текущие правила разрешают трафик SSH, однако доступ к другим службам ограничен. Поскольку GitLab представляет собой веб-приложение, мы должны разрешить доступ HTTP. Поскольку мы будем использовать возможность GitLab запрашивать и активировать бесплатный сертификат TLS/SSL от Let’s Encrypt, необходимо также разрешить доступ HTTPS.

Протокол сопоставления портов HTTP и HTTPS доступен в файле /etc/services, и мы можем разрешить этот входящий трафик по имени. Если у вас еще не разрешен трафик OpenSSH, вы также должны разрешить этот трафик:

$ sudo ufw allow http
$ sudo ufw allow https
$ sudo ufw allow OpenSSH

Проверьте статус ufw еще раз; на настоящий момент должен быть настроен доступ как минимум к следующим двум службам:

$ sudo ufw status
Output

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
443/tcp                    ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)             
443/tcp (v6)               ALLOW       Anywhere (v6)

Вышеуказанные результаты показывают, что веб-интерфейс GitLab будет доступен, как только мы настроим это приложение.

Шаг 4 — Редактирование файла конфигурации GitLab

Прежде чем вы можете использовать приложение, вам нужно обновить файл конфигурации и запустить команду изменения конфигурации. Прежде всего, откройте файл конфигурации Gitlab:

$ sudo nano /etc/gitlab/gitlab.rb

Наверху вы увидите строку конфигурации external_url. Измените эту строку для соответствия с вашим доменом. Замените http на https, чтобы GitLab автоматически перенаправлял пользователей на сайт, защищенный сертификатом Let’s Encrypt:

/etc/gitlab/gitlab.rb

##! For more details on configuring external_url see:
##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
external_url 'https://example.com'

Теперь посмотрим настройку letsencrypt['contact_emails']. Эта настройка определяет список адресов электронной почты, которые проект Let’s Encrypt мог бы использовать для связи с вами, если с вашим доменом возникнут проблемы. Будет полезно указать эти адреса в комментарии, чтобы вы могли получать уведомления о любых проблемах:

/etc/gitlab/gitlab.rb

letsencrypt['contact_emails'] = ['sammy@example.com']

Сохраните и закройте файл. Запустите следующую команду, чтобы изменить конфигурацию Gitlab:

$ sudo gitlab-ctl reconfigure

Команда выполняет инициализацию GitLab, используя информацию о вашем сервере, которую она сможет найти. Этот процесс полностью автоматизирован, и вам не нужно вводить никакие данные в диалоги. Данный процесс также настроит сертификат Let’s Encrypt для вашего домена.

Шаг 5 — Начальная настройка конфигурации через веб-интерфейс

Когда GitLab работает, и доступ разрешен, мы можем выполнить начальную настройку конфигурации приложения через веб-интерфейс.

Первый вход в систему

Откройте доменное имя вашего сервера GitLab в вашем браузере:

https://example.com

При первом входе откроется диалоговое окно установки пароля для учетной записи администратора:

В начальном диалоговом окне ввода пароля укажите и подтвердите защищенный пароль для административной учетной записи. Нажмите кнопку Change your password (Изменить пароль), когда будете готовы.

После этого вы перейдете на стандартную страницу входа в систему GitLab:

Здесь вы можете войти в систему с помощью только что заданного пароля. Учетные данные:

  • Имя пользователя: root
  • Пароль: [заданный вами пароль]

Введите эти значения в поля для существующих пользователей и нажмите кнопку Sign in (Вход). После входа в приложение откроется начальная страница, куда вы сможете добавлять проекты:

Теперь вы можете внести простые изменения и настроить GitLab желаемым образом.

Изменение настроек профиля

Одной из первых задач после установки должна стать настройка профиля. GitLab использует разумные значения по умолчанию, но обычно после начала использования программного обеспечения их требуется изменить.

Чтобы внести необходимые изменения, нажмите значок пользователя в правом верхнем углу интерфейса. Выберите пункт Settings (Настройки) в выпадающем меню:

Откроется раздел настроек Profile (Профиль):

Измените имя и адрес электронной почты с Administrator и admin@example.com на более подходящие значения. Введенное имя будет отображаться другим пользователям, а адрес электронной почты будет использоваться для определения аватара по умолчанию, отправки уведомлений, в действиях Git через интерфейс и т. д.

После завершения настройки нажмите кнопку Update Profile settings (Обновить настройки профиля):

На указанный адрес электронной почты будет отправлено письмо с подтверждением. Следуйте указаниям в письме, чтобы подтвердить учетную запись и начать ее использовать с GitLab.

Изменение имени учетной записи

Нажмите Account (Учетная запись) в левой панели меню:

Здесь вы можете найти свой частный токен API или настроить двухфакторную аутентификацию. Однако пока что нас интересует раздел Change username (Изменить имя пользователя).

По умолчанию первой административной учетной записи присваивается имя root. Поскольку это имя широко известно, безопаснее заменить его другим именем. Изменится только имя учетной записи, права администратора у вас сохранятся. Замените root предпочитаемым именем пользователя:

Нажмите кнопку Update username (Обновить имя пользователя), чтобы внести изменения:

При следующем входе в GitLab обязательно используйте новое имя пользователя.

Добавление ключа SSH для своей учетной записи

В большинстве случаев вы захотите использовать с Git ключи SSH для взаимодействия с проектами GitLab. Для этого вам нужно добавить свой открытый ключ SSH в учетную запись GitLab.

Если вы уже создали на локальном компьютере пару ключей SSH, вы можете просмотреть открытый ключ с помощью следующей команды:

$ cat ~/.ssh/id_rsa.pub

Вы увидите большой блок текста, выглядящий примерно так:

Output

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop

Скопируйте этот текст и вернитесь на страницу настройки профиля в веб-интерфейсе GitLab.

Если вместо этого вы получите сообщение, выглядящее следующим образом, это будет означать, что на вашем компьютере не настроена пара ключей SSH:

Output

cat: /home/sammy/.ssh/id_rsa.pub: No such file or directory

В этом случае вы можете создать пару ключей SSH, для чего нужно ввести следующую команду:

$ ssh-keygen

Примите параметры по умолчанию, а при желании укажите пароль для локальной защиты ключа:

Output

Generating public/private rsa key pair.
Enter file in which to save the key (/home/sammy/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/sammy/.ssh/id_rsa.
Your public key has been saved in /home/sammy/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:I8v5/M5xOicZRZq/XRcSBNxTQV2BZszjlWaIHi5chc0 sammy@gitlab.docsthat.work
The key's randomart image is:
+---[RSA 2048]----+
|          ..%o==B|
|           *.E =.|
|        . ++= B  |
|         ooo.o . |
|      . S .o  . .|
|     . + .. .   o|
|      +   .o.o ..|
|       o .++o .  |
|        oo=+     |
+----[SHA256]-----+

После этого вы сможете просматривать свой открытый ключ с помощью следующей команды:

$ cat ~/.ssh/id_rsa.pub
Output

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop

Скопируйте отображаемый блок текста и вернитесь в настройки профиля в веб-интерфейсе GitLab.

Нажмите пункт SSH Keys (Ключи SSH) в левом меню:

Вставьте в указанное место открытый ключ, скопированный с локального компьютера. Присвойте ему описательное название и нажмите кнопку Add key (Добавить ключ):

Теперь вы должны иметь возможность управлять проектами и хранилищами GitLab с локального компьютера без ввода учетных данных GitLab.

Шаг 6 — Ограничение или отключение открытого входа в систему (опционально)

Возможно на начальной странице GitLab вы заметили, что зарегистрировать учетную запись может кто угодно. Если вы собираетесь разместить публичный проект, эта возможность будет полезна. Однако в большинстве случаев желательны более строгие ограничения.

Прежде всего, откройте область администрирования. Для этого нажмите значок гаечного ключа на панели меню вверху страницы:

На следующей странице вы увидите обзор своего экземпляра GitLab. Для изменения настройки нажмите Settings (Настройки) в нижней части левого меню:

Вы перейдете в раздел глобальных настроек для вашего экземпляра GitLab. Здесь вы можете изменить ряд настроек, влияющих на возможность регистрации новых пользователей и их уровень доступа.

Отключение регистрации

Если вы хотите полностью отключить регистрацию (вы все равно сможете сами создавать учетные записи для новых пользователей), прокрутите страницу до раздела Sign-up Restrictions (Ограничения регистрации).

Уберите отметку из поля Sign-up enabled (Регистрация разрешена):

Прокрутите страницу до конца и нажмите кнопку Save changes (Сохранить изменения):

Теперь на начальной странице GitLab не должен отображаться раздел регистрации.

Ограничение регистрации по домену

Если вы используете GitLab в организации, предоставляющей адреса электронной почты в определенном домене, вы можете разрешить регистрацию только для этого домена, а не отключать ее полностью.

В разделе Sign-up Restrictions (Ограничения регистрации) установите отметку в поле** Send confirmation email on sign-up (Отправлять письмо с подтверждением при регистрации)**. Так пользователи смогут входить в систему только после подтверждения своего адреса электронной почты.

Затем добавьте свой домен или домены в поле Whitelisted domains for sign-ups (Белый список доменов для регистрации). В каждой строке можно указать только один домен. Вы можете использовать звездочку (*) как подстановочный символ в именах доменов:

Прокрутите страницу до конца и нажмите кнопку Save changes (Сохранить изменения):

Теперь на начальной странице GitLab не должен отображаться раздел регистрации.

Ограничение создания проектов

По умолчанию новые пользователи могут создавать до 10 проектов. Если вы хотите разрешить новым пользователям видеть данные и участвовать в проектах, но при этом ограничить им возможность создания новых проектов, вы можете использовать для этой цели раздел Account and Limit Settings (Настройки учетных записей и ограничений).

Вы можете установить для параметра Default projects limit (Лимит проектов по умолчанию) значение 0, чтобы полностью запретить новым пользователям создавать проекты:

Новых пользователей можно будет добавлять в проекты вручную, и у них будет доступ к внутренним или публичным проектам, созданным другими пользователями.

Прокрутите страницу до конца и нажмите кнопку Save changes (Сохранить изменения):

Новые пользователи смогут создавать учетные записи, но не смогут создавать проекты.

Обновление сертификатов Let’s Encrypt

По умолчанию в GitLab имеется запланированная задача обновления сертификатов Let’s Encrypt каждые четыре дня после полуночи, точное время зависит от параметра external_url. Вы можете изменить эти настройки в файле /etc/gitlab/gitlab.rb. Например, если вы хотите выполнять обновление каждый 7-й день в 12:30, вы можете задать это следующим образом:

/etc/gitlab/gitlab.rb

letsencrypt['auto_renew_hour'] = "12"
letsencrypt['auto_renew_minute'] = "30"
letsencrypt['auto_renew_day_of_month'] = "*/7"

Автоматическое обновление можно отключить, добавив соответствующий параметр в /etc/gitlab/gitlab.rb:

/etc/gitlab/gitlab.rb

letsencrypt['auto_renew'] = false

Когда автоматическое обновление включено, вам не нужно беспокоиться о перебоях в обслуживании.

Теперь на вашем сервере должен размещаться работающий экземпляр GitLab. Вы можете импортировать или создавать новые проекты и настраивать надлежащие уровни доступа для членов вашей команды. GitLab постоянно добавляет функции и обновляет свою платформу, и мы рекомендуем часто посещать главную страницу проекта, чтобы не пропустить информацию об улучшениях или важных уведомлениях.