В данной части цикла статей по настройке личного облачного сервера мы произведем первоначальную настройку GitLab CI (который мы устанавливали в прошлой части) и других вспомогательных инструментов.
Установка Docker
Подключимся к серверу через SSH и установим docker. Он понадобится для запуска сервисов в отдельных контейнерах. Это обеспечит независимость от конфигурации и программного обеспечения конкретного сервера и обеспечит изоляцию сервисов друг от друга.
sudo apt install docker.io
После завершения установки проверьте успешность следующей командой:
docker --version
Настройка Postfix через MailGun
Т.к. в нашем примере мы используем сервисы Google Cloud, просто так отправлять почту через Postfix у нас не получится. Исходящий порт для отправки почты всегда закрыт, чтобы сервисы Google не использовались для рассылки спама. Это политика компании Google и поделать с этим мы ничего не можем. Одним из решений является настройка пересылки почты из Postfix в сервис MailGun, который специально предназначен для этого. MailGun выполняет все рекомендуемые настройки и следит за репутацией своих серверов, так что они обладают высоким уровнем доверия от других почтовых систем, и их письма достаточно редко попадают в спам.
Если вы используете отличное от Google решение и проблем с отправкой почты на вашем сервере нет, то вы можете пропустить этот раздел и сразу перейти к Настройке GitLab CI.
Регистрация в MailGun
Перейдите на сайт https://www.mailgun.com/ и создайте новый аккаунт. Вам необходимо будет сразу указать данные кредитной карты, т.к. иначе отправка писем будет производиться только по заранее заданным адресам. Расходы в вашем случае в любом случае будут нулевыми, т.к. в бесплатный ежемесячный лимит входит 10 000 отправлений в месяц, чего достаточно для подавляющего большинства случаев.
После валидации адреса email и телефона, вы можете сделать следующие настройки.
1. Перейдите в раздел Sending — Domains и нажмите Add New Domain.
2. Создайте новый домен с именем mg.yourdomainname.com (в нашем случае, это mg.abbycadabby.tk). В этом домене mg — это аббревиатура от MailGun, но вы можете использовать любое другое значение.
3. Теперь вам необходимо добавить добавить DNS записи для вашего домена. Это требуется, чтобы другие почтовые сервера могли доверять получаемым письмам и убедиться, что они действительно отправлены с вашего сервера, не какой-то другой сервер пытается выдать себя за ваш. Осуществляется это с помощью двух различных подходов:
Для каждого из подходов нужно добавить по одной DNS записи. Конкретное содержимое для добавления находится в разделе DNS records for sending:
В данном случае нам необходимо добавить две записи с типом TXT и заданными именами доменов и указать в них содержимое из колонки Enter This Value.
4. Для этого перейдём на freenom.com, так как мы регистрировали наш домен именно там. В вашем случае это может быть другой регистратор.
5. Создайте необходимые записи в разделе управления DNS для вашего домена:
6. После создания записей вернитесь в MailGun и нажмите на кнопку Verify DNS Settings. Если вы всё сделали правильно, валидация должна пройти успешно. Обратите внимание, что распространение обновлённых DNS записей обычно требует некоторого времени (от нескольких минут, до нескольких часов). Поэтому, возможно, вам придётся подождать.
Пересылка из Postfix в MailGun
Теперь, после того, как сервер MailGun настроен и готов отправлять наши письма, нам необходимо организовать пересылку всей корреспонденции, получаемой Postfix на сервера MailGun для дальнейшей отправки адресату.
1. Получите права суперюзера и установите автоматическую маску прав для создания файлов:
sudo su - umask 077
2. Откройте в редакторе файл /etc/postfix/main.cf
Если там есть данные строки, закомментируйте их:
# default_transport = error # relay_transport = error
3. Добавьте в конец файла следующую строку:
relayhost = [smtp.mailgun.org]:2525
4. Далее, добавьте следующие строки для того, чтобы включить поддержку SSL/TLS и настроить STMP аутентификацию для запросов. Строки надо добавить также в конец файла:
smtp_tls_security_level = encrypt smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous
5. Сохраните и закройте файл.
6. Сгенерируйте карту паролей для SASL:
Выполните команду:
cat > /etc/postfix/sasl_passwd << EOF
Введите следующий текст в строке приглашения:
[smtp.mailgun.org]:2525 YOUR_SMTP_LOGIN:YOUR_SMTP_PASSWORD
Где YOUR_SMTP_LOGIN и YOUR_SMTP_PASSWORD — это значения, которые можно найти в MailGun аккаунте:
7. Используйте утилиту postmap чтобы сгенерировать файл .db .
postmap /etc/postfix/sasl_passwd
8. Удалите файл с данными вашей учётной записи, поскольку он больше не потребуется:
rm /etc/postfix/sasl_passwd
9. Установите правильные права на .db файл:
chmod 600 /etc/postfix/sasl_passwd.db
10. Перезапустите postfix, чтобы изменения вступили в силу:
/etc/init.d/postfix restart
Настройка GitLab CI
Сперва сделаем небольшие настройки в GitLab, которые понадобятся нам в дальнейшем.
Изменение GitLab external URL
Чтобы GitLab отправлял почту с домена, на котором он реально находится, нужно руками изменить опцию в файле конфигурации GitLab.
Откройте файл /etc/gitlab/gitlab.rb в любом редакторе, найдите там строку
external_url 'http://gitlab.example.com'
Измените значение переменной на ваш домен. В нашем случае это будет http://gitlab.abbycadabby.tk:
external_url 'http://gitlab.abbycadabby.tk'
Сохраните файл и выполните команду sudo gitlab-ctl reconfigure
, чтобы изменения вступили в силу.
Добавление пользователя
Работать от имени пользователя root не рекомендуется не только в Linux, но и в GitLab. Поэтому создадим нового пользователя, с более ограниченными правами.
1. Перейдём в Admin area и затем в Users
2. Нажмите на кнопку New User и заполните данные
3. Установите права администратора:
4. Нажмите Create User. Если вы правильно настроили сервис отправки почты, то должны получить на email ссылку для активации учётной записи и установки пароля.
5. Установите пароль и войдите в систему.
На этом первоначальная настройка GitLab завершена.
В следующей части мы будем подключать сборку и развёртывание проекта на примере сайта на WordPress.