Перейти к содержанию

Обзор развертывания Onlyoffice Workspace на сервере

Предварительные требования и основные условия

Для успешного развертывания Onlyoffice Workspace сервер-хост должен соответствовать следующим требованиям к операционной системе и конфигурации безопасности:

  • Операционная система: Для предоставленных скриптов установки требуются дистрибутивы на базе Debian (например, Ubuntu).

  • Привилегии: Для установки Docker, управления системными службами и настройки сетевого стека необходим доступ с правами root.

  • Конфигурация ядра: Параметр ядра vsyscall=emulate должен быть установлен в файле /etc/default/grub в секции GRUB_CMDLINE_LINUX_DEFAULT. Процесс развертывания проверяет наличие [vsyscall] в /proc/self/maps.

  • Требования к пакетам: Процесс установки требует наличие git, curl, ca-certificates и компонентов Docker (docker-ce, docker-ce-cli, containerd.io, docker-buildx-plugin, docker-compose-plugin).

FQDN финальной панели

Приложение доступно по определенному Полному доменному имени (Fully Qualified Domain Name, FQDN) в домене hostkey.in. Формат следует префиксу only-docwork, за которым следует идентификатор сервера.

  • Доменная зона: hostkey.in

  • Префикс: only-docwork

  • Формат FQDN: only-docwork<Server ID>.hostkey.in

  • Порты доступа: Через прокси-сервер Nginx используются порт 80 (HTTP) и порт 443 (HTTPS).

Структура файлов и каталогов

Процесс развертывания организует файлы конфигурации, данные и бинарные файлы в специфичные директории на хост-системе:

  • Источник приложения: /opt/Docker-CommunityServer

    • Содержит клонированный репозиторий и основной файл docker-compose.yml.
  • Конфигурация Nginx:

    • Конфигурация прокси: /data/nginx/user_conf.d/only-docwork<Server ID>.hostkey.in.conf

    • Описание compose для прокси: /root/nginx/compose.yml

  • SSL-сертификаты: Управляются Let's Encrypt и хранятся в /etc/letsencrypt/live/<FQDN>.

  • Скрипты инициализации базы данных: /opt/Docker-CommunityServer/config/mysql/docker-entrypoint-initdb.d/onlyoffice-initdb.sql

  • Каталог данных Nginx: /root/nginx

Процесс установки приложения

Приложение развертывается с использованием Docker и Docker Compose. Процесс включает клонирование официального репозитория Docker-CommunityServer из GitHub и настройку окружения.

  • Репозиторий: https://github.com/ONLYOFFICE/Docker-CommunityServer.git

  • Целевая директория: /opt/Docker-CommunityServer

  • Метод развертывания:

    1. Docker устанавливается, если он отсутствует.

    2. Репозиторий клонируется в /opt/Docker-CommunityServer.

    3. Генерируется файл docker-compose.yml и размещается в корне репозитория с правами доступа 0600 и владельцем root.

    4. Скрипт инициализации базы данных размещается в каталоге конфигурации MySQL с правами доступа 0644 и владельцем root.

    5. Контейнеры скачиваются и запускаются с помощью Docker Compose.

Права доступа и безопасность

Процесс развертывания внедряет определенные проверки безопасности и требования к паролям, чтобы гарантировать, что система не работает с учетными данными по умолчанию.

  • Принудительное изменение паролей по умолчанию: Процесс установки проверяет, что следующие секретные данные изменены относительно значений по умолчанию:

    • workspace_mysql_root_password (По умолчанию: my-secret-pw)

    • workspace_mysql_onlyoffice_user_password (По умолчанию: onlyoffice_pass)

    • workspace_mysql_mail_admin_password (По умолчанию: Isadmin123)

    • workspace_core_machine_key (По умолчанию: core_secret)

    • workspace_jwt_secret (По умолчанию: jwt_secret)

  • Привилегии пользователей: Пользователь root создается в базе данных с полными правами на все базы данных. Также создаются специальные пользователи onlyoffice_user и mail_admin с полными правами.

  • Безопасность контейнеров: Развертывание обеспечивает использование последних версий образов Docker путем запроса к API Docker Hub и валидации тегов с последними доступными версиями для MySQL, Elasticsearch, Document Server, Mail Server, Community Server и Control Panel.

Базы данных

Приложение использует MySQL для хранения данных. База данных размещена внутри контейнера Docker с именем onlyoffice-mysql-server.

  • Имена баз данных:

    • onlyoffice

    • onlyoffice_mailserver

  • Набор символов: utf8

  • Сортировка (Collation): utf8_general_ci

  • Метод подключения: Используется внутренняя сеть Docker. Прямой внешний доступ не предусмотрен; трафик маршрутизируется через контейнеры приложения.

  • Инициализация: При первом запуске выполняется пользовательский SQL-скрипт (onlyoffice-initdb.sql) для создания баз данных и пользователей.

Docker-контейнеры и их развертывание

Система оркестрирует множество Docker-контейнеров с помощью Docker Compose. Развертываются следующие службы:

  • onlyoffice-mysql-server: Основная база данных.

  • onlyoffice-elasticsearch: Служба поиска (образ: onlyoffice/elasticsearch).

  • onlyoffice-documentserver-ee: Служба обработки документов (образ: onlyoffice/documentserver-ee).

  • onlyoffice-mailserver: Почтовая служба (образ: onlyoffice/mailserver).

  • onlyoffice-community-server: Основное приложение рабочего пространства (образ: onlyoffice/communityserver).

  • onlyoffice-controlpanel: Административная панель (образ: onlyoffice/controlpanel).

Все контейнеры управляются через файл docker-compose.yml, расположенный по адресу /opt/Docker-CommunityServer/docker-compose.yml.

Прокси-серверы

Развертывается прокси-сервер Nginx для обработки входящего HTTP/HTTPS-трафика, завершения SSL и маршрутизации к внутренним контейнерам Onlyoffice.

  • Образ прокси: jonasal/nginx-certbot:latest

  • Конфигурация:

    • HTTP (Порт 80): Перенаправляет весь трафик на HTTPS.

    • HTTPS (Порт 443): Завершает SSL-соединение и перенаправляет запросы на http://onlyoffice-community-server:80.

    • Поставщик SSL: Let's Encrypt через Certbot.

    • Путь к сертификату: /etc/letsencrypt/live/<FQDN>/

  • Сеть: Прокси подключен к внешней сети onlyoffice.

  • Таймауты:

    • proxy_read_timeout: 3600s

    • proxy_send_timeout: 3600s

    • proxy_connect_timeout: 60s

  • Заголовки: Прокси устанавливает заголовки Host, X-Real-IP, X-Forwarded-For, X-Forwarded-Proto, Upgrade и Connection для обеспечения корректной работы веб-сокета и идентификации клиентов.

Настройки прав доступа

Скрипт развертывания устанавливает специфичные права доступа к файлам для обеспечения безопасности и корректной работы служб:

  • Файл Docker Compose: /opt/Docker-CommunityServer/docker-compose.yml

    • Владелец: root:root

    • Режим: 0600

  • Скрипт инициализации БД: /opt/Docker-CommunityServer/config/mysql/docker-entrypoint-initdb.d/onlyoffice-initdb.sql

    • Владелец: root:root

    • Режим: 0644

  • Каталог Nginx: /root/nginx

    • Владелец: root:root

    • Режим: 0755

  • Compose для Nginx: /root/nginx/compose.yml

    • Владелец: root:root

    • Режим: 0644

  • Конфигурация Nginx: /data/nginx/user_conf.d/only-docwork<Server ID>.hostkey.in.conf

    • Владелец: root:root

    • Режим: 0644

Доступные порты для подключения

Сервер открывает следующие порты в сеть:

Порт Протокол Служба Описание
80 TCP Nginx Точка входа HTTP, перенаправление на HTTPS
443 TCP Nginx Точка входа HTTPS, завершение SSL

Запуск, остановка и обновление

Жизненный цикл контейнеров приложения управляется командами Docker Compose, выполняемыми в директории проекта.

  • Директория проекта: /opt/Docker-CommunityServer

  • Запуск служб:

    docker compose up -d
    

  • Остановка служб:

    docker compose down
    

  • Получение последних образов:

    docker compose pull
    

  • Проверка инициализации базы данных: Система проверяет создание баз данных путем выполнения следующей команды внутри контейнера MySQL:

    docker exec onlyoffice-mysql-server /bin/bash -c 'mysql -uroot -p"PASSWORD" -BNe "show databases"'
    

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×