Содержание

OnlyOffice

Онлайн-редактор документов. Ставится для использования с 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,
),

https://www.c-rieger.de/nextcloud-and-only-office-nginx/

Отключить проверку сертификата в OnlyOffice

Нужно в случае, когда 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