
Продолжаю свой цикл статей про установку настройку NextCloud. Сегодня хочется остановиться на добавлении редактора офисных документов OnlyOffice в NextCloud. С этой штукой я прям заморочился совсем не кисло и даже уже пытался забить ибо не выходил "каменный цветок". Но так как статья всетаки появилась, делаею вывод, я победил.
Итак, по порядку, как шло мое дело (рекомендую ознакомиться со следующими статьями для понимания):
- NextCloud: Как поднять свое хранилище.
- NextCloud: Удалить index.php из URL
- NextCloud: Настройка SMTP сервера для нотификаций
- NextCloud: Предупреждения о текущей конфигурации
- Для понимания о технологии Reverse Proxy раз и два
Я не зря дал ссылки на предыдущие статьи, без этого бэеграунда не совсем будет понятно что я делаю.
В магазине расширений NextCloud имеется приложение ONLYOFFICE connector, это ничто иное, как аплет интеграции, самого приложения, там нет. Требутся установка backend сервера OnlyOffice. Сервер редактирования документов распространяется во многих вариантах, но я для удобства решил воспользоваться docker контейнером. Чисто теоретически удобно для дальнейшего обновления, это раз, а два, это то что я решил выполнять это все на 1 внктреннем сервере и желательно чтобы эти сервисы не пересекались.
Для начала выполню установку Docker на nextcloud сервере (на сайте производителя отличная документация), но в своем случаее я приведу ее на понятном русском языке (все действия выполняются на машине, которая выполняет роль nextcloud сервера):
Обновление и установка пакетов:
# apt-get update
# apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
Установка ключей
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Установка стабильного репозитария
# echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Обновление репозитариев и установка Docker
# apt-get update
# apt-get install docker-ce docker-ce-cli containerd.io
Все, докер установлен, теперь можно качать OnlyOffice контейнер и запускать его (на сайте onlyoffice замечательная документация по установке в docker контейнере, но я укажу для истории на русском). Выполним команду:
# docker run -i -t -d -p 8090:80 \
-v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \
-v /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice \
-v /app/onlyoffice/DocumentServer/db:/var/lib/postgresql onlyoffice/documentserver
Прошу заметить, что изначально я не указываю параметр --restart=always, это для изначального тестирования, далее можно будет обновить этот контейнер и запускать его автоматически после перезагрузки.
В каталоге /app/onlyoffice/DocumentServer, будут храниться данные приложения и логи, они помогут для отладки. Сервис будет запущен на локальном порту 8090, можно также прибиндить конкретно к интерфейсу указав например 192.168.1.50:8090:80.
Будет выполнено скачивание контейнера и его запуск, после успешного запуска контейнера можно проверить доступность, открыв в браузере страницу с моем случаее http://192.168.1.50:8090? Если видим экран привествия, хорошо. Если страница недоступна по указанному порту, то необходимо его открыть. Выполнив в моем случаее:
# iptables -A INPUT -p tcp --dport 8090 -j ACCEPT
Теперь должно работать
Половина дела уже сделана. Слежущим этапом нужно настроить реверс прокси c SSL (так как для редактора требуется обязатольно HTTPS) нового домена например: NextCloud у меня на nc.olorg.ru, а OnlyOffice будет на word.olorg.ru, для базовой настройки я пользовалься ранее написанным материалом ранее написанным материалом (указывал в начале статьи).
Далее, если раньше не был установлен Connector, его можно включить, настроить и убедится что не работает.
# sudo -u www-data php /var/www/nextcloud/occ onlyoffice:documentserver --check
Будет выдаваться ошибка.
Для реверс проксей требуется указать дополнительные параметры:
location / {
proxy_pass http://192.168.1.50:8090;
proxy_set_header Host $host;
proxy_redirect http:// $scheme://; #https://;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Connection $connection_upgrade;
}
Дальше можно проверить конфигурации nginx
# /usr/sbin/nginx -t
С моем случаее не отрабатывала $connection_upgrade, но это тоже легко исправить, отредактировав основную конфигурацию nginx, /etc/nginx/nginx.conf, добавив в конце http секцию:
# Connection header for WebSocket reverse proxy
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
Проверив еще раз конфигурацию nginx, убеждаемся что все ок и перезагружаем конфигурацию nginx:
# /usr/sbin/nginx -s reload
Проверяем конфигурацию onlyoffice
# sudo -u www-data php /var/www/nextcloud/occ onlyoffice:documentserver --check
Все работает . Наслаждамся выполненой работой.
А теперь самое время вернуться к автозапуску docker контейнера. сначала узнаем ID контейнера, а затем его модифициреум.
# docker ps
Первая колонка это CONTAINER ID, копируем, запоминаем и выполняем
# docker update --restart=always CONTAINER ID
Теперь можно считать себя молодцом.