Если вы предпочитаете полностью контролировать то, что и как устанавливается, вы можете выполнить установку в ручном режиме. Для этого выполните шаги ниже.
Установка необходимых компонентов
У вас должна быть установлена последняя версия Docker. В противном случае обратитесь к разделу Installation section на сайте Docker за инструкциями по установке.
В Docker по умолчанию указаны DNS-серверы Google. Если ваш
ONLYOFFICE Groups не будет иметь доступа в Интернет, рекомендуется изменить заданный в Docker по умолчанию адрес DNS-сервера на адрес вашего локального DNS-сервера. Для этого откройте файл
/etc/default/docker
и замените IP-адрес в следующей строке на IP-адрес DNS-сервера в вашей локальной сети:
docker_OPTS="--dns 8.8.8.8"
Для операционных систем на основе RPM, например, CentOS:
- Создайте файл конфигурации
/etc/docker/daemon.json
со следующим содержанием:
{ "dns" : [ "8.8.8.8" ] }
- Перезапустите сервис Docker:
sudo systemctl restart docker.service
Прежде чем начинать установку, надо создать следующие папки:
- Для сервера MySQL
sudo mkdir -p "/app/onlyoffice/mysql/conf.d";
sudo mkdir -p "/app/onlyoffice/mysql/data";
sudo mkdir -p "/app/onlyoffice/mysql/initdb";
- Для данных и лог-файлов ONLYOFFICE Mail
sudo mkdir -p "/app/onlyoffice/MailServer/data/certs";
sudo mkdir -p "/app/onlyoffice/MailServer/logs";
Затем создайте сеть onlyoffice
:
sudo docker network create --driver bridge onlyoffice
Установка MySQL
После этого необходимо создать Docker-контейнер для сервера MySQL. Создайте файл конфигурации:
echo "[mysqld]
sql_mode = 'NO_ENGINE_SUBSTITUTION'
max_connections = 1000
max_allowed_packet = 1048576000
group_concat_max_len = 2048" > /app/onlyoffice/mysql/conf.d/onlyoffice.cnf
Создайте SQL-скрипт, который сгенерирует пользователей и предоставит им необходимые права. Пользователь onlyoffice_user
требуется для ONLYOFFICE Community Server, а mail_admin
требуется для ONLYOFFICE Mail, если вы собираетесь его устанавливать:
echo "ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'my-secret-pw';
CREATE USER IF NOT EXISTS 'onlyoffice_user'@'%' IDENTIFIED WITH mysql_native_password BY 'onlyoffice_pass';
CREATE USER IF NOT EXISTS 'mail_admin'@'%' IDENTIFIED WITH mysql_native_password BY 'Isadmin123';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
GRANT ALL PRIVILEGES ON *.* TO 'onlyoffice_user'@'%';
GRANT ALL PRIVILEGES ON *.* TO 'mail_admin'@'%';
FLUSH PRIVILEGES;" > /app/onlyoffice/mysql/initdb/setup.sql
Пожалуйста, обратите внимание, что приведенный выше скрипт задает разрешения на доступ к серверу SQL с любых доменов (%
). Если вы хотите ограничить доступ, то можете указать хосты, у которых будет доступ к серверу SQL.
Теперь можно создать контейнер MySQL, указав при этом версию MySQL 8.0.29:
sudo docker run --net onlyoffice -i -t -d --restart=always --name onlyoffice-mysql-server \
-v /app/onlyoffice/mysql/conf.d:/etc/mysql/conf.d \
-v /app/onlyoffice/mysql/data:/var/lib/mysql \
-v /app/onlyoffice/mysql/initdb:/docker-entrypoint-initdb.d \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-e MYSQL_DATABASE=onlyoffice \
mysql:8.0.29
В случае использования сторонней базы данных нужно выполнить ее настройку, а именно добавить пользователя:
CREATE USER 'mail_admin'@'localhost' IDENTIFIED BY 'Isadmin123';
GRANT ALL PRIVILEGES ON * . * TO 'mail_admin'@'%' IDENTIFIED BY 'Isadmin123';
FLUSH PRIVILEGES;
Установка ONLYOFFICE Mail
После того как будет завершена подготовка, выполните следующую команду:
sudo docker run --init --net onlyoffice --privileged -i -t -d --restart=always --name onlyoffice-mail-server -p 25:25 -p 143:143 -p 587:587 -p 8081:8081 \
-e MYSQL_SERVER=onlyoffice-mysql-server \
-e MYSQL_SERVER_PORT=3306 \
-e MYSQL_ROOT_USER=root \
-e MYSQL_ROOT_PASSWD=my-secret-pw \
-e MYSQL_SERVER_DB_NAME=onlyoffice_mailserver \
-v /app/onlyoffice/MailServer/data:/var/vmail \
-v /app/onlyoffice/MailServer/data/certs:/etc/pki/tls/mailserver \
-v /app/onlyoffice/MailServer/logs:/var/log \
-h yourdomain.com \
onlyoffice/mailserver
Где yourdomain.com
- это имя хоста почтового сервера.
Домен, который будет использоваться для ведения переписки, должен быть действительным, и он должен быть настроен на эту машину (то есть должен иметь соответствующую A-запись в настройках DNS, связывающую доменное имя с IP-адресом машины, на которой установлен ONLYOFFICE Mail).
В приведенной выше команде под параметром "hostname.com"
следует понимать служебный домен почтового сервера. Обычно его указывают в MX-записи домена, который будет использоваться для ведения переписки. Как правило, "hostname.com"
имеет вид mx1.onlyoffice.com
В этом случае почтовый сервер будет обеспечивать доставку почты на внутренние адреса, размещенные на этом сервере.
Сохранение данных вне контейнеров
Все данные хранятся в специально отведенных для этого каталогах, томах данных, которые находятся по следующему адресу:
/var/log
для лог-файлов ONLYOFFICE Mail
/var/lib/mysql
для данных из базы данных MySQL
/var/vmail
для хранилища почты
/etc/pki/tls/mailserver
для сертификатов
Рекомендация
Настоятельно рекомендуется сохранять данные вне контейнеров Docker на хост-компьютере, так как это позволяет при выходе новой версии легко обновлять ONLYOFFICE Mail без потери данных.
Для получения доступа к данным извне контейнера надо монтировать папку хоста к контейнеру. Это можно сделать, указав значение параметра -v в команде docker run.
sudo docker run --privileged -i -t -d -p 25:25 -p 143:143 -p 587:587 -p 8081:8081 \
-v /app/onlyoffice/MailServer/logs:/var/log \
-v /app/onlyoffice/MailServer/mysql:/var/lib/mysql \
-v /app/onlyoffice/MailServer/data:/var/vmail \
-v /app/onlyoffice/MailServer/data/certs:/etc/pki/tls/mailserver -h yourdomain.com onlyoffice/mailserver
Пожалуйста, обратите внимание на то, что, если вы пытаетесь монтировать еще не созданные папки, эти папки будут созданы, но доступ к ним будет ограничен. Вам понадобится изменить права доступа к ним вручную.
Сохранение данных на хост-компьютере позволяет при выходе новой версии легко обновлять ONLYOFFICE Mail без потери данных.
Настройка Docker-образа
Чтобы обеспечить доставку почты как на внутренние адреса, так и на адреса внешних серверов, вам необходимо получить собственное доменное имя и настроить DNS-сервер.
Требуются следующие записи DNS:
- Запись типа A (связывает доменное имя с IP-адресом хоста, на котором развернут docker-образ).
- Запись указателя (PTR) или запись обратного поиска в DNS (устанавливает соответствие между сетевым интерфейсом (IP-адресом) и именем хоста).
sudo docker run --privileged -i -t -d -p 25:25 -p 143:143 -p 587:587 \
-v /app/onlyoffice/MailServer/data/certs:/etc/pki/tls/mailserver -h yourdomain.com onlyoffice/mailserver
Где yourdomain.com
- это имя хоста почтового сервера.
Установка SSL-сертификатов
Самоподписанные сертификаты для вашего домена будут созданы по умолчанию при запуске docker-контейнера. Если вы хотите использовать сертификаты, заверенные центром сертификации, вам потребуется переименовать их и скопировать в каталог /app/onlyoffice/MailServer/data/certs
до запуска образа. Требуются следующие файлы:
- /app/onlyoffice/MailServer/data/certs/mail.onlyoffice.key
- /app/onlyoffice/MailServer/data/certs/mail.onlyoffice.crt
- /app/onlyoffice/MailServer/data/certs/mail.onlyoffice.ca-bundle
Вы можете скопировать SSL-сертификаты в каталог /app/onlyoffice/MailServer/data/certs
после запуска образа. Но в таком случае придется перезапустить docker-контейнер.
Доступные параметры настройки
Флаг `--env-file`
в параметрах команды docker run позволяет задать все необходимые переменные среды в одном файле. Так можно избежать написания потенциально длинной команды docker run.
Ниже приводится полный список параметров, которые можно настроить, используя переменные среды.
- STORAGE_BASE_DIR: Путь к хранилищу почты. По умолчанию задано значение
/var/vmail
.
- FIRST_DOMAIN: Первый виртуальный домен, на котором будет размещен адрес администратора почты. Этот домен не должен совпадать с основным доменом почтового сервера. По умолчанию задано значение
mailserver.onlyoffice.com
.
- DOMAIN_ADMIN_PASSWD: Пароль администратора почты. Адрес администратора почты, заданный по умолчанию, -
postmaster@mailserver.onlyoffice.com
.