Поиск по сайту:

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


Введение

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

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

Предпосылки

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

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

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

  • 4 ядра для вашего процессора
  • 4 ГБ ОЗУ для памяти

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

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

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

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

Сначала обновите локальный индекс пакетов:

  1. sudo apt update

Затем установите зависимости, введя эту команду:

  1. sudo apt install ca-certificates curl openssh-server postfix tzdata perl

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

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

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

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

Сначала перейдите в каталог /tmp:

  1. cd /tmp

Затем загрузите скрипт установки:

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

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

  1. less /tmp/script.deb.sh

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

  1. sudo bash /tmp/script.deb.sh

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

  1. sudo apt install gitlab-ce

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

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

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

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

  1. 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, вы должны разрешить этот трафик:

  1. sudo ufw allow http
  2. sudo ufw allow https
  3. sudo ufw allow OpenSSH

Вы можете снова проверить ufw status, чтобы убедиться, что вы предоставили доступ по крайней мере к этим двум службам:

  1. 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 в предпочитаемом вами текстовом редакторе. В этом примере используется nano:

  1. sudo nano /etc/gitlab/gitlab.rb

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

...
## GitLab URL
##! URL on which GitLab will be reachable.
##! For more details on configuring external_url see:
##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
##!
##! Note: During installation/upgrades, the value of the environment variable
##! EXTERNAL_URL will be used to populate/replace this value.
##! On AWS EC2 instances, we also attempt to fetch the public hostname/IP
##! address from AWS. For more details, see:
##! https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html
external_url 'https://your_domain'
...

Затем найдите параметр letsencrypt[contact_emails]. Если вы используете nano, вы можете включить запрос на поиск, нажав CTRL+W. Введите letsencrypt[contact_emails] в приглашение, затем нажмите ENTER. Этот параметр определяет список адресов электронной почты, которые проект Let’s Encrypt может использовать для связи с вами в случае возникновения проблем с вашим доменом. Рекомендуется раскомментировать и заполнить это, чтобы узнать о любых проблемах, которые могут возникнуть:

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

После внесения изменений сохраните и закройте файл. Если вы используете nano, вы можете сделать это, нажав CTRL+X, затем Y, затем ENTER .

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

  1. sudo gitlab-ctl reconfigure

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

Шаг 5 — Выполнение первоначальной настройки через веб-интерфейс

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

Вход в систему в первый раз

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

https://your_domain

При первом посещении вас встретит страница входа:

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

  1. sudo nano /etc/gitlab/initial_root_password
# WARNING: This value is valid only in the following conditions
#          1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the firs$
#          2. Password hasn't been changed manually, either via UI or via command line.
#
#          If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.

Password: YOUR_PASSWORD

# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.

Вернувшись на страницу входа, введите следующее:

  • Имя пользователя: root
  • Пароль: [пароль, указанный в /etc/gitlab/initial_root_password]

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

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

Обновление вашего пароля

Первое, что вы должны сделать после входа в систему, это изменить свой пароль. Чтобы внести это изменение, щелкните значок в правом верхнем углу панели навигации и выберите «Редактировать профиль»:

Затем вы перейдете на страницу настроек пользователя. На левой панели навигации выберите «Пароль», чтобы изменить сгенерированный GitLab пароль на безопасный пароль, затем нажмите кнопку «Сохранить пароль», когда закончите с обновлениями:

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

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

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

Чтобы внести необходимые изменения, щелкните значок пользователя в правом верхнем углу панели навигации и выберите «Редактировать профиль».

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

Нажмите кнопку «Обновить настройки профиля» внизу, когда закончите с обновлениями. Вам будет предложено ввести пароль для подтверждения изменений.

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

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

Затем выберите «Учетная запись» на левой панели навигации:

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

Нажмите кнопку «Обновить имя пользователя», чтобы внести изменения. После этого вам будет предложено подтвердить изменение.

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

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

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

На левой панели навигации выберите Ключи SSH:

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

  1. cat ~/.ssh/id_rsa.pub
Output
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop

Скопируйте этот текст и введите его в текстовое поле Key внутри вашего экземпляра GitLab.

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

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

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

  1. 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]-----+

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

  1. cat ~/.ssh/id_rsa.pub
Output
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop

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

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

Шаг 6 — Ограничение или отключение общедоступной регистрации

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

Для начала перейдите в административную область, щелкнув меню-гамбургер на верхней панели навигации и выбрав «Администратор» в раскрывающемся списке:

Выберите «Настройки» на левой панели навигации:

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

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

Если вы хотите полностью отключить регистрацию, прокрутите до раздела «Ограничения регистрации» и нажмите «Развернуть», чтобы просмотреть параметры.

Затем снимите флажок «Регистрация включена»:

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

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

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

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

В разделе «Ограничения регистрации» установите флажок «Отправлять электронное письмо с подтверждением при регистрации», что позволит пользователям входить в систему только после того, как они подтвердят свой адрес электронной почты.

Затем добавьте свой домен или домены в поле «Белый список доменов для регистрации», по одному домену в строке. Вы можете использовать звездочку \*” для указания подстановочных доменов:

Когда вы закончите, нажмите кнопку Сохранить изменения.

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

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

По умолчанию новые пользователи могут создавать до 10 проектов. Если вы хотите разрешить новым пользователям извне видимость и участие, но хотите ограничить их доступ к созданию новых проектов, вы можете сделать это в разделе «Настройки учетных записей и ограничений».

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

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

После внесения изменений не забудьте нажать кнопку Сохранить изменения.

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

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

По умолчанию в GitLab настроена запланированная задача для обновления сертификатов Let’s Encrypt после полуночи каждый четвертый день с указанием точной минуты на основе вашего external_url. Вы можете изменить эти настройки в файле /etc/gitlab/gitlab.rb.

Например, если вы хотите продлевать подписку каждый седьмой день в 12:30, вы можете настроить ее так. Сначала перейдите к файлу конфигурации:

  1. sudo nano /etc/gitlab/gitlab.rb

Затем найдите следующие строки в файле и удалите # и обновите его следующим образом:

...
################################################################################
# Let's Encrypt integration
################################################################################
# letsencrypt['enable'] = nil
letsencrypt['contact_emails'] = ['sammy@digitalocean'] # This should be an array of email addresses to add as contacts
# letsencrypt['group'] = 'root'
# letsencrypt['key_size'] = 2048
# letsencrypt['owner'] = 'root'
# letsencrypt['wwwroot'] = '/var/opt/gitlab/nginx/www'
# See http://docs.gitlab.com/omnibus/settings/ssl.html#automatic-renewal for more on these settings
letsencrypt['auto_renew'] = true
letsencrypt['auto_renew_hour'] = "12"
letsencrypt['auto_renew_minute'] = "30"
letsencrypt['auto_renew_day_of_month'] = "*/7"
...

Вы также можете отключить автоматическое продление, установив для параметра letsencrypt[auto_renew] значение false:

...
letsencrypt['auto_renew'] = false
...

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

Заключение

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