Как установить и настроить GitLab в Ubuntu
Введение
GitLab — это приложение с открытым исходным кодом, которое в основном используется для размещения репозиториев Git, с дополнительными функциями, связанными с разработкой, такими как отслеживание проблем. Он предназначен для размещения с использованием вашей собственной инфраструктуры и обеспечивает гибкость при развертывании в качестве внутреннего хранилища репозитория для вашей команды разработчиков, общедоступного способа взаимодействия с пользователями или средства для участников для размещения своих собственных проектов.
Проект GitLab позволяет вам создать экземпляр GitLab на вашем собственном оборудовании с минимальным механизмом установки. Это руководство научит вас, как установить и настроить GitLab Community Edition на сервере Ubuntu.
Предварительные условия
Если вы используете Ubuntu версии 16.04 или ниже, мы рекомендуем вам обновиться до более последней версии, поскольку Ubuntu больше не поддерживает эти версии. Этот сборник руководств поможет вам обновить версию Ubuntu.
Чтобы следовать этому руководству, вам понадобится:
- Сервер под управлением Ubuntu вместе с пользователем без полномочий root с привилегиями
sudo
и активным брандмауэром. Для получения инструкций по их настройке выберите свой дистрибутив из этого списка и следуйте нашему Руководству по первоначальной настройке сервера.
Опубликованные требования к оборудованию GitLab рекомендуют использовать сервер как минимум с:
-
4 ядра для вашего процессора
4 ГБ ОЗУ для памяти
Хотя вы можете обойтись заменой оперативной памяти некоторым пространством подкачки, это не рекомендуется. Следующие примеры в этом руководстве будут использовать эти минимальные ресурсы.
- Доменное имя, указывающее на ваш сервер. Для получения дополнительной информации прочтите нашу документацию о том, как начать работу с DNS в DigitalOcean. В этом руководстве в качестве примера будет использоваться
your_domain
, но обязательно замените его именем своего домена.
Шаг 1 — Установка зависимостей
Перед установкой GitLab важно установить программное обеспечение, которое он использует во время установки и на постоянной основе. Необходимое программное обеспечение можно установить из репозиториев пакетов Ubuntu по умолчанию.
Сначала обновите индекс локального пакета:
sudo apt update
Затем установите зависимости, введя эту команду:
sudo apt install ca-certificates curl openssh-server postfix tzdata perl
Вероятно, часть этого программного обеспечения у вас уже установлена. Для установки postfix
выберите Интернет-сайт при появлении запроса. На следующем экране введите доменное имя вашего сервера, чтобы настроить способ отправки почты системой.
Теперь, когда у вас установлены зависимости, вы готовы установить GitLab.
Шаг 2 — Установка GitLab
Имея зависимости, вы можете установить GitLab. В этом процессе используется сценарий установки для настройки вашей системы с помощью репозиториев GitLab.
Сначала перейдите в каталог /tmp
:
cd /tmp
Затем скачайте скрипт установки:
curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh
Не стесняйтесь изучить загруженный скрипт, чтобы убедиться, что вам понятны действия, которые он будет выполнять. Вы также можете найти размещенную версию скрипта в инструкциях по установке GitLab:
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
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 status
, чтобы убедиться, что вы предоставили доступ как минимум к этим двум службам:
sudo ufw status
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
:
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'
...
Затем найдите параметр letencrypt['contact_emails']
. Если вы используете nano
, вы можете включить строку поиска, нажав CTRL+W
. Напишите letencrypt['contact_emails']
в командной строке, затем нажмите ENTER
. Этот параметр определяет список адресов электронной почты, которые проект Let’s Encrypt может использовать для связи с вами, если возникнут проблемы с вашим доменом. Рекомендуется раскомментировать и заполнить это, чтобы быть в курсе любых проблем, которые могут возникнуть:
letsencrypt['contact_emails'] = ['sammy@example.com']
Закончив внесение изменений, сохраните и закройте файл. Если вы используете nano
, вы можете сделать это, нажав CTRL+X
, затем Y
, затем ENTER
. .
Запустите следующую команду, чтобы перенастроить GitLab:
sudo gitlab-ctl reconfigure
Это инициализирует GitLab, используя информацию, которую он сможет найти о вашем сервере. Это полностью автоматизированный процесс, поэтому вам не придется отвечать ни на какие подсказки. В процессе также будет настроен сертификат Let’s Encrypt для вашего домена.
Шаг 5 — Выполнение первоначальной настройки через веб-интерфейс
При запущенном GitLab вы можете выполнить первоначальную настройку приложения через веб-интерфейс.
Вход в систему в первый раз
Посетите доменное имя вашего сервера GitLab в веб-браузере:
https://your_domain
При первом посещении вас встретит страница входа:
GitLab генерирует для вас первоначальный безопасный пароль. Он хранится в папке, к которой вы можете получить доступ как администратор sudo
:
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, вы можете просмотреть открытый ключ, набрав:
cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop
Скопируйте этот текст и введите его в текстовое поле Key внутри вашего экземпляра GitLab.
Если вместо этого вы получите другое сообщение, значит, на вашем компьютере еще не настроена пара ключей SSH:
cat: /home/sammy/.ssh/id_rsa.pub: No such file or directory
В этом случае вы можете создать пару ключей SSH, введя следующую команду:
[environment local]
ssh-keygen
Примите значения по умолчанию и при необходимости укажите пароль для локальной защиты ключа:
[environment local]
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
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, вы можете настроить это так. Сначала перейдите к файлу конфигурации:
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 регулярно добавляет функции и обновляет свою платформу, поэтому обязательно посещайте домашнюю страницу проекта, чтобы быть в курсе любых улучшений или важных уведомлений.