В этой статье я покажу как к файловому серверу 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 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 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 onlyoffice-documentserver
В процессе установки у вас будет запрошен пароль от базы, которую мы делали в 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 доступны здесь.
Нифига не встаёт. Пишет «При попытке соединения возникла ошибка (Возникла ошибка в службе документов: 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>
Должны скачаться индексные файлы обоих сайтов.
Добрый день да выполнял. Файлы скачивались. проблема решилась когда включил тестовый режим. Не придал этому значение. Еще раз спасибо за статью