Notify Push – пытается решить проблему, при которой клиенты Nextcloud должны периодически проверять сервер, не были ли изменены какие-либо файлы. Чтобы синхронизация была быстрой, клиенты хотят часто проверять наличие обновлений, что увеличивает нагрузку на сервер.

Более подробно можно ознакомиться на официальном репозитории GitHub.com

Требования

Это приложение требует наличие Redis и настройки nextcloud с его использованием.

Подготовка

Шаг 1 – WebUI

Итак, запускаем WebUI облака, затем сразу отправляемся в Приложения. Нас интересует Client Push, который можно найти поиском.

Скачиваем и устанавливаем:

Notify Push – высокопроизводительный бэкэнд для Nextcloud 21+ 6
Приложение Client Push в WebUI облака.

Веб интерфейс можно закрыть. Он нам далее не понадобится.

Шаг 2 – Nginx Proxy Manager

Необходимо добавить настройку в Proxy Host, вкладка Advanced:

location ^~ /push/ {
    proxy_pass http://192.168.31.100:7867/;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

Где 192.168.31.100 – Локальный IP адрес сервера.

Notify Push – высокопроизводительный бэкэнд для Nextcloud 21+ 7

Не забываем нажать SAVE. На этом закрываем NPM и переходим к созданию контейнера.

Установка Notify Push

Создадим контейнер вручную. Для этого переходим на вкладку DOCKER нашего unRAID сервера, затем нажимаем кнопку Notify Push – высокопроизводительный бэкэнд для Nextcloud 21+ 8

В открывшемся окне активируем расширенный вид, сдвинув ползунок в правом верхнем углу Notify Push – высокопроизводительный бэкэнд для Nextcloud 21+ 9

Переходим к настройке и заполнению обязательных полей для корректной работы пакета:

  • Name: произвольное имя контейнера, настоятельно рекомендую называть описывая суть и принадлежность – NextPush
  • Overview: можно добавить описание по желанию.
  • Repository: используем тот же репозиторий, который используется для облака. Я использую свой – myunraid/nextcloud:production-apache. Более подробно можно прочитать тут.
  • Icon URL: ссылка на иконку контейнераhttps://decatec.de/wp-content/uploads/2017/08/nextcloud_logo.png
Notify Push – высокопроизводительный бэкэнд для Nextcloud 21+ 10
Создание контейнера Notify Push (часть 1)
  • Post Arguments: /bin/sh -c ‘cd /var/www/html/config && /var/www/html/custom_apps/notify_push/bin/x86_64/notify_push config.php’
  • Network Type: тип сети Bridge
  • Privileged: OFF
Notify Push – высокопроизводительный бэкэнд для Nextcloud 21+ 11
Создание контейнера Notify Push (часть 2)

Далее создаем недостающие пункты нажимая кнопку Notify Push – высокопроизводительный бэкэнд для Nextcloud 21+ 12

  • NEXTCLOUD_URL: ссылка на облако в локальной сети – http://192.168.31.100:444
Notify Push – высокопроизводительный бэкэнд для Nextcloud 21+ 13
Создание контейнера Notify Push (часть 3)
  • Push Port: порт контейнера Notyfy Push – 7867
Notify Push – высокопроизводительный бэкэнд для Nextcloud 21+ 14
Создание контейнера Notify Push (часть 4)
  • PHP_MEMORY_LIMIT: лимиты php – 1G
Notify Push – высокопроизводительный бэкэнд для Nextcloud 21+ 15
Создание контейнера Notify Push (часть 5)
  • PHP_UPLOAD_LIMIT: лимиты на аплоад php – 2G
Notify Push – высокопроизводительный бэкэнд для Nextcloud 21+ 16
Создание контейнера Notify Push (часть 6)
  • Config: путь к config.php от облака – /mnt/user/appdata/nextcloud/
Notify Push – высокопроизводительный бэкэнд для Nextcloud 21+ 17
Создание контейнера Notify Push (часть 7)
Acess Mode для этого пути необходимо указать Read Only

После заполнения данных нажимаем APPLY. В следующем окне будет информация о выполненных операциях по установке с учетом введенных данных:

Notify Push – высокопроизводительный бэкэнд для Nextcloud 21+ 18
Ход установки Notify Push

Нажимаем DONE, переходим на вкладку DOCKER, видим установленный контейнер.

Конфигурация Notify Push (часть 1)

Открыв терминал сервера Notify Push – высокопроизводительный бэкэнд для Nextcloud 21+ 19 запустить консоль контейнера из-под юзера www-data:

docker exec -it --user www-data nextcloud sh

Где nextcloud – имя контейнера NextCloud.

Далее:

php occ notify_push:setup https://cloud.mydomain.ru/push

Где cloud.mydomain.ru – домен облака.

Затем получаем ошибку вида:

Notify Push – высокопроизводительный бэкэнд для Nextcloud 21+ 20

Тут нас интересует IP адрес, на который ссылается push server, и сообщает, что необходимо его добавить в доверенные в config.php нашего облака.

Не закрываем окно консоли, оно нам еще понадобится.

Редактируем config.php облака

Идем по пути расположения файла конфигурации (если первоначальную установку облака производили по инструкции с данного сайта, то ищем по пути mnt/user/appdata/nextcloud/config/config.php)

В конец добавляем:

  'trusted_proxies' => 
  array (
    0 => '172.17.0.1',
  ),

Сохраняем внесенные изменения и возвращаемся в консоль на предыдущем шаге.

Конфигурация Notify Push (часть 2)

Снова вводим команду:

php occ notify_push:setup https://cloud.mydomain.ru/push

Где cloud.mydomain.ru – домен облака.

Notify Push – высокопроизводительный бэкэнд для Nextcloud 21+ 21

Должны получить заветную надпись configuration saved и отсутствие ошибок.

В терминале все это должно выглядеть примерно следующим образом:


root@unRAID:~# docker exec -it --user www-data NextCloudProd sh
$ php occ notify_push:setup https://next.myunraid.ru/push                                                             
✓ redis is configured
✓ push server is receiving redis messages
✓ push server can load mount info from database
✓ push server can connect to the Nextcloud server
🗴 push server is not a trusted proxy, please add '172.17.0.1' to the list of trusted proxies or configure any existing reverse proxy to forward the 'x-forwarded-for' send by the push server.
  See https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/reverse_proxy_configuration.html#defining-trusted-proxies for how to set trusted proxies.
  The following trusted proxies are currently configured: 
  The following x-forwarded-for header was received by Nextcloud: 1.2.3.4
    from the following remote: 172.17.0.1

  If you're having issues getting the trusted proxy setup working, you can try bypassing any existing reverse proxy
  in your setup by setting the `NEXTCLOUD_URL` environment variable to point directly to the internal Nextcloud webserver url
  (You will still need the ip address of the push server added as trusted proxy)
$ php occ notify_push:setup https://next.myunraid.ru/push
✓ redis is configured
✓ push server is receiving redis messages
✓ push server can load mount info from database
✓ push server can connect to the Nextcloud server
✓ push server is a trusted proxy
✓ push server is running the same version as the app
  configuration saved
$ 

Итог

Поставили высокопроизводительный бэкэнд для файлов в Nextcloud 21. Тем самым ускорили отклик при совместной работе в облаке.

Эта же инструкция, но в более сжатом виде на дружественном wiki