- Обзор
- Функциональность
- Рекомендуемые системные требования
- Запуск Docker-образа
- Настройка Docker-образа
- Установка UNIVAULTOFFICE Document Server в составе Community и Mail Server
- Настройка IPv6 для UNIVAULTOFFICE Document Server
- Проблемы
- Информация о проекте
- Обратная связь и поддержка
UNIVAULTOFFICE Docs (Document Server) — это офисный пакет с открытым исходным кодом, который включает все необходимые инструменты для работы с документами, таблицами, презентациями, PDF и PDF-формами. Пакет поддерживает файлы популярных форматов (DOCX, ODT, XLSX, ODS, CSV, PPTX, ODP и т. д.) и обеспечивает совместное редактирование в реальном времени.
Начиная с версии 6.0 Document Server распространяется как UNIVAULTOFFICE Docs. Доступны три редакции. С этим образом вы устанавливаете бесплатную Community-версию.
UNIVAULTOFFICE Docs можно использовать как часть UNIVAULTOFFICE DocSpace и UNIVAULTOFFICE Workspace либо совместно с сторонними sync&share решениями (например, Odoo, Moodle, Nextcloud, ownCloud, Seafile и т. д.) для совместного редактирования в их интерфейсах.
Важно перед использованием обновите docker-engine до последней версии (20.10.21 на момент написания). В качестве базового образа используется ubuntu:24.04, и старые версии Docker несовместимы с ним.
Используйте мощные редакторы UNIVAULTOFFICE Docs:
- UNIVAULTOFFICE Document Editor
- UNIVAULTOFFICE Spreadsheet Editor
- UNIVAULTOFFICE Presentation Editor
- UNIVAULTOFFICE Form Creator
- UNIVAULTOFFICE PDF Editor
- UNIVAULTOFFICE Diagram Viewer
Редакторы позволяют создавать, редактировать, сохранять и экспортировать текстовые документы, таблицы, презентации и PDF, создавать и заполнять PDF-формы, открывать диаграммы и использовать дополнительные функции:
- Совместное редактирование (review & track changes, комментарии, чат)
- Ассистенты на базе ИИ
- Проверка орфографии
- Масштабируемый интерфейс (включая тёмный режим)
- Инструменты и сервисы безопасности
UNIVAULTOFFICE Docs поддерживают плагины, которые добавляют функции, не связанные напрямую с форматом OOXML. Подробнее см. наш API или репозиторий плагинов univaultoffice.github.io. Хотите посмотреть готовые плагины? Откройте Marketplace.
- RAM: 4 GB или больше
- CPU: двухъядерный 2 GHz или выше
- Swap: не менее 2 GB
- HDD: не менее 2 GB свободного места
- Distribution: 64-bit Red Hat, CentOS или другой совместимый дистрибутив с ядром версии 3.8 или новее, 64-bit Debian, Ubuntu или другой совместимый дистрибутив с ядром версии 3.8 или новее
- Docker: версия 1.9.0 или новее
sudo docker run -i -t -d -p 80:80 univaultoffice/documentserver
Используйте эту команду, если хотите установить UNIVAULTOFFICE Document Server отдельно. Чтобы установить UNIVAULTOFFICE Document Server вместе с Community и Mail Server, смотрите инструкции ниже.
Все данные хранятся в специально выделенных директориях — data volumes — в следующих путях:
- /var/log/univaultoffice для логов UNIVAULTOFFICE Document Server
- /var/www/univaultoffice/Data для сертификатов
- /var/lib/univaultoffice для кэша файлов
- /var/lib/postgresql для базы данных
Чтобы получить доступ к данным вне контейнера, нужно примонтировать volumes. Это делается через опцию -v в команде docker run.
sudo docker run -i -t -d -p 80:80 \
-v /app/univaultoffice/DocumentServer/logs:/var/log/univaultoffice \
-v /app/univaultoffice/DocumentServer/data:/var/www/univaultoffice/Data \
-v /app/univaultoffice/DocumentServer/lib:/var/lib/univaultoffice \
-v /app/univaultoffice/DocumentServer/rabbitmq:/var/lib/rabbitmq \
-v /app/univaultoffice/DocumentServer/redis:/var/lib/redis \
-v /app/univaultoffice/DocumentServer/db:/var/lib/postgresql univaultoffice/documentserver
Обычно хранить данные контейнера не требуется, так как работа контейнера не зависит от его состояния. Сохранение данных будет полезно:
- Для удобного доступа к данным контейнера, например к логам
- Чтобы снять ограничения на размер данных внутри контейнера
- При использовании сервисов, запущенных вне контейнера, таких как PostgreSQL, Redis, RabbitMQ
Чтобы изменить порт, используйте команду -p. Например, чтобы сделать портал доступным на порту 8080:
sudo docker run -i -t -d -p 8080:80 univaultoffice/documentserver
sudo docker run -i -t -d -p 443:443 \
-v /app/univaultoffice/DocumentServer/data:/var/www/univaultoffice/Data univaultoffice/documentserver
Доступ к приложению UNIVAULTOFFICE можно защитить с помощью SSL, чтобы предотвратить несанкционированный доступ. SSL‑сертификат, выданный центром сертификации (CA), подтверждает доверие через CA, а самоподписанный сертификат тоже может обеспечить доверие при условии, что каждый клиент выполнит дополнительные шаги для подтверждения подлинности сайта. Ниже приведены инструкции.
Для защиты через SSL нужны две вещи:
- Private key (.key)
- SSL certificate (.crt)
Создайте и установите следующие файлы:
/app/univaultoffice/DocumentServer/data/certs/tls.key
/app/univaultoffice/DocumentServer/data/certs/tls.crt
При использовании сертификатов от CA (например, Let's Encrypt) эти файлы предоставляются CA. При самоподписанных сертификатах их нужно сгенерировать самостоятельно.
sudo docker run -i -t -d -p 80:80 -p 443:443 \
-e LETS_ENCRYPT_DOMAIN=your_domain -e LETS_ENCRYPT_MAIL=your_mail univaultoffice/documentserver
Чтобы автоматически получить и продлевать сертификаты Let's Encrypt, достаточно задать переменные LETS_ENCRYPT_DOMAIN и LETS_ENCRYPT_MAIL.
Генерация самоподписанных SSL‑сертификатов включает простой процесс из трёх шагов.
ШАГ 1: Создайте приватный ключ сервера
openssl genrsa -out tls.key 2048ШАГ 2: Создайте запрос на сертификат (CSR)
openssl req -new -key tls.key -out tls.csrШАГ 3: Подпишите сертификат, используя приватный ключ и CSR
openssl x509 -req -days 365 -in tls.csr -signkey tls.key -out tls.crtВы получили SSL‑сертификат, действующий 365 дней.
В этом разделе приведены инструкции по усилению безопасности сервера. Для этого нужно сгенерировать более сильные параметры DHE.
openssl dhparam -out dhparam.pem 2048Из четырёх файлов выше нужно установить tls.key, tls.crt и dhparam.pem на сервер UNIVAULTOFFICE. Файл CSR не нужен, но обязательно сохраните его (если понадобится снова).
Путь по умолчанию, где приложение UNIVAULTOFFICE ищет сертификаты: /var/www/univaultoffice/Data/certs. Его можно изменить через параметры SSL_KEY_PATH, SSL_CERTIFICATE_PATH и SSL_DHPARAM_PATH.
/var/www/univaultoffice/Data/ — это путь к хранилищу данных, поэтому нужно создать папку certs внутри /app/univaultoffice/DocumentServer/data/ и скопировать туда файлы. Также в целях безопасности нужно ограничить доступ к tls.key, чтобы файл читался только владельцем.
mkdir -p /app/univaultoffice/DocumentServer/data/certs
cp tls.key /app/univaultoffice/DocumentServer/data/certs/
cp tls.crt /app/univaultoffice/DocumentServer/data/certs/
cp dhparam.pem /app/univaultoffice/DocumentServer/data/certs/
chmod 400 /app/univaultoffice/DocumentServer/data/certs/tls.keyТеперь до полной защиты приложения остаётся один шаг.
Для параметра --env-file в docker run можно указать все переменные окружения сразу. Это избавит от необходимости писать длинную команду.
Ниже перечислены параметры, которые можно задавать через переменные окружения.
- UNIVAULTOFFICE_HTTPS_HSTS_ENABLED: опция для отключения HSTS. Применяется только при использовании SSL. По умолчанию
true. - UNIVAULTOFFICE_HTTPS_HSTS_MAXAGE: опция для настройки HSTS max-age в конфигурации nginx vHost. Применяется только при использовании SSL. По умолчанию
31536000. - SSL_CERTIFICATE_PATH: путь к SSL‑сертификату. По умолчанию
/var/www/univaultoffice/Data/certs/tls.crt. - SSL_KEY_PATH: путь к приватному ключу SSL‑сертификата. По умолчанию
/var/www/univaultoffice/Data/certs/tls.key. - SSL_DHPARAM_PATH: путь к параметрам Diffie‑Hellman. По умолчанию
/var/www/univaultoffice/Data/certs/dhparam.pem. - SSL_VERIFY_CLIENT: включить проверку сертификатов клиентов с помощью файла
CA_CERTIFICATES_PATH. По умолчаниюfalse - NODE_EXTRA_CA_CERTS: NODE_EXTRA_CA_CERTS для расширения списка CA сертификатами. По умолчанию
/var/www/univaultoffice/Data/certs/extra-ca-certs.pem. - DB_TYPE: тип базы данных. Поддерживаются
postgres,mariadb,mysql,mssqlилиoracle. По умолчаниюpostgres. - DB_HOST: IP‑адрес или имя хоста, где работает сервер БД.
- DB_PORT: порт сервера БД.
- DB_NAME: имя базы данных. Должна существовать на момент запуска контейнера.
- DB_USER: имя пользователя с правами суперпользователя для БД.
- DB_PWD: пароль пользователя БД.
- DB_SCHEMA: имя схемы БД (опционально).
- PostgreSQL — схема для search_path, по умолчанию
public. - MSSQL — схема для DEFAULT_SCHEMA, по умолчанию
dbo.
- PostgreSQL — схема для search_path, по умолчанию
- AMQP_URI: AMQP URI для подключения к брокеру сообщений.
- AMQP_TYPE: тип брокера сообщений. Поддерживаются
rabbitmqилиactivemq. По умолчаниюrabbitmq. - REDIS_SERVER_HOST: IP‑адрес или имя хоста, где работает Redis.
- REDIS_SERVER_PORT: порт Redis.
- REDIS_SERVER_USER: имя пользователя Redis. По умолчанию не задано.
- REDIS_SERVER_PASS: пароль Redis. По умолчанию не задан.
- REDIS_SERVER_DB: индекс БД Redis. По умолчанию
0. - NGINX_WORKER_PROCESSES: количество воркеров nginx.
- NGINX_WORKER_CONNECTIONS: максимальное число одновременных соединений на воркер.
- NGINX_ACCESS_LOG: включает или отключает логирование доступа. По умолчанию
false. - SECURE_LINK_SECRET: секрет для директивы nginx secure_link_md5. По умолчанию
random string. - JWT_ENABLED: включает проверку JSON Web Token в UNIVAULTOFFICE Document Server. По умолчанию
true. - JWT_SECRET: секретный ключ для проверки JSON Web Token в запросах к UNIVAULTOFFICE Document Server. По умолчанию — случайное значение.
- JWT_HEADER: http‑заголовок для передачи JSON Web Token. По умолчанию
Authorization. - JWT_IN_BODY: включает проверку токена в теле запроса к UNIVAULTOFFICE Document Server. По умолчанию
false. - WOPI_ENABLED: включает WOPI handlers. По умолчанию
false. - ALLOW_META_IP_ADDRESS: разрешить или запретить подключение meta IP. По умолчанию
false. - ALLOW_PRIVATE_IP_ADDRESS: разрешить или запретить подключение private IP. По умолчанию
false. - USE_UNAUTHORIZED_STORAGE:
true, если используется self‑signed сертификат для сервера хранения (например, Nextcloud). По умолчаниюfalse - GENERATE_FONTS: если
true, при каждом старте пересоздаёт список шрифтов и миниатюры. По умолчаниюtrue - METRICS_ENABLED: включает StatsD для UNIVAULTOFFICE Document Server. По умолчанию
false. - METRICS_HOST: хост прослушивания StatsD. По умолчанию
localhost. - METRICS_PORT: порт StatsD. По умолчанию
8125. - METRICS_PREFIX: префикс метрик StatsD для backend‑сервисов. По умолчанию
ds.. - LETS_ENCRYPT_DOMAIN: домен для сертификата Let's Encrypt.
- LETS_ENCRYPT_MAIL: email администратора домена для Let's Encrypt.
- PLUGINS_ENABLED: включает плагины по умолчанию. По умолчанию
true.
Вы также можете установить UNIVAULTOFFICE Document Server с помощью docker-compose.
Сначала нужно клонировать этот GitHub‑репозиторий:
git clone https://github.com/UNIVAULTOFFICE/Docker-DocumentServerЗатем перейдите в папку репозитория:
cd Docker-DocumentServerПосле этого, если установлен docker-compose, выполните команду:
docker-compose up -dUNIVAULTOFFICE Document Server входит в состав UNIVAULTOFFICE Workspace, который также включает Community Server, Mail Server и Control Panel. Для установки выполните шаги:
ШАГ 1: Создайте сеть univaultoffice.
docker network create --driver bridge univaultofficeЗатем запускайте контейнеры с опцией docker run --net univaultoffice:
ШАГ 2: Установите MySQL.
Следуйте этим шагам для установки MySQL.
ШАГ 3: Сгенерируйте JWT Secret
JWT secret определяет секретный ключ для проверки JSON Web Token в запросах к UNIVAULTOFFICE Document Server. Вы можете задать его вручную или получить командой:
JWT_SECRET=$(cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 12);
ШАГ 4: Установите UNIVAULTOFFICE Document Server.
sudo docker run --net univaultoffice -i -t -d --restart=always --name univaultoffice-document-server \
-e JWT_ENABLED=true \
-e JWT_SECRET=${JWT_SECRET} \
-e JWT_HEADER=AuthorizationJwt \
-v /app/univaultoffice/DocumentServer/logs:/var/log/univaultoffice \
-v /app/univaultoffice/DocumentServer/data:/var/www/univaultoffice/Data \
-v /app/univaultoffice/DocumentServer/lib:/var/lib/univaultoffice \
-v /app/univaultoffice/DocumentServer/db:/var/lib/postgresql \
univaultoffice/documentserverШАГ 5: Установите UNIVAULTOFFICE Mail Server.
Для корректной работы mail server нужно указать hostname yourdomain.com.
sudo docker run --init --net univaultoffice --privileged -i -t -d --restart=always --name univaultoffice-mail-server -p 25:25 -p 143:143 -p 587:587 \
-e MYSQL_SERVER=univaultoffice-mysql-server \
-e MYSQL_SERVER_PORT=3306 \
-e MYSQL_ROOT_USER=root \
-e MYSQL_ROOT_PASSWD=my-secret-pw \
-e MYSQL_SERVER_DB_NAME=univaultoffice_mailserver \
-v /app/univaultoffice/MailServer/data:/var/vmail \
-v /app/univaultoffice/MailServer/data/certs:/etc/pki/tls/mailserver \
-v /app/univaultoffice/MailServer/logs:/var/log \
-h yourdomain.com \
univaultoffice/mailserverДополнительные параметры mail server доступны здесь.
Подробнее см. документацию UNIVAULTOFFICE Mail Server.
ШАГ 6: Установите UNIVAULTOFFICE Community Server
sudo docker run --net univaultoffice -i -t -d --privileged --restart=always --name univaultoffice-community-server -p 80:80 -p 443:443 -p 5222:5222 --cgroupns=host \
-e MYSQL_SERVER_ROOT_PASSWORD=my-secret-pw \
-e MYSQL_SERVER_DB_NAME=univaultoffice \
-e MYSQL_SERVER_HOST=univaultoffice-mysql-server \
-e MYSQL_SERVER_USER=univaultoffice_user \
-e MYSQL_SERVER_PASS=univaultoffice_pass \
-e DOCUMENT_SERVER_PORT_80_TCP_ADDR=univaultoffice-document-server \
-e DOCUMENT_SERVER_JWT_ENABLED=true \
-e DOCUMENT_SERVER_JWT_SECRET=${JWT_SECRET} \
-e DOCUMENT_SERVER_JWT_HEADER=AuthorizationJwt \
-e MAIL_SERVER_API_HOST=${MAIL_SERVER_IP} \
-e MAIL_SERVER_DB_HOST=univaultoffice-mysql-server \
-e MAIL_SERVER_DB_NAME=univaultoffice_mailserver \
-e MAIL_SERVER_DB_PORT=3306 \
-e MAIL_SERVER_DB_USER=root \
-e MAIL_SERVER_DB_PASS=my-secret-pw \
-e CONTROL_PANEL_PORT_80_TCP=80 \
-e CONTROL_PANEL_PORT_80_TCP_ADDR=univaultoffice-control-panel \
-v /app/univaultoffice/CommunityServer/data:/var/www/univaultoffice/Data \
-v /app/univaultoffice/CommunityServer/logs:/var/log/univaultoffice \
-v /app/univaultoffice/CommunityServer/letsencrypt:/etc/letsencrypt \
-v /sys/fs/cgroup:/sys/fs/cgroup:rw \
univaultoffice/communityserverГде ${MAIL_SERVER_IP} — IP‑адрес UNIVAULTOFFICE Mail Server. Его можно получить командой:
MAIL_SERVER_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' univaultoffice-mail-server)
Также можно использовать автоматический скрипт установки, чтобы развернуть UNIVAULTOFFICE Workspace сразу. Для корректной работы mail server нужно указать hostname yourdomain.com.
ШАГ 1: Скачайте Docker‑скрипт UNIVAULTOFFICE Workspace
wget https://download.univaultoffice.ru/install/workspace-install.shШАГ 2: Установите UNIVAULTOFFICE Workspace командой:
workspace-install.sh -md yourdomain.comИли используйте docker-compose. Сначала нужно клонировать этот GitHub‑репозиторий:
wget https://raw.githubusercontent.com/UNIVAULTOFFICE/Docker-CommunityServer/master/docker-compose.groups.yml
docker-compose up -d(Работает и поддерживается только на Linux‑хостах)
Docker по умолчанию не выдаёт контейнерам IPv6‑адреса. Эта функция пока экспериментальная.
Чтобы включить взаимодействие по IPv6, нужно включить поддержку в Docker. Для этого:
- создайте файл
/etc/docker/daemon.jsonсо следующим содержимым:
{
"ipv6": true,
"fixed-cidr-v6": "2001:db8:abc1::/64"
}
- перезапустите Docker командой:
systemctl restart docker
После этого все запущенные контейнеры получат IPv6‑адреса и интерфейс inet6.
Вы можете проверить мостовую сеть по умолчанию и увидеть поле
EnableIPv6=true. Также будет добавлена новая IPv6‑подсеть.
Подробнее см. в официальной документации Docker
Docker — относительно новый проект, который активно развивается сообществом. Поэтому рекомендуется использовать последнюю версию Docker: большинство проблем уже исправлены в новых релизах.
Известная проблема Docker с UNIVAULTOFFICE Document Server на rpm‑дистрибутивах: иногда процессы внутри контейнера не запускаются. Пользователям Fedora и RHEL/CentOS следует попробовать отключить SELinux командой setenforce 0. Если это решит проблему, можно либо оставить SELinux отключенным (не рекомендуется Red Hat), либо перейти на Ubuntu.
Из-за особенностей работы Document Server сохраняет документ только после того, как все пользователи закрыли документ. Чтобы избежать потери данных, при обновлении приложения, перезагрузке сервера и т. д. нужно принудительно отключать пользователей Document Server. Для этого выполните следующий скрипт на сервере, где установлен Document Server:
sudo docker exec <CONTAINER> documentserver-prepare4shutdown.sh
Обратите внимание: выполнение скрипта и отключение пользователей может занять длительное время (до 5 минут).
Официальный сайт: www.univaultoffice.ru
Репозиторий кода: github.com/UNIVAULTOFFICE/DocumentServer
Docker‑образ: github.com/UNIVAULTOFFICE/Docker-DocumentServer
Лицензия: GNU AGPL v3.0
Сравнение бесплатной версии и коммерческих сборок: https://github.com/UNIVAULTOFFICE/DocumentServer#univaultoffice-docs-editions
Если у вас возникли проблемы или вопросы по этому образу, посетите официальный форум: forum.univaultoffice.ru.
Вы также можете задавать вопросы по разработке UnivaultOffice на Stack Overflow и оставлять предложения на feedback.univaultoffice.ru.
Присоединяйтесь к нашему Discord‑сообществу: https://discord.gg/Hcgtf5n4uF