В этой статье я покажу как к файловому серверу NextCloud подключить сервер редактирования документов OnlyOffice.
Введение
Я уже писал про установку облачного файлового сервера NextCloud — здесь. В этой статье я покажу как установить на этот же сервер Onlyoffice (сервер редактирования документов).
Официальный сайт Onlyoffice — доступен здесь.
Официальные инструкции:
- Установка OnlyOffice документ сервера на CentOS, RHEL и производных;
- Установка OnlyOffice документ сервера на Debian, Ubuntu и производных;
- Переключение работы OnlyOffice на протокол HTTPS.
Перед чтением этой инструкции нужно понять некоторые вещи:
- Один сервер (Nginx) должен обрабатывать оба доменных имени:
- имя по которому будет доступен файловый сервер NextCloud (в моём примере nc.sysadminium.ru),
- и имя сервера документов OnlyOffice (в моём примере office.sysadminium.ru),
- то есть у Nginx будет два конфига обрабатывающих разные URL (за это в конфигах отвечает параметр servername).
- Оба сайта должны работать по протоколу HTTPS, при этом:
- клиентский компьютер без предупреждения безопасности браузера о неправильном сертификате, должен открывать оба сайта.
- сам сервер должен открывать оба сайта по протоколу https (проверить можно так
wget https://nc.sysadminium.ru
иwget https://office.sysadminium.ru
. Если скачается индексный файл, значит всё в порядке, а если ругнётся на сертификат то не в порядке).
Важно ещё понимать как происходит работа клиента с сервером документов:
Пользователь подключается к NextCloud по ссылке https://nc.sysadminium.ru. Там он открывает документ на редактирование, и в этот момент его перекидывает на https://office.sysadminium.ru. Для пользователя это происходит незаметно, но браузер реально подключается на другой адрес.
Раньше я думал что пользователь работает с Onlyoffice через NextCloud, но на самом деле он это делает напрямую.
Сам же OnlyOffice с NextCloud тоже общаются. И так как они установлены на один сервер, то делают они это не через интернет. Но при этом всё равно требуется протокол https и доверие к сертификатам.
Установка
Установка postgresql
Установим PostgreSQL и создадим базу данных для OnlyOffice:
# apt install -y postgresql # su - postgres $ psql postgres=# CREATE DATABASE onlyoffice; postgres=# CREATE USER onlyoffice WITH password '12345'; postgres=# GRANT ALL privileges ON DATABASE onlyoffice TO onlyoffice; postgres=# \q $ exit
Выше мы создали:
- базу данных onlyoffice;
- пользователя onlyoffice с паролем 12345;
- и дали доступ созданному пользователю к созданной базе.
Ещё замечу, вы можете поменять только пароль, а вот имя пользователя и имя базы нужно использовать эти. NextCloud по умолчанию подключается именно к этой базе и с помощью этого пользователя.
Установка дополнительных покетов
Установим дополнительные пакеты:
# apt install -y rabbitmq-server nginx-extras dirmngr
Установка OnlyOffice
Установим onlyoffice-documentserver:
# apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys CB2DE8E5 # echo "deb https://download.onlyoffice.com/repo/debian squeeze main" | tee /etc/apt/sources.list.d/onlyoffice.list # apt update # apt install -y onlyoffice-documentserver
Кстати, пакету onlyoffice-documentserver по зависимостям нужен ttf-mscorefonts-installer, а он доступен только в ветке contrib. Если при установке ругнётся на то что не может установить ttf-mscorefonts-installer, добавьте contrib в файл /etc/apt/sources.list — пример deb http://deb.debian.org/debian/ bookworm main contrib non-free-firmware.
В процессе установки у вас будет запрошен пароль от базы, которую мы делали в PostgreSQL для OnlyOffice.
После установки нам нужно получить сертификат для нашего имени сайта. Я буду получать бесплатный сертификат от Letsencryp. Для этого в конфиг /etc/nginx/conf.d/ds.conf добавим имя сайта в параметр server_name (этот параметр тоже добавим):
# nano /etc/nginx/conf.d/ds.conf include /etc/nginx/includes/http-common.conf; server { listen 0.0.0.0:80; listen [::]:80 default_server; server_name office.sysadminium.ru; server_tokens off; set $secure_link_secret SyJSmC4rORN9SKFEIWWC; include /etc/nginx/includes/ds-*.conf; }
Получим сертификат:
# systemctl reload nginx.service # certbot certonly --nginx
И выбираем необходимое имя, на которое нужно получить сертификат.
Теперь включим ssl, для этого заменим конфиг /etc/onlyoffice/documentserver/nginx/ds.conf на шаблон /etc/onlyoffice/documentserver/nginx/ds-ssl.conf.tmpl:
# cp -f /etc/onlyoffice/documentserver/nginx/ds-ssl.conf.tmpl /etc/onlyoffice/documentserver/nginx/ds.conf
И отредактируем конфиг, добавив в него имя сайта и пути к полученным сертификатам:
# nano /etc/nginx/conf.d/ds.conf # В первой секции (Normal HTTP host) нужно указать имя сервера: server_name onlyoffice.sysadminium.ru; # В секции (HTTPS host) нужно указать верные tls сертификаты: ssl_certificate /etc/letsencrypt/live/office.sysadminium.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/office.sysadminium.ru/privkey.pem;
После проделанного, перезапустим Nginx:
# systemctl reload nginx.service
Теперь по адресу https://office.sysadminium.ru/welcome/ будет доступна страничка OnlyOffice.
Укажем секретный ключ OnlyOffice. Он нам понадобится в процессе интеграции с NextCloud. Для этого придумываем пароль и вставляем его в конфиг /etc/onlyoffice/documentserver/local.json:
# nano /etc/onlyoffice/documentserver/local.json "secret": { "inbox": { "string": "secret123" }, "outbox": { "string": "secret123" }, "session": { "string": "secret123" }
Перезапустим службу документсервера, проверим статус службы и состояние сервера:
# systemctl restart ds-docservice # systemctl status ds-docservice # documentserver-jwt-status.sh Your JWT settings: JWT enabled - true JWT secret - secret123 JWT header - Authorization
Дополнительные работы
Важно чтобы хост на котором запущен NextCloud и OnlyOffice обращался к этим службам по localhost. Для этого внесём в файл /etc/hosts две записи:
# nano /etc/hosts 127.0.0.1 office.sysadminium.ru 127.0.0.1 nc.sysadminium.ru
И у меня после установки всегда возникает непонятная ошибка с секретными ссылками. Возможно что-то не доделываю. Это приводит к ошибке при интеграции NextCloud с OnlyOffice. Это легко лечится с помощью следующих команд:
# cd /bin/ # bash documentserver-update-securelink.sh
Настройка интеграции
Переходим в web-интерфейс NextCloud, а дальше в меню «Приложения»:
Находим и устанавливаем приложение OnlyOffice:
Переходим в меню «Параметры сервера»:
Переходим в настройки OnlyOffice и указываем путь подключения к этому приложению. А также вставляем придуманный ранее секретный ключ для доступа к OnlyOffice:
В дополнительных настройках можете указать «Адрес ONLYOFFICE Docs для внутренних запросов сервера», у меня оно не отличается от внешнего имени. А в строке «Адрес сервера для внутренних запросов ONLYOFFICE Docs» я указал адрес подключения к NextCloud.
Если столкнетесь с ошибкой, можете выполнить на сервере:
# cd /bin/ # bash documentserver-update-securelink.sh
После подключения OnlyOffice вы сможете создавать и редактировать офисные документы:
Так выглядит редактор документов OnlyOffice:
Как видите, интерфейс очень похож на MS Word.
Итог
По этой инструкции у меня получилось воспроизвести интеграцию в продакшене пару раз. Надеюсь вам она тоже поможет. Домены в этой статье выдуманные, так что не пытайтесь по ним переходить:)
Другие мои статьи по серверу NextCloud доступны здесь.
Если понравилась статья, подпишись на мой канал в VK.
Нифига не встаёт. Пишет «При попытке соединения возникла ошибка (Возникла ошибка в службе документов: Unknown error) (версия 7.5.1.23)». Хотя onlyoffice открывается по доменному имени
Добрый день. Обе ваши статьи про nextcloud и onlyoffice это то что я давно искал. Большое спасибо.
Единственное у меня возникла проблема, я новичок в линуксе. После выполнения всех действий описанных в статье, у меня по обоим адресам nc.example.ru и office.example.ru открывается onlyoffice. Потерялся nextcloud, как это исправить. Заранее благодарю
Устранил прошлую проблему. Но есть еще одна проблема:
При попытке соединения возникла ошибка (Возникла ошибка в службе документов: Unknown error) (версия 8.0.0.99)
А это выполняли?
cd /bin/
bash documentserver-update-securelink.sh
Можете ещё проверить что оба сервиса работают:
wget <адрес nextcloud>
wget <адрес onlyoffice>
Должны скачаться индексные файлы обоих сайтов.
Добрый день да выполнял. Файлы скачивались. проблема решилась когда включил тестовый режим. Не придал этому значение. Еще раз спасибо за статью
Аналогичная ошибка. Как включить тестовый режим?
Интересно как-то у тебя связка работает. Некстклауд на 443 порту и онлиофис на 443 порту. У меня например по твоей инструкции, при попытке открыть онлиофис/welcome открывается облако через недоверенный домен