Обзор развертывания ONLYOFFICE Docs на сервере¶
Предварительные требования¶
Для корректной работы приложения необходимо наличие следующих компонентов и настроек на сервере:
-
Операционная система Ubuntu.
-
Установленный и работающий демон Docker.
-
Права доступа пользователя
rootдля управления контейнерами и файлами конфигурации. -
Открытый порт
8080на локальном интерфейсе127.0.0.1для доступа к веб-интерфейсу приложения. -
Наличие доменного имени и возможности получения SSL-сертификатов через Let's Encrypt.
Структура файлов и каталогов¶
Конфигурационные файлы и данные приложения размещаются в следующих директориях:
-
/root/nginx— каталог для запуска прокси-сервера и управления контейнерами через Docker Compose. -
/root/nginx/compose.yml— файл конфигурации оркестрации контейнеров. -
/data/nginx/nginx-certbot.env— файл переменных окружения для настройки прокси-сервера. -
/data/nginx/user_conf.d— директория для пользовательских конфигурационных файлов Nginx. -
/data/nginx/user_conf.d/{{ prefix }}{{ server_id }}.hostkey.in.conf— файл конфигурации виртуального хоста с настройками проксирования. -
/etc/letsencrypt— точка монтирования для хранения SSL-сертификатов (используется томnginx_secrets).
Процесс установки приложения¶
Развертывание приложения осуществляется через запуск контейнеров Docker. Процесс включает два основных этапа: запуск самого приложения и настройку прокси-сервера.
-
Запуск контейнера ONLYOFFICE Docs:
-
Используется образ
onlyoffice/documentserver:9.3. -
Контейнер получает имя
onlyoffice-docs. -
Политика перезапуска установлена в
always. -
Порт
80внутри контейнера маппится на127.0.0.1:8080на хосте. -
Включена аутентификация через JWT (
JWT_ENABLED: "true"). -
Секретный ключ JWT установлен в значение
change_me. -
Настройка прокси-сервера Nginx с поддержкой Certbot:
-
Создается каталог
/root/nginx. -
Генерируется файл
compose.ymlв директории/root/nginx. -
Запускается контейнер
nginxна основе образаjonasal/nginx-certbot:latest. -
Контейнер работает в режиме сети
host. -
Политика перезапуска установлена в
unless-stopped. -
Электронная почта для уведомлений от Certbot:
hkadm@hostkey.com.
Контейнеры Docker и их запуск¶
В системе развернуты два контейнера, управляемые через Docker Compose и напрямую через Docker API.
Контейнер ONLYOFFICE Docs запускается с параметрами:
docker run -d --name onlyoffice-docs --restart always -p 127.0.0.1:8080:80 -e JWT_ENABLED=true -e JWT_SECRET=change_me onlyoffice/documentserver:9.3
Контейнер прокси-сервера управляется через файл compose.yml в директории /root/nginx. Для запуска используется команда:
/root/nginx. Файл compose.yml содержит следующие настройки:
-
Том
nginx_secretsподключается к/etc/letsencryptвнутри контейнера. -
Директория
/data/nginx/user_conf.dмонтируется в/etc/nginx/user_conf.dвнутри контейнера. -
Переменные окружения загружаются из файла
/data/nginx/nginx-certbot.env.
Прокси серверы¶
Для обработки входящего трафика и получения SSL-сертификатов используется контейнер Nginx с Certbot.
-
Образ:
jonasal/nginx-certbot:latest. -
Режим сети:
host. -
Конфигурация виртуального хоста размещается в файле
/data/nginx/user_conf.d/{{ prefix }}{{ server_id }}.hostkey.in.conf. -
В конфигурационном файле блокируется существующая строка
Эта строка добавляется после блокаproxy_passи добавляется новая:location / {. -
Сертификаты Let's Encrypt хранятся в томе
nginx_secrets, который монтируется в/etc/letsencrypt.
Права доступа и безопасность¶
-
Каталог
/root/nginxсоздается с правами0755и владельцемroot:root. -
Файл
compose.ymlсоздается с правами0644и владельцемroot:root. -
Доступ к приложению ONLYOFFICE Docs ограничен локальным интерфейсом
127.0.0.1на порту8080. -
Внешний доступ осуществляется только через прокси-сервер Nginx, который обрабатывает SSL-шифрование.
-
Аутентификация внутри приложения настроена через JWT-токены.
Запуск, остановка и обновление¶
Управление контейнером прокси-сервера осуществляется через Docker Compose в директории /root/nginx:
-
Запуск:
-
Остановка:
-
Перезапуск:
Управление контейнером ONLYOFFICE Docs осуществляется стандартными командами Docker:
-
Запуск (если не запущен):
-
Остановка:
-
Перезапуск:
-
Обновление образа: