О чём и зачем эта статья

Продукты Microsoft Exchange Server и SharePoint Server широко используются во многих средних и крупных организациях в России. Замена этой связки часто требует от компаний складывания лицензионно-технологического "пазла" из нескольких решений от разных производителей. При этом уже достаточно давно на российском рынке есть совместимый "из коробки" сервис корпоративной почты и совместной работы с документами – «МойОфис Почта 2» и «Частное Облако 2». Статья адресована системным администраторам, которые собираются установить МойОфис в своей компании или просто хотят оценить возможности новых отечественных продуктов. Кстати, блог компании МойОфис можно полистать и здесь же на Хабре.

Рассмотрим установку и настройку связки «МойОфис Почта 2» и «Частное Облако 2», которая обеспечивает обмен почтой и совместную работу с документами. Я буду описывать версию 2.4, актуальную на момент написания статьи, установленную в закрытом контуре сети для тестирования и неопубликованную в интернет, но с доступом к нему. При установке есть некоторые нюансы, на которых можно споткнуться и затем долго искать причину сбоя установки. Я постараюсь убрать эти грабли с вашего пути.

Картинок не будет, да они в формате этой статьи и не нужны. Да пребудет с вами сила!

Подложка

Установить компоненты МойОфис можно на разные свежие операционные системы, но я пошёл по пути упрощения и унификации. Для всех компонентов системы в качестве операционной системы использована CentOS 7.9 - да, старенькая, но проверенная. К тому же по документации МойОфис она единственная, на которую можно установить и Частное Облако 2, и Почта 2 от МойОфис. ОС установлена в минимальной конфигурации.

Инфраструктура

Минимальный состав для установки компонентов включает четыре сервера: сервер установки, он же инфраструктурный; сервер почты - PSN; сервер совместной работы CO и сервер хранилища - PGS. МойОфис в боевой инфраструктуре предполагает разнесение компонентов ролей на разные физические или виртуальные серверы для повышения отказоустойчивости и производительности. У нас же все роли компонентов будут установлены на единственный для каждой роли сервер. На моём стенде серверы установлены со следующими параметрами:

IP

Name

Description

10.10.111.16

 infra01

 МойОфис 2.4 Сервер установки

10.10.111.17

 psn01

 МойОфис 2.4 Почта

10.10.111.18

 pgs01

 МойОфис 2.4 Хранилище

10.10.111.19

 co01

 МойОфис 2.4 Сервер совместной работы

10.10.111.10

dns

DNS сервер

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

Подготовка

Установим необходимое и опциональное ПО на сервер установки:

yum install -y epel-release

yum install -y mc tmux pwgen wget python3 python3-pip rsync yum-utils bind-utils nmap sshpass vim jq

yum update

python3 -m pip install --upgrade pip==20.3.4

python3 -m pip install jmespath netaddr jinja2 

Установка производится с помощью Ansible, а потому нам нужен и он. МойОфис чувствителен к версии Ansible, так что в соответствии с документацией по установке используем Ansible 2.11.6.

python3 -m pip install ansible-core==2.11.6

python3 -m pip install ansible==4.7.0  

Дистрибутивы

Установочные пакеты МойОфис версии 2.4 распространяются в двух форматах:

  • архив каталога установки для компонентов PSN и PGS;

  • в виде больших бинарных файлов, выполняющих  предварительную подготовку к установке и разворачивание каталога установки для CO.

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

Архивы с файлами конфигурации и установки PSN и PGS достаточно разархивировать в папки inst_psn24 и inst_pgs24 соответственно, имена папок некритичны. CO нужно установить из бинарников, которые подготовят систему и распакуют каталог установщика. В составе предварительного установщика CO два основных файла: co_infra_2.4.run - скрипт установки хранилища образов Docker; и co_ansible_bin_2.4.run - скрипт установки подсистемы управления конфигурациями CO. Сначала нужно выполнить co_infra_2.4.run, затем co_ansible_bin_2.4.run. Скрипты создадут в домашнем каталоге папку install_co, в которой содержатся установочные и конфигурационные файлы CO. Дополнительно скрипт co_infra_2.4.run требуется скопировать на сервер co01 и выполнить там. На этом этап подготовки дистрибутивов завершён. 

Сертификаты

Важнейший момент - выпуск SSL сертификатов. Имя или имена, на которое выписан сертификат, определяют структуру именования компонентов МойОфис, либо наоборот - структура именования компонентов диктует имя SSL сертификата. Отталкиваться стоит от того, что у вас в приоритете. У меня не было ни инфраструктуры, ни сертификата, так что я выписал у LetsEncrypt wildcard-сертификат на все домены третьего уровня для своего домена *.mo2.fun и это определило структуру имён компонентов МойОфис. LetsEncrypt предоставил мне сам сертификат, закрытый ключ для него (так не стоит делать в боевой среде) и сертификаты корневого и выдающих центров сертификации. Изменять форматы файлов сертификатов не требуется. Переименуйте эти ключи и сертификаты и уберите их в надёжное место, когда они нам понадобятся, мы их достанем оттуда.

Соответствие имён сертификатов, полученных от LetsEncrypt и сертификатов МойОфис

LetsEncrypt

 МойОфис

chain.pem

 ca.pem

cert.pem

 server.crt

privkey.pem

 server.nopass.key

DNS

Второй важный момент подготовки - создание DNS записей для компонентов МойОфис. Поскольку работа извне с комплексом не предусматривалась, DNS записи были созданы на внутреннем DNS сервере, на который и смотрят все серверы МойОфис. Мой DNS на стенде на Windows, если у вас также - держите в помощь:

Add-DnsServerResourceRecord -A -Name "instsrv01" -IPv4Address "10.10.111.16" -ZoneName "mo2.fun"

Add-DnsServerResourceRecord -A -Name "co01" -IPv4Address "10.10.111.19" -ZoneName "mo2.fun"

Add-DnsServerResourceRecord -A -Name "pgs01" -IPv4Address "10.10.111.18" -ZoneName "mo2.fun"

Add-DnsServerResourceRecord -A -Name "psn01" -IPv4Address "10.10.111.17" -ZoneName "mo2.fun"

Add-DnsServerResourceRecord -CName -Name "admin" -HostNameAlias "pgs01.mo2.fun" -ZoneName "mo2.fun"

Add-DnsServerResourceRecord -CName -Name "pgs" -HostNameAlias "pgs01.mo2.fun" -ZoneName "mo2.fun"

Add-DnsServerResourceRecord -CName -Name "autoconfig" -HostNameAlias "psn01.mo2.fun" -ZoneName "mo2.fun"

Add-DnsServerResourceRecord -CName -Name "cab" -HostNameAlias "psn01.mo2.fun" -ZoneName "mo2.fun"

Add-DnsServerResourceRecord -CName -Name "imap" -HostNameAlias "psn01.mo2.fun" -ZoneName "mo2.fun"

Add-DnsServerResourceRecord -CName -Name "mail" -HostNameAlias "psn01.mo2.fun" -ZoneName "mo2.fun"

Add-DnsServerResourceRecord -CName -Name "psnapi" -HostNameAlias "psn01.mo2.fun" -ZoneName "mo2.fun"

Add-DnsServerResourceRecord -CName -Name "push" -HostNameAlias "psn01.mo2.fun" -ZoneName "mo2.fun"

Add-DnsServerResourceRecord -CName -Name "smtp" -HostNameAlias "psn01.mo2.fun" -ZoneName "mo2.fun"

Add-DnsServerResourceRecord -CName -Name "pbm" -HostNameAlias "psn01.mo2.fun" -ZoneName "mo2.fun"

Add-DnsServerResourceRecord -CName -Name "auth" -HostNameAlias "co01.mo2.fun" -ZoneName "mo2.fun"

Add-DnsServerResourceRecord -CName -Name "cdn" -HostNameAlias "co01.mo2.fun" -ZoneName "mo2.fun"

Add-DnsServerResourceRecord -CName -Name "coapi" -HostNameAlias "co01.mo2.fun" -ZoneName "mo2.fun"

Add-DnsServerResourceRecord -CName -Name "docs" -HostNameAlias "co01.mo2.fun" -ZoneName "mo2.fun"

Add-DnsServerResourceRecord -CName -Name "files" -HostNameAlias "co01.mo2.fun" -ZoneName "mo2.fun"

Add-DnsServerResourceRecord -CName -Name "links" -HostNameAlias "co01.mo2.fun" -ZoneName "mo2.fun"

Add-DnsServerResourceRecord -Srv -Name "_https._tcp" -DomainName "auth.mo2.fun" -ZoneName "mo2.fun" -Priority 0 -Weight 0 -Port 443

Add-DnsServerResourceRecord -CName -Name "fsapi" -HostNameAlias "pgs01.mo2.fun" -ZoneName "mo2.fun"

Add-DnsServerResourceRecord -CName -Name "appapi" -HostNameAlias "pgs01.mo2.fun" -ZoneName "mo2.fun"

Add-DnsServerResourceRecord -CName -Name "cardapi" -HostNameAlias "pgs01.mo2.fun" -ZoneName "mo2.fun" 

Необязательный пункт

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

Конфигурирование

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

Обратите внимание на формирование FQDN компонентов. В файлах конфигурации компонентов есть переменные, отвечающие за имя домена: domain_name в конфиге CO, external_domain в конфиге PSN и DEFAULT_DOMAIN в конфиге PGS. Эти переменные и будут определять имя домена, для совместной установки компонентов имеет смысл назначить им одинаковые значения. Остальные имена компонентов МойОфис по умолчанию формируются как домены третьего уровня от основного имени домена, что и видно выше в примере создания DNS записей.

domain_name: "mo2.fun"

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

Большая часть настройки выполняется по инструкции по установке. На что обратить внимание: 

Настройка установки CO

Считаем, что файлы установки в каталоге install_co

Заполнить файл конфигурации group_vars/co_setup/main.yml

Значение FS_APP_LOGIN должно совпадать с APP_ADMIN_LOGIN на стороне PGS.

Значение FS_APP_PASSWORD должно совпадать с APP_ADMIN_PASSWORD на стороне PGS.

Ключи, соли, расширения соли и IV должны совпадать с конфигом на стороне PGS. 

Значение fs_token_salt_ext должно совпадать с FS_TOKEN_SALT_EXT на стороне PGS.

В файле group_vars/co_setup/extra_vars.yml указать внешний DNS с настроенными записями. Внутренний unbound в устанавливаемой версии 2.4 не резолвил имена компонентов МойОфис из внешнего DNS.

# List of DNS servers that the queries will be forwarded to unbound_forward_addresses:

  - "10.10.111.10" 

Сертификаты разместить в каталоге install_co/certificates с именами

  • ca.pem - сертификаты выдающих ЦС

  • server.crt  - сертификат сервера

  • server.nopass.key - закрытый ключ сертификата 

Настройка установки PSN

Считаем, что файлы установки в каталоге inst_psn24

Заполнить файл конфигурации hosts.yml в каталоге inventory

Сертификаты разместить в каталоге inst_psn24/certificates/mo2.fun с именами

  • ca.pem - сертификаты выдающих ЦС

  • server.crt  - сертификат сервера

  • server.nopass.key - закрытый ключ сертификата

  • dkim.key - ключ DKIM

Сгенерировать DKIM сертификат можно, например на https://tools.socketlabs.com/dkim/generator 

Настройка установки PGS

Считаем, что файлы установки в каталоге inst_pgs24

Заполнить файл конфигурации hosts.yml

На что обратить внимание:

Параметр APP_ADMIN_LOGIN по умолчанию отсутствует, а он нужен. Добавить:

APP_ADMIN_LOGIN: "app-co"

APP_ADMIN_LOGIN должен совпадать с FS_APP_LOGIN в конфигурации на стороне CO

APP_ADMIN_PASSWORD должен совпадать с FS_APP_PASSWORD в конфигурации на стороне CO

Ключи, соли, расширения соли и IV должны совпадать с конфигами CO и PGS.

Сертификаты разместить в каталоге inst_pgs24/certificates/mo2.fun с именами

  • ca.pem - сертификаты выдающих ЦС

  • server.crt  - сертификат сервера

  • server.nopass.key - закрытый ключ сертификата

 На этом конфигурация компонентов закончена и можно приступать к установке. 

Установка

Порядок установки: CO, затем PSN и, в последнюю очередь, PGS. 

Установка CO

Из каталога install_co запустить команду ansible-playbook playbooks/main.yml --diff 

Установка PSN

Из каталога inst_psn24 запустить команду ./deploy_psn.sh hosts.yml 

Установка PGS

Из каталога inst_pgs24 запустить команду ./deploy.sh hosts.yml 

Проверка работоспособности установленного комплекса

Для входа на страничку лендинга необходимо браузером зайти по адресу auth.mo2.fun, указать имя пользователя в формате user@mo2.fun  и пароль, принять лицензионное соглашение и вуаля, можно пользоваться почтой, хранилищем и редактором документов МойОфис.

Для администрирования системы необходимо браузером зайти по адресу admin.mo2.fun , указать имя пользователя admin@mo2.fun  и пароль и вы - главный перец.

Пароль администратора

Его вы указали в конфигурации PGS

default_tenant:

      # required parameters

      ADMIN_PASSWORD: "Passw0rd"

Особенность релиза 2.4

В текущей версии 2.4 для всех пользователей, у которых есть доступ к административной панели, например, администратор по умолчанию admin@domain.com, необходимо выполнить сначала стандартную авторизацию и принять соглашение EULA и только потом заходить в админ панель. Иначе не получится принять лицензионное соглашение.

CMD

Для администрирования можно воспользоваться и командной строкой.

Запросить и разобрать токен аутентификации:

RESPOND=$(curl -X POST "https://admin.mo2.fun/adminapi/auth" -d "username=admin@mo2.fun" -d "password=Passw0rd")

TENANT=$(echo $RESPOND | jq -r '.tenant')

TOKEN=$(echo $RESPOND | jq -r '.token')

ID=$(echo $RESPOND | jq -r '.id')

echo $TOKEN; echo $TENANT; echo $ID

где TOKEN - токен доступа

TENANT - имя тенанта

ID - ID тенанта 

Вывести список общих папок тенанта:

curl --header "Authorization: $TOKEN" -X GET "https://admin.mo2.fun/adminapi/tenants/$TENANT/corporate" | jq 

Но это уже совсем другая история...

Итоги

Мы рассмотрели базовые основы установки комплекса «МойОфис Почта 2» и «Частное Облако 2», которые позволяют сотрудникам обмениваться почтой друг с другом и с внешним миром, а также совместно работать с документами. Надеюсь, эта статья поможет вам освоить новые отечественные продукты, и ваша инфраструктура будет готова к любым вызовам и свершениям. А если вы хотите протестировать решения от МойОфис или узнать больше про опыт установки и применения на индивидуальной консультации, просто оставьте заявку.

Комментарии (9)


  1. Cheburator2033
    19.10.2023 10:55

    А сравнительную таблицу существующих решений слабо показать? В деньгах? Функциональности? ????


    1. AlexeyTrofimov Автор
      19.10.2023 10:55

      У нас есть эти сравнения но они не являются темой этой статьи. Обращайтесь в СисСофт :)


  1. OBIEESupport
    19.10.2023 10:55

    Приветствую коллегу по полю преподавания отечественного софта! А чего скриншотов нет того, что почта ходит, а рядом можно написать как права раскидываются. Милый и веселый баг "не примешь лицензионного соглашения - не зайдешь" - абсолютно в точку. Но системные требования тоже нужны на каждый из продуктов.


    1. AlexeyTrofimov Автор
      19.10.2023 10:55

      Почта ходит, документы сохраняются и редактируются, заявленный функционал работает почти весь. Что там скриншотить? Это нужно отдельную статью написать по работе в МойОфис и его администрированию, а здесь я писал именно про установку.

      Системные требования не стал указывать, так как они меняются от версии к версии, лучше актуальные у вендора посмотреть. Поставить вышеописанную конфигурацию можно на ВМ с парой vCPU, 4 GB оперативки и гигов сорок диска. Нужно отдавать себе отчёт, что это именно тестовая установка. В боевой системе нужно дублировать и разносить компоненты на разные ВМ, более скрупулёзно отнестись к выделению и назначению дисковых разделов и в целом тщательно продумать архитектуру.


  1. Vold2D
    19.10.2023 10:55

    А как-то упростить процедуру установки нельзя? Хотели протестировать различные альтернативные офисные системы, в том числе "МойОфис". Пролистали инструкции по установке... и желание тестировать как-то сразу пропало. Неужели нельзя, например, для тестов и малонагруженных установок предложить готовый образ виртуалки "всё в одном"?


    1. AlexeyTrofimov Автор
      19.10.2023 10:55

      Насколько я знаю, компоненты МойОфис Частное облако и Почты на одной ВМ не уживаются в силу специфики их архитектуры. А образы трёх ВМ у вендора есть, их можно развернуть в своей системе виртуализации. На текущий момент они доступны тут.


  1. Tamerlan666
    19.10.2023 10:55

    Зачем ставить вместе голый ansible-core и ansible, куда ansible-core уже включен?


  1. Tamerlan666
    19.10.2023 10:55

    Ну, и версия ansible 2.11.6 - серьезно? Скоро 2.16 выходит, если что.


    1. AlexeyTrofimov Автор
      19.10.2023 10:55

      Раз вендор настоятельно просит не старше 2.12, то и ставим не старше 2.12. Ну и МойОфис обновляется, возможно уже и более свежий ansible использует сейчас.

      Хотя заглянул в свежую документацию, а там пока всё то же: "На сервер-оператор должен быть инсталлирован Ansible версии 4.4.* (соответствует пакету ansible-core 2.11)"