Tutorial

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

GitApplicationsLet's EncryptUbuntu 18.04

Введение

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

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

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

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

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

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

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

  • Доменное имя, указывающее на ваш сервер. Дополнительную информацию можно найти в документации по началу использования DNS на DigitalOcean. В этом обучающем руководстве мы будем использовать доменное имя example.com.

Шаг 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

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

Диалоговое окно установки начального пароля GitLab

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

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

Диалоговое окно первого входа в систему GitLab

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

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

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

Начальная страница GitLab

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

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

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

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

Кнопка настройки профиля GitLab

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

Страница настройки профиля GitLab

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

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

Кнопка обновления настроек профиля GitLab

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

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

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

Меню учетной записи в GitLab

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

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

Раздел изменения имени пользователя GitLab

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

Кнопка обновления имени пользователя GitLab

При следующем входе в 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) в левом меню:

Элемент меню GitLab SSH Keys (Ключи SSH)

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

GitLab и ключ SSH

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

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

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

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

Кнопка административное области GitLab

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

Кнопка административных настроек GitLab

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

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

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

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

GitLab отключает возможность регистрации

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

Кнопка сохранения настроек GitLab

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

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

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

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

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

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

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

Кнопка сохранения настроек GitLab

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

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

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

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

Установка нулевого количества проектов в GitLab

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

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

Кнопка сохранения настроек GitLab

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

Обновление сертификатов 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 постоянно добавляет функции и обновляет свою платформу, и мы рекомендуем часто посещать главную страницу проекта, чтобы не пропустить информацию об улучшениях или важных уведомлениях.

Creative Commons License