Онлайн-редактор документов. Ставится для использования с Nextcloud на отдельный сервер в Docker.
Для работы с внешними пользователями документ-сервер должен быть опубликован в интернете и иметь действительный сертификат SSL, иначе при обращении к документ-серверу через интерфейс Nextcloud будет ошибка «OnlyOffice cannot be reached, please contact admin» из-за того, что браузер не доверяет самоподписанному сертификату и не откроет фрейм документа.
Хост-сервер, где крутится OnlyOffice, должен иметь открытые порты 80 и 443 в интернет.
Подготовительные действия:
# создать папки mkdir onlyoffice cd onlyoffice mkdir logs data lib db data/certs # файл с переменными echo "JWT_ENABLED=true" >> env.list # secretword - это пароль доступа к документ-серверу echo "JWT_SECRET=secretword" >> env.list
Установка Docker (для Debian):
sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/debian \ $(lsb_release -cs) \ stable" sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io
https://docs.docker.com/install/linux/docker-ce/debian/#install-docker-ce-1
Выпуск сертификата:
certbot certonly -d oo.domain.com Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/oo.domain.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/oo.domain.com/privkey.pem # Копировать сертификаты в каталог их забора при запуске контейнера cp /etc/letsencrypt/live/oo.domain.com/fullchain.pem ~/onlyoffice/data/certs/onlyoffice.crt cp /etc/letsencrypt/live/oo.domain.com/privkey.pem ~/onlyoffice/data/certs/onlyoffice.key chmod 400 ~/onlyoffice/data/certs/onlyoffice.key # Сгенерировать параметры Диффи-Хеллмана (DHE), обеспечивающие более высокую стойкость openssl dhparam -out ~/onlyoffice/data/certs/dhparam.pem 2048
Установка версии Сервера документов для Docker на локальном сервере
Запуск:
sudo docker run -i -t -d -p 443:443 --restart=always \ -v ~/onlyoffice/logs:/var/log/onlyoffice \ -v ~/onlyoffice/data:/var/www/onlyoffice/Data \ -v ~/onlyoffice/lib:/var/lib/onlyoffice \ -v ~/onlyoffice/db:/var/lib/postgresql \ --env-file ~/onlyoffice/env.list onlyoffice/documentserver
Далее ставится плагин OnlyOffice в Nextcloud и настраивается через веб-интерфейс. Ключ доступа, прописанный ранее в переменной JWT_SECRET, прописывается в доп. настройках.
# Список контейнеров sudo docker ps # Запустить консоль внутри контейнера: sudo docker exec -it CONTAINER_ID bash # Перезапуск всех служб OnlyOffice (внутри контейнера) supervisorctl restart all
Костыль, чтобы заставить Nextcloud не проверять подлинность сертификата для взаимодействия с OnlyOffice. Прописывается в config.php Nextcloud. В нормальной ситуации не нужен.
'onlyoffice' => array ( 'verify_peer_off' => TRUE, ),
Нужно в случае, когда Nextcloud и OnlyOffice стоят в одной подсети и внутренние запросы (в настройках плагина Онлиофиса в Некстклауде) идут через внутренние имена или IP-адреса, отсутствующие в SSL-сертификате. Если не отключить проверку, то при настройке плагина будет выдаваться ошибка: Error while downloading the document file to be converted
Решение:
When you use self-signed certificates they should be added to ca-certificate bundle of the OS of both servers (the one you use on Nextcloud should be added to the server with ONLYOFFICE Document Server and vice versa). The problem is that the certificate of Nextcloud should be also added to nodejs ca-certificate bundle, so the Document Server can verify it. But it is impossible for nodejs version 6, which is required for the Document Server at the moment.
We are working on the possibility to install Document Server with the later versions of nodejs, where it is possible to add self-signed certificates.
As a temporary solution you can disable verification of the certs by the Document Server. It should help. Please change the value of the parameter `"rejectUnauthorized":` from `true` to `false` in /etc/onlyoffice/documentserver/default.json. After that restart all the services of the Document Server:
supervisorctl restart all
sed -ie 's/"rejectUnauthorized": true/"rejectUnauthorized": false/g' /etc/onlyoffice/documentserver/default.json supervisorctl restart all
https://github.com/ONLYOFFICE/onlyoffice-owncloud/issues/181