Сегодня я решил перенести свой GitLab на DigitalOcean.

Думал, то там можно установить Gitlab в один клик (примерно год назад я так и делал). Но прям сейчас эта штука не работает. Да и к тому же там версия EE, а не CE.

Не работает этот вариант прям сейчас скорее всего из-за того, что в данный момент (27 февреля 2019г) дроплет DigitalOcean больше не поддерживается, а тот дроплет, а существующий дроплет поддерживается компанией GitLab. И, видимо, очень плохо поддерживается.

Так же у меня не получилось поставить GitLab CE через Docker

Не знаю что с ним, но установка просто зависала.

Поэтому я устанавливал обычным способом. Возможно, кому-то из вас он пригодится.

Для установки мы будем использовать обычный дроплет в DigitalOcean с Ubuntu 18.04.

Если у вас уже есть аккант, то можете создавать дроплет. Если аккаунта нет, то вы можете воспользоваться моей рефералкой. При регистрации вы получите $100, я получу $25.

AHTUNG!

Когда вы будете создавать дроплет, то важно выбрать не менее 4gb оперативки. Иначе Gitlab не установится. Я проверял :)

1. Обновляемся

После того как мы создали наш дроплет, конектимся к нему по SSH

ssh root@123.456.789.123

И обновляемся

sudo apt-get update -y
sudo apt-get upgrade -y

2. Зависимости

Нам нужно будет устанавливать SSL и прочее, так что сразу ставим зависимости

sudo apt-get install ca-certificates postfix curl openssh-server wget -y

Во время установки нас спросят как отправлять имейлы.

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

Вводим mail.bfg.dev

3. Установка

Теперь скачиваем скрипт установки с официальной репы гитлаба

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

И запускаем его

sudo apt install gitlab-ce -y

Эта команда скачает GitLab, а дальше нам нужно будет его немного настроить.

Нам нужно поменять наш URL в файле

sudo vim /etc/gitlab/gitlab.rb

Изменяем на наш

external_url 'http://git.dfg.dev'

4. SSL

Для того чтобы злоумышленники не смогли совершить MITM атаку, мы устанавливаем SSL сертификат. Вообще возьмите за правило устанавливать SSL на все сервисы, которые у вас есть. Тем более, что сделать это можно бесплатно.

Нам нужно просто установить LetsEnctypt

sudo apt-get install letsencrypt -y

После установки, нам нужно указать Email и URL

sudo letsencrypt certonly --standalone --agree-tos --no-eff-email --agree-tos --email johenews@gmail.com -d git.bfg.dev

После этого LetsEncrypt должен сказать нам, что у нас все хорошо. И сгенерировать сертификаты в /etc/letsencrypt

Если вы видите ошибку, то скорее всего это связано с тем, что вы не привязали домен к своему дроплету.

Зайдите в DigitalOcean во вкладку Networking и проверьте две записи.

У вас должна быть запись A для bfg.dev и запись A для git.bfg.dev

Проверьте, что у вас все так же как на картинке ниже.

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

Далее нам нужно создать ключ

sudo mkdir -p /etc/gitlab/ssl/
sudo openssl dhparam -out /etc/gitlab/ssl/dhparams.pem 2048

И изменить права на эту директорию

chmod 600 /etc/gitlab/ssl/*

Готово

5. HTTP -> HTTPS

Теперь чтобы изменить все на HTTPS нам надо отредактировать файд

sudo vim /etc/gitlab/gitlab.rb

Изменяем строку "external_url"

external_url 'https://git.bfg.dev'

Дальше в этом же файле ищем блок, в котором конфигурируется NGINX. В конце этого блока вставляем

nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/letsencrypt/live/git.bfg.dev/fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/git.bfg.dev/privkey.pem"
nginx['ssl_dhparam'] = "/etc/gitlab/ssl/dhparams.pem"

:wq

Теперь нам нужно заново сконфигурировать GitLab

sudo gitlab-ctl reconfigure

Готово

6. UFW

На этом шаге мы включим встроенный в убунту файрвол ufw. Разрешим только ssh, http, https

sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https

Теперь запустим сервис

sudo ufw enable

И проверим, что он работает

sudo ufw status

7. Задаем пароль

У нас должен успешно заработать наш GitLab.

Проверяем его по адресу https://git.bfg.dev

Нас сразу же попросят придумать пароль.

Задаем пароль, а потом заходим в GitLab с пользователем root и паролем, который мы только что указали.

Open the web browser and type in the gitlab URL 'git.hakase-labs.pw', and you will be redirected to the HTTPS connection.

Create a New GitLab Root Password

Type your new password for root GitLab user, and click the 'Change your password' button.