Установка и настройка GitLab в Debian 9

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

Приложение GitLab легко установить и настроить на своей машине. Данный мануал поможет вам в этом.

Требования

1: Установка зависимостей

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

Обновите индекс пакетов и установите зависимости приложения:

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

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

2: Установка 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:

sudo apt install gitlab-ce

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

3: Настройка брандмауэра

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

Просмотрите текущее состояние брандмауэра:

sudo ufw status
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, нужно активировать профиль WWW Full. Если ранее вы по какой-то причине не добавили в этот список OpenSSH, сделайте это сейчас.

sudo ufw allow "WWW Full"
sudo ufw allow OpenSSH

Снова проверьте состояние ufw.

sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To                         Action      From
--                         ------      ----
22/tcp (OpenSSH)           ALLOW IN    Anywhere
80,443/tcp (WWW Full)      ALLOW IN    Anywhere
22/tcp (OpenSSH (v6))      ALLOW IN    Anywhere (v6)
80,443/tcp (WWW Full (v6)) ALLOW IN    Anywhere (v6)

Теперь у вас есть доступ к веб-интерфейсу GitLab.

4: Настройка GitLab

Прежде чем начать работу с приложением, отредактируйте конфигурации GitLab.

sudo nano /etc/gitlab/gitlab.rb

В начале файла найдите строку external_url. Укажите в ней ваше доменное имя. Вместо http укажите https, чтобы в дальнейшем приложение GitLab могло использовать шифрование при помощи сертификата Let’s Encrypt.

##! 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 может связаться с вами в случае ошибки. Раскомментируйте этот параметр и укажите свой адрес:

letsencrypt['contact_emails'] = ['8host@example.com']

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

sudo gitlab-ctl reconfigure

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

5: Настройка GitLab с помощью веб-интерфейса

Первый логин

Чтобы получить доступ к интерфейсу GitLab, перейдите по ссылке:

https://example.com

На экране появится приветственная страница, которая предложит выбрать пароль администратора.

Выберите и подтвердите надёжный пароль и нажмите Change your password.

После этого появится форма аутентификации. Введите свои учётные данные:

  • Username: root
  • Password: вы выбрали его только что

Нажмите Sign in. На экране появится страница, которая предложит вам добавить новые проекты.

Теперь можно внести поправки в настройки GitLab.

Настройка профиля

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

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

По умолчанию приложение использует в полях Name и Email такие значения:

Name
Administrator
Email
admin@example.com

Замените их своими данными. Выбранное вами имя будут видеть другие пользователи, а электронная почта будет использоваться уведомлений интерфейса Git и т.д.

Чтобы Обновить данные, нажмите кнопку Update Profile settings.

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

Изменение имени пользователя

В верхнем меню выберите Account.

Здесь вы найдете закрытый токен API. Также здесь можно настроить двухфакторную аутентификацию и изменить имя пользователя, которое вы указываете при входе в аккаунт. Для этого выберите раздел Change username.

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

Примечание: Конечно, после изменения имени у вас останутся все права.

Выберите уникальное имя и нажмите кнопку Update username.

Теперь при входе в аккаунт GitLab используйте это имя пользователя вместо root.

Добавление SSH-ключа

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

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

cat ~/.ssh/id_rsa.pub

Команда вернёт объемный результат:

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

Скопируйте этот ключ и вернитесь в настройки профиля.

Если же команда cat вернула следующее сообщение:

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

то у вас нет SSH-ключей. Чтобы создать такую пару ключей, введите:

ssh-keygen

Примите стандартные параметры и выберите надёжный пароль, который защитит ключи.

Generating public/private rsa key pair.
Enter file in which to save the key (/home/8host/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/8host/.ssh/id_rsa.
Your public key has been saved in /home/8host/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:I8v5/M5xOicZRZq/XRcSBNxTQV2BZszjlWaIHi5chc0 8host@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
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 8host@mydesktop

Скопируйте ключ и вернитесь в настройки профиля GitLab. Откройте меню SSH Keys.

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

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

6: Ограничение или блокировка открытой регистрации (опционально)

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

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

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

Блокировка регистрации

Чтобы полностью отключить такую возможность, откройте раздел Sign-up Restrictions. Уберите галочку в Sign-up enabled, а затем нажмите Save.

Форма регистрации исчезнет с посадочной страницы приложения.

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

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

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

Затем добавьте домен (или домены) в белый список, поле Whitelisted domains for sign-ups. Каждый домен должен находиться в отдельной строке.

Whitelisted domains for sign-ups
example.com
*. example.com

Примечание: Символ * включает поддержку алиасов доменов.

Нажмите Save changes. Форма регистрации исчезнет с посадочной страницы приложения.

Ограничение возможности создавать проекты

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

Измените Default projects limit. Чтобы полностью отнять право на создание новых проектов, выберите значение 0.

Default projects limit 0

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

Сохраните новые настройки.

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

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

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

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

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

letsencrypt['auto_renew'] = false

Заключение

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

Tags: , ,