Установка ONLYOFFICE Docs Enterprise Edition для Docker на KylinOS
Введение
Enterprise Edition позволяет установить ONLYOFFICE Docs на локальном сервере и интегрировать онлайн-редакторы с платформой для совместной работы ONLYOFFICE или другими популярными системами.
ONLYOFFICE Docs — это офисный пакет для работы онлайн, который включает в себя просмотрщики и редакторы текстовых документов, электронных таблиц и презентаций, полностью совместимые с форматами Office Open XML: .docx, .xlsx, .pptx и позволяющие совместно редактировать документы в режиме реального времени.
Функциональность
- Редактор документов
- Редактор электронных таблиц
- Редактор презентаций
- Мобильные веб-просмотрщики
- Мобильные веб-редакторы
- Совместное редактирование
- Поддержка иероглифов
- Поддержка всех популярных форматов: DOC, DOCX, TXT, ODT, RTF, ODP, EPUB, ODS, XLS, XLSX, CSV, PPTX, HTML
Смотрите подробный список возможностей, доступных для ONLYOFFICE Docs Enterprise Edition.
Используя его в составе ONLYOFFICE Workspace, вы сможете:
- организовать совместный доступ к файлам;
- управлять правами доступа к документам;
- встраивать документы в сайт;
- просматривать и редактировать файлы, сохраненные в сервисах Drive, Box, Dropbox, OneDrive, OwnCloud, подключенных к ONLYOFFICE.
Начиная с версии 7.2, Docker-образы ONLYOFFICE Docs переработаны для запуска на ОС Kylin Linux Advanced Server версии V10. В данной инструкции объясняется, как установить версию ONLYOFFICE Docs Enterprise Edition для Docker на KylinOS.
Системные требования
- Процессор: двухъядерный с тактовой частотой 2 ГГц или лучше
- Оперативная память: не менее 4 ГБ
- Жесткий диск: не менее 40 ГБ свободного места
- SWAP: не менее 4 ГБ, но это зависит от ОС хоста. Чем больше, тем лучше
- ОС: дистрибутив Linux для amd64 с версией ядра 3.10 или выше
- Docker: любая версия, поддерживаемая KylinOS
Установка ONLYOFFICE Docs
В Docker по умолчанию указаны DNS-серверы Google. Если ваш ONLYOFFICE Docs не будет иметь доступа в Интернет, рекомендуется изменить заданный в 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
Отключение SELinux
Необходимо отключить SELinux в файле конфигурации /etc/selinux/config.
Откройте файл /etc/selinux/config в любом текстовом редакторе, замените строку SELINUX=enforcing или SELINUX=permissive на SELINUX=disabled и сохраните изменения.
Перезагрузите сервер, чтобы изменения вступили в силу. Убедитесь, что SELinux отключен:
[root@test ~]# sestatus
SELinux status: disabled
Установка ONLYOFFICE Docs
Выполните следующую команду, чтобы установить ONLYOFFICE Docs:
sudo docker run -i -t -d -p 80:80 --security-opt seccomp=unconfined --restart=always -e JWT_SECRET=my_jwt_secret onlyoffice/documentserver-ee
Начиная с версии 7.2, добавлена генерация случайного секретного ключа JWT. Если секретный ключ JWT не указан с помощью переменной окружения, это ведет к его повторной генерации при каждой перезагрузке виртуальных машин или физического сервера, поэтому могут возникать проблемы в интеграциях. Чтобы этого избежать, задайте собственное значение в -e JWT_SECRET=my_jwt_secret.
Если вы не хотите использовать JWT в инсталляции, используйте -e JWT_ENABLED=false.
Ключ --security-opt seccomp=unconfined необходим, чтобы отключить профили безопасности для контейнера. Подробнее об этом можно узнать здесь.
Вы также можете использовать наш собственный профиль безопасности: kylin-seccomp7.json.
По умолчанию ONLYOFFICE Docs слушает входящие соединения на порту 80. Начиная с версии 4.3 вы можете сменить порт для ONLYOFFICE Docs в случае, если вы планируете использовать его вместо того, который идет по умолчанию. Это можно легко сделать, сменив порт во время установки:
sudo docker run -i -t -d -p <PORT_NUMBER>:80 --security-opt seccomp=unconfined --restart=always -e JWT_SECRET=my_jwt_secret onlyoffice/documentserver-ee
Где <PORT_NUMBER> — это номер порта, который вы хотите использовать для ONLYOFFICE Docs.
В результате будет установлена версия ONLYOFFICE Docs со всеми необходимыми зависимостями (список команд, которые выполняет скрипт, можно найти здесь).
Добавление исключения межсетевого экрана
Также необходимо добавить исключение для службы firewalld.service:
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload
Когда настройка будет завершена, введите в адресной строке браузера http://localhost, чтобы открыть страницу приветствия ONLYOFFICE Docs. На ней приводятся дальнейшие инструкции о том, как подключить примеры документов или интегрировать онлайн-редакторы в веб-приложение с помощью API.
Сохранение данных вне контейнеров
Все данные хранятся в специально отведенных для этого каталогах, томах данных, которые находятся по следующему адресу:
/var/log/onlyofficeдля лог-файлов ONLYOFFICE Docs/var/www/onlyoffice/Dataдля сертификатов/var/lib/onlyofficeдля кэша файлов/var/lib/postgresqlдля базы данных
Настоятельно рекомендуется сохранять данные вне контейнеров Docker на хост-компьютере, так как это позволяет при выходе новой версии легко обновлять ONLYOFFICE Docs без потери данных.
Для получения доступа к данным извне контейнера надо монтировать тома. Это можно сделать, указав параметр -v в команде docker run.
sudo docker run -i -t -d -p 80:80 --security-opt seccomp=unconfined --restart=always \
-v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \
-v /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice \
-v /app/onlyoffice/DocumentServer/db:/var/lib/postgresql -e JWT_SECRET=my_jwt_secret onlyoffice/documentserver-ee
Обратите внимание, что, если вы пытаетесь монтировать еще не созданные папки, эти папки будут созданы, но доступ к ним будет ограничен. Вам понадобится изменить права доступа к ним вручную.
Обычно нет необходимости хранить данные контейнера, поскольку работа контейнера не зависит от его состояния. Сохранение данных будет полезно:
- для обеспечения быстрого доступа к данным контейнера, таким как лог-файлы;
- для снятия ограничений по объему данных внутри контейнера;
- при использовании служб, запущенных вне контейнера, таких как PostgreSQL, Redis, RabbitMQ.
Запуск ONLYOFFICE Docs с использованием HTTPS
sudo docker run -i -t -d -p 443:443 --security-opt seccomp=unconfined --restart=always \
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data -e JWT_SECRET=my_jwt_secret onlyoffice/documentserver-ee
Для предотвращения несанкционированного доступа к информации вы можете обезопасить доступ к приложению ONLYOFFICE, используя протокол SSL. SSL-сертификат, заверенный центром сертификации, предусматривает проверку отношений доверия через центр сертификации, но самоподписанные сертификаты могут обеспечить такой же уровень проверки отношений доверия, если каждый клиент предпримет ряд дополнительных мер для проверки подлинности вашего сайта. Ниже приведены инструкции о том, как этого добиться.
Для обеспечения безопасного доступа к приложению с помощью SSL в принципе нужны две вещи:
- Закрытый ключ (.key)
- SSL-сертификат (.crt)
Итак, вам надо создать и установить следующие файлы:
/app/onlyoffice/DocumentServer/data/certs/onlyoffice.key
/app/onlyoffice/DocumentServer/data/certs/onlyoffice.crt
При использовании сертификатов, заверенных центром сертификации (например, Let's Encrypt), эти файлы вам предоставляет центр сертификации. При использовании самоподписанных сертификатов вам надо сгенерировать эти файлы самостоятельно.
Переключение ONLYOFFICE Docs на протокол HTTPS с помощью certbot
Проще всего переключить ONLYOFFICE Docs на протокол HTTPS, автоматически получив SSL-сертификаты от Let's Encrypt с помощью certbot.
Запустите Docker-контейнер ONLYOFFICE Docs, указав порты 80 и 443 и задав собственные значения для переменных:
sudo docker run -i -t -d -p 80:80 -p 443:443 --security-opt seccomp=unconfined --restart=always \
-e LETS_ENCRYPT_DOMAIN=yourdomain.com -e LETS_ENCRYPT_MAIL=email@example.com -e JWT_SECRET=my_jwt_secret onlyoffice/documentserver-ee
Где:
- LETS_ENCRYPT_DOMAIN — доменное имя, используемое для сертификата.
- LETS_ENCRYPT_MAIL — адрес электронной почты, используемый для регистрации и восстановления.
Сертификат, подписанный центром сертификации letsencrypt.org, будет автоматически сгенерирован и установлен на ваш сервер. Теперь ваш ONLYOFFICE Docs должен быть доступен по адресу https://yourdomain.com.
Генерация самоподписанных сертификатов
Генерация самоподписанных SSL-сертификатов включает в себя три простых шага:
ШАГ 1: Создайте закрытый ключ сервера
openssl genrsa -out onlyoffice.key 2048
ШАГ 2: Создайте запрос подписи сертификата (CSR)
openssl req -new -key onlyoffice.key -out onlyoffice.csr
ШАГ 3: Подпишите сертификат с помощью закрытого ключа и CSR
openssl x509 -req -days 365 -in onlyoffice.csr -signkey onlyoffice.key -out onlyoffice.crt
Вы только что сгенерировали SSL-сертификат со сроком действия 365 дней.
Усиление безопасности сервера
В этом разделе приводятся инструкции по усилению безопасности вашего сервера.
Для этого необходимо сгенерировать параметры Диффи-Хеллмана (DHE), обеспечивающие более высокую стойкость.
openssl dhparam -out dhparam.pem 2048
Установка SSL-сертификатов
Из четырех ранее сгенерированных файлов на сервер onlyoffice необходимо установить файлы onlyoffice.key, onlyoffice.crt и dhparam.pem. Файл CSR не требуется, но убедитесь, что вы создали его резервную копию (на случай, если он вам снова понадобится).
По умолчанию приложение onlyoffice настроено для поиска SSL-сертификатов в каталоге /var/www/onlyoffice/Data/certs. Этот путь можно изменить, используя параметры настройки SSL_KEY_PATH, SSL_CERTIFICATE_PATH и SSL_DHPARAM_PATH.
Путь /var/www/onlyoffice/Data/ — это путь к хранилищу данных. Вам надо создать папку с именем certs в каталоге /app/onlyoffice/DocumentServer/data/ и скопировать файлы в нее, а также в качестве меры безопасности необходимо изменить права доступа к файлу onlyoffice.key, чтобы он был доступен на чтение только владельцу.
mkdir -p /app/onlyoffice/DocumentServer/data/certs
cp onlyoffice.key /app/onlyoffice/DocumentServer/data/certs/
cp onlyoffice.crt /app/onlyoffice/DocumentServer/data/certs/
cp dhparam.pem /app/onlyoffice/DocumentServer/data/certs/
chmod 400 /app/onlyoffice/DocumentServer/data/certs/onlyoffice.key
И перезапустите Docker-контейнер:
sudo docker restart {{DOCUMENT_SERVER_ID}}
Остался всего один шаг, чтобы обеспечить безопасный доступ к приложению.
Доступные параметры настройки
Флаг --env-file в параметрах команды docker run позволяет задать все необходимые переменные среды в одном файле. Так можно избежать написания потенциально длинной команды docker run.
Ниже приводится полный список параметров, которые можно настроить, используя переменные среды.
- ONLYOFFICE_HTTPS_HSTS_ENABLED: Дополнительный параметр настройки для отключения HSTS. Применяется только в тех случаях, когда используется SSL. По умолчанию задано значение
true. - ONLYOFFICE_HTTPS_HSTS_MAXAGE: Дополнительный параметр настройки для задания параметра max-age HSTS в конфигурации виртуального хоста NGINX для onlyoffice. Применяется только в тех случаях, когда используется SSL. По умолчанию задано значение
31536000. - SSL_CERTIFICATE_PATH: Путь к используемому SSL-сертификату. По умолчанию задано значение
/var/www/onlyoffice/Data/certs/tls.crt. - SSL_KEY_PATH: Путь к закрытому ключу SSL-сертификата. По умолчанию задано значение
/var/www/onlyoffice/Data/certs/tls.key. - SSL_DHPARAM_PATH: Путь к параметру Диффи-Хеллмана. По умолчанию задано значение
/var/www/onlyoffice/Data/certs/dhparam.pem. - SSL_VERIFY_CLIENT: Включение проверки сертификатов клиента с помощью файла
CA_CERTIFICATES_PATH file. По умолчанию задано значениеfalse. - DB_TYPE: Тип базы данных. Поддерживаются значения
postgres,mariadbилиmysql. По умолчанию задано значениеpostgres. - DB_HOST: IP-адрес или имя хоста, на котором запущен сервер базы данных.
- DB_PORT: Номер порта сервера базы данных.
- DB_NAME: Имя базы данных, которая будет создана при запуске образа.
- DB_USER: Имя нового пользователя с правами суперпользователя для учетной записи базы данных.
- DB_PWD: Пароль, заданный для учетной записи базы данных.
- AMQP_URI: AMQP URI для подключения к серверу брокера сообщений.
- AMQP_TYPE: Тип брокера сообщений. Поддерживаются значения
rabbitmqилиactivemq. По умолчанию задано значениеrabbitmq. - REDIS_SERVER_HOST: IP-адрес или имя хоста, на котором запущен сервер Redis.
- REDIS_SERVER_PORT: Номер порта сервера Redis.
- NGINX_WORKER_PROCESSES: Определяет число рабочих процессов NGINX.
- NGINX_WORKER_CONNECTIONS: Задает максимальное число соединений, которые одновременно может открыть рабочий процесс NGINX.
- SECURE_LINK_SECRET: Определяет секрет для директивы secure_link_md5 конфигурации nginx. По умолчанию задано значение
random string. - JWT_ENABLED: Управляет включением валидации посредством JSON веб-токена ONLYOFFICE Docs. По умолчанию задано значение
true. - JWT_SECRET: Определяет секретный ключ для валидации JSON веб-токена при запросе к ONLYOFFICE Docs. По умолчанию задано случайное значение.
- JWT_HEADER: Определяет HTTP-заголовок, который будет использоваться для отправки JSON веб-токена. По умолчанию задано значение
Authorization. - JWT_IN_BODY: Управляет включением валидации посредством токена в теле запроса к ONLYOFFICE Docs. По умолчанию задано значение
false. - WOPI_ENABLED: Управляет включением обработчиков wopi. По умолчанию задано значение
false. - USE_UNAUTHORIZED_STORAGE: Задайте значение
trueпри использовании самоподписанных сертификатов для вашего сервера хранилища, например, Nextcloud. По умолчанию задано значениеfalse. - GENERATE_FONTS: Когда задано значение
true, заново генерирует список шрифтов, эскизы шрифтов и т.д. при каждом запуске. По умолчанию задано значениеtrue. - METRICS_ENABLED: Управляет включением StatsD для ONLYOFFICE Docs. По умолчанию задано значение
false. - METRICS_HOST: Определяет хост StatsD. По умолчанию задано значение
localhost. - METRICS_PORT: Определяет порт StatsD. По умолчанию задано значение
8125. - METRICS_PREFIX: Определяет префикс метрик StatsD для серверных служб. По умолчанию задано значение
ds.. - LETS_ENCRYPT_DOMAIN: Определяет домен для сертификата Let's Encrypt.
- LETS_ENCRYPT_MAIL: Определяет почтовый адрес администратора домена для сертификата Let's Encrypt.
Регистрация версии Enterprise Edition
Если вы приобрели Enterprise Edition и получили файл license.lic, вы можете поместить его в свою установку, чтобы получить полную версию программы.
При использовании Docker-контейнера файл license.lic можно поместить в любую папку (например, /app/onlyoffice/DocumentServer/data/license.lic), но эту папку необходимо смонтировать при запуске контейнера:
sudo docker run -i -t -d -p 80:80 --security-opt seccomp=unconfined --restart=always \
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \
-e JWT_SECRET=my_jwt_secret onlyoffice/documentserver-ee
После этого ваша версия Enterprise Edition будет зарегистрирована и станет полнофункциональной.