Обзор развертывания 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 -
Метод развертывания:
-
Docker устанавливается, если он отсутствует.
-
Репозиторий клонируется в
/opt/Docker-CommunityServer. -
Генерируется файл
docker-compose.ymlи размещается в корне репозитория с правами доступа0600и владельцемroot. -
Скрипт инициализации базы данных размещается в каталоге конфигурации MySQL с правами доступа
0644и владельцемroot. -
Контейнеры скачиваются и запускаются с помощью 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 -
Запуск служб:
-
Остановка служб:
-
Получение последних образов:
-
Проверка инициализации базы данных: Система проверяет создание баз данных путем выполнения следующей команды внутри контейнера MySQL: