Notify Push — пытается решить проблему, при которой клиенты Nextcloud должны периодически проверять сервер, не были ли изменены какие-либо файлы. Чтобы синхронизация была быстрой, клиенты хотят часто проверять наличие обновлений, что увеличивает нагрузку на сервер.
Более подробно можно ознакомиться на официальном репозитории GitHub.com
Требования
Это приложение требует наличие Redis и настройки nextcloud с его использованием.
Подготовка
Шаг 1 — WebUI
Итак, запускаем WebUI облака, затем сразу отправляемся в Приложения. Нас интересует Client Push, который можно найти поиском.
Скачиваем и устанавливаем:
Веб интерфейс можно закрыть. Он нам далее не понадобится.
Шаг 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 адрес сервера.
Не забываем нажать SAVE. На этом закрываем NPM и переходим к созданию контейнера.
Установка Notify Push
Создадим контейнер вручную. Для этого переходим на вкладку DOCKER нашего unRAID сервера, затем нажимаем кнопку
В открывшемся окне активируем расширенный вид, сдвинув ползунок в правом верхнем углу
Переходим к настройке и заполнению обязательных полей для корректной работы пакета:
- Name: произвольное имя контейнера, настоятельно рекомендую называть описывая суть и принадлежность — NextPush
- Overview: можно добавить описание по желанию.
- Repository: используем тот же репозиторий, который используется для облака. Я использую свой — myunraid/nextcloud:production-apache. Более подробно можно прочитать тут.
- Icon URL: ссылка на иконку контейнера — https://decatec.de/wp-content/uploads/2017/08/nextcloud_logo.png
- 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
Далее создаем недостающие пункты нажимая кнопку
- NEXTCLOUD_URL: ссылка на облако в локальной сети — http://192.168.31.100:444
- Push Port: порт контейнера Notyfy Push — 7867
- PHP_MEMORY_LIMIT: лимиты php — 1G
- PHP_UPLOAD_LIMIT: лимиты на аплоад php — 2G
- Config: путь к config.php от облака — /mnt/user/appdata/nextcloud/
После заполнения данных нажимаем APPLY. В следующем окне будет информация о выполненных операциях по установке с учетом введенных данных:
Нажимаем DONE, переходим на вкладку DOCKER, видим установленный контейнер.
Конфигурация Notify Push (часть 1)
Открыв терминал сервера запустить консоль контейнера из-под юзера 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 — домен облака.
Затем получаем ошибку вида:
Тут нас интересует 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 — домен облака.
Должны получить заветную надпись 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