Как установить и настроить GitLab в Ubuntu 18.04

Вступление

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

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

Предпосылки

Для этого урока вам понадобятся:

  • Сервер Ubuntu 18.04 с некорневым пользователем sudo и базовым межсетевым экраном. Чтобы настроить это, следуйте нашемуUbuntu 18.04 initial server setup guide.

published GitLab hardware requirements рекомендуют использовать сервер с:

  • 2 ядра

  • 8 ГБ ОЗУ

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

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

[[step-1 -—- install-the-dependencies]] == Шаг 1. Установка зависимостей

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

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

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

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

[[step-2 -—- install-gitlab]] == Шаг 2. Установка GitLab

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

Перейдите в каталог/tmp, а затем загрузите сценарий установки:

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

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

less /tmp/script.deb.sh

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

sudo bash /tmp/script.deb.sh

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

sudo apt install gitlab-ce

Это установит необходимые компоненты в вашей системе.

[[step-3 -—- adjusting-the-firewall-rules]] == Шаг 3. Настройка правил брандмауэра

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

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

sudo ufw status
OutputStatus: 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 status; вы должны увидеть доступ, настроенный как минимум к этим двум службам:

sudo ufw status
OutputStatus: 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]] == Шаг 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 Encrypt может использовать для связи с вами в случае проблем с вашим доменом. Рекомендуется раскомментировать и заполнить это, чтобы вы знали о любых проблемах:

/etc/gitlab/gitlab.rb

letsencrypt['contact_emails'] = ['[email protected]']

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

sudo gitlab-ctl reconfigure

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

[[step-5 -—- execution-initial-configuration-through-the-web-interface]] == Шаг 5 - Выполнение начальной настройки через веб-интерфейс

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

Вход в первый раз

Посетите доменное имя вашего сервера GitLab в веб-браузере:

https://example.com

При первом посещении вы должны увидеть начальное приглашение установить пароль для учетной записи администратора:

GitLab initial password set prompt

В запросе начального пароля введите и подтвердите безопасный пароль для учетной записи администратора. По завершении нажмите кнопкуChange your password.

Вы будете перенаправлены на обычную страницу входа в GitLab:

GitLab first sign in prompt

Здесь вы можете войти с паролем, который вы только что установили. Полномочия:

  • Имя пользователя:root

  • Пароль: [пароль, который вы установили]

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

GitLab initial login landing page

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

Настройка параметров вашего профиля

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

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

GitLab profile settings button

Вы попадете в разделProfile своих настроек:

GitLab profile settings page

Отрегулируйте адресName иEmail от «Администратора» и «[email protected]» на более точные. Выбранное вами имя будет отображаться другим пользователям, а электронная почта будет использоваться для определения аватара по умолчанию, уведомлений, действий Git через интерфейс и т. Д.

По завершении нажмите кнопкуUpdate Profile settings внизу:

GitLab update profile settings button

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

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

Затем щелкните элементAccount в левой строке меню:

GitLab account menu item

Здесь вы можете найти свой приватный токен API или настроить двухфакторную аутентификацию. Однако интересующая нас функциональность - это секцияChange username.

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

GitLab change username section

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

GitLab update username button

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

Добавление ключа SSH в вашу учетную запись

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

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

cat ~/.ssh/id_rsa.pub

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

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

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

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

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

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

ssh-keygen

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

OutputGenerating 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 [email protected]
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
Outputssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop

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

Щелкните элементSSH Keys в левом меню:

GitLab SSH Keys menu item

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

GitLab add SSH Key

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

[[step-6 -—- restting-or-dishibited-public-sign-ups-optional]] == Шаг 6. Ограничение или отключение публичных регистраций (необязательно)

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

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

GitLab administrative area button

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

GitLab administrative settings button

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

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

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

Снимите флажокSign-up enabled:

GitLab deselect sign-ups enabled

Прокрутите вниз и нажмите кнопкуSave changes:

GitLab save settings button

Раздел регистрации теперь должен быть удален с целевой страницы GitLab.

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

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

В разделеSign-up Restrictions выберите полеSend confirmation email on sign-up, которое позволит пользователям входить в систему только после того, как они подтвердят свой адрес электронной почты.

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

GitLab restrict sign-ups by domain

Прокрутите вниз и нажмите кнопкуSave changes:

GitLab save settings button

Раздел регистрации теперь должен быть удален с целевой страницы GitLab.

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

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

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

GitLab set projects to zero

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

Прокрутите вниз и нажмите кнопкуSave changes:

GitLab save settings button

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

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

Related