Установка GitLab на облачный сервер

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

GitLab легко установить на свою машину. В этом мануале мы разберём полную установку и настройку GitLab Community Edition на сервере Ubuntu.

Требования

  • Сервер (мы используем Ubuntu 20.04) с пользователем sudo и базовым брандмауэром.
  • Домен, указывающий на ваш сервер. В этой статье как пример используется домен your_domain, не забудьте заменить его на ваше доменное имя.

Минимальные системные требования GitLab:

  • 4 ядра ЦП
  • 4 ГБ ОЗУ 

Не рекомендуется заменять ОЗУ на своп-пространство.

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

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

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

sudo apt update

Затем с помощью этой команды установите зависимости:

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

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

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

Затем найдите letsencrypt[‘contact_emails’]. Этот параметр определяет список адресов электронной почты, по которым проект Let’s Encrypt может связаться с вами в случае проблем с вашим доменом. Рекомендуем указать свой адрес:

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

После внесения изменений сохраните и закройте файл.

Теперь обновите параметры GitLab:

sudo gitlab-ctl reconfigure

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

5: Настройка через веб-интерфейс

Первый вход в систему

Откройте домен вашего сервера 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]

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

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

Изменение пароля

Изменить пароль нужно сразу после входа в систему. Для этого нажмите на значок в правом верхнем углу интерфейса и перейдите в раздел Edit Profile:

Вы попадете на страницу User Settings. Чтобы изменить автоматически сгенерированный пароль, нужно на левой панели навигации выбрать Password. После того, как придумаете надёжный пароль, нажмите кнопку Save password:

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

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

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

Чтобы редактировать профиль, нажмите на значок пользователя и выберите Edit Profile.

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

Внизу найдите и нажмите Update Profile. Будет предложено ввести пароль для подтверждения изменений.

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

Изменение имени аккаунта

Слева выберите Account:

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

Нажмите Update username. После подтвердите изменение.

В следующий раз при входе не забудьте использовать новое имя пользователя.

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

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

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

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

cat ~/.ssh/id_rsa.pub

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

Скопируйте этот текст и вставьте в поле Key в GitLab.

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

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

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

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 sammy@mydesktop

Вставьте этот блок текста в поле Key в GitLab. Придумайте описательное название и нажмите Add key.

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

6: Ограничение или отключение открытой регистрации

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

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

Выберите Settings на левой панели навигации:

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

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

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

Затем снимите галочку с Sign-up enabled и нажмите Save:

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

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

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

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

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

Сохраните изменения.

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

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

Измените ограничение Default projects limit на 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'] = ['8host@8host'] # 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 регулярно добавляет функции и обновляет свою платформу, поэтому обязательно заходите на страницу проекта, чтобы быть в курсе всех улучшений и важных

Tags: ,

Добавить комментарий