Продукты 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 на стенде на 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"  Длина ключей и паролей описана в конфигах, можно генерировать их прямо теми командами, что указаны в качестве примеров, следите только за совпадением значений в конфигах разных компонентов. Большая часть настройки выполняется по инструкции по установке. На что обратить внимание:  Считаем, что файлы установки в каталоге 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 - закрытый ключ сертификата  Считаем, что файлы установки в каталоге 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  Считаем, что файлы установки в каталоге 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.  Из каталога install_co запустить команду ansible-playbook playbooks/main.yml --diff  Из каталога inst_psn24 запустить команду ./deploy_psn.sh hosts.yml  Из каталога 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 для всех пользователей, у которых есть доступ к административной панели, например, администратор по умолчанию admin@domain.com, необходимо выполнить сначала стандартную авторизацию и принять соглашение EULA и только потом заходить в админ панель. Иначе не получится принять лицензионное соглашение. Для администрирования можно воспользоваться и командной строкой. Запросить и разобрать токен аутентификации: 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», которые позволяют сотрудникам обмениваться почтой друг с другом и с внешним миром, а также совместно работать с документами. Надеюсь, эта статья поможет вам освоить новые отечественные продукты, и ваша инфраструктура будет готова к любым вызовам и свершениям. А если вы хотите протестировать решения от МойОфис или узнать больше про опыт установки и применения на индивидуальной консультации, просто оставьте заявку.