Устраняем предупреждения в админ панели NextCloud

В предыдущей статье я писал как можно установить и настроить nextcloud на операционной системе Ubuntu Server 20.04 с web-сервером nginx+php-fpm и базой данных postgresql. Почитать можно тут.




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




Индексирование файлов




Для устранения запустим команды для ускорения индексирования файлов. В терминале набираем:




cd /var/www/nextcloud/




Включаем режим обслуживания:




sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on




И вводим данные строки:




sudo -u www-data php occ db:add-missing-indices
sudo -u www-data php occ db:convert-filecache-bigint




Выключаем режим обслуживания




sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off




После данной манипуляции ошибка должна исчезнуть.




Предупреждения о текущей конфигурации /.well-known/.




  • Веб-сервер не настроен должным образом для разрешения «/.well-known/webfinger».



  • Веб-сервер не настроен должным образом для разрешения «/.well-known/nodeinfo».



  • Веб-сервер не настроен должным образом для разрешения «/.well-known/caldav».



  • Веб-сервер не настроен должным образом для разрешения «/.well-known/carddav».




Чтобы исправить данные предупреждения в конфигурационный файл nginx вашего облака внесем следующую location:




    location /.well-known {
      location = /.well-known/carddav { return 301 https://$host/remote.php/dav/; }
      location = /.well-known/caldav { return 301 https://$host/remote.php/dav/; }
      location ~ /.well-known/acme-challenge { allow all; }
      rewrite ^/.well-known/webfinger /public.php?service=webfinger last;
      rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
      location  ^~ /.well-known { return 301 https://host/index.php$uri; }
         try_files $uri $uri/ =404;
     }




Адрес https://mynextcloud.ru измените на свой.




Также внесём следующие строки в файл .htaccess




<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{HTTP_USER_AGENT}  DavClnt
  RewriteRule ^$ https://%{SERVER_NAME}/remote.php/webdav/ [L,R=302]
  RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
  RewriteRule ^.well-known/host-meta https://%{SERVER_NAME}/public.php?service=host-meta [QSA,L]
  RewriteRule ^.well-known/host-meta.json https://%{SERVER_NAME}/public.php?service=host-meta-json [QSA,L]
  RewriteRule ^.well-known/webfinger https://%{SERVER_NAME}/public.php?service=webfinger [QSA,L]
  RewriteRule ^.well-known/carddav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L]
  RewriteRule ^.well-known/caldav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L]
  RewriteRule ^remote/(.*) https://%{SERVER_NAME}/remote.php [QSA,L]
  RewriteRule ^(?:build|tests|config|lib|3rdparty|templates)/.* - [R=404,L]
  RewriteCond %{REQUEST_URI} !^/.well-known/(acme-challenge|pki-validation)/.*
  RewriteRule ^(?:.|autotest|occ|issue|indie|db_|console).* - [R=404,L]
</IfModule>




Зависание входа в панель NextCloud




Включил https на web сервере для nextclou и появился неприятный глюк: в google chrome, opera и яндекс браузере, а также в firefox, IE и edge при входе в аккаунт и выходе из него браузер “зависает” на странице входа, но при этом авторизуется. Если нажать F5, то окажемся в своем аккаунте.
Как же победить данную проблему?




Лечится добавлением в конфигурационный файл NexCloud:




sudo nano /var/www/nextcloud/config/config.php




следующего содержимого:




'overwriteprotocol' => 'https',




Не настроена система кэширования.




Не настроена система кэширования. Для увеличения производительности сервера, по возможности, настройте memcache.




Хочу использовать Memcached. Для этого надо установите модуль для PHP и сам memcached.




Как оказалось есть два похожих пакета:




  • php-memcache – модуль Memcache для PHP,



  • php-memcached – расширение PHP для взаимодействия с memcached.




Нужен с буквой d в конце.




Установливаем:




sudo apt install memcached php8.0-memcached




настройки в /etc/php/8.0/mods-available/memcached.ini оставляю все без изменений.
В выводе phpinfo(); появился блок с описанием memcached.




Настройки запуска сервиса в /etc/systemd/system/multi-user.target.wants/memcached.service и конфигурационный файл /etc/memcached.conf тоже не менял.




Запускаем memcached:




sudo systemctl start memcached




Проверяем запустился ли сервис




sudo ps ax | grep memcached




Должно выдать что-то вроде этого




725 ?        Ssl    0:11 /usr/bin/memcached -m 64 -p 11211 -u memcache -l 127.0.0.1 -P /var/run/memcached/memcached.pid




Теперь в конфиге NextCloud добавим строки:




sudo nano /var/www/nextcloud/config/config.php




  'memcache.local' => 'OCMemcacheMemcached',
  'memcache.distributed' => 'OCMemcacheMemcached',
  'memcached_servers' => [
     [ '127.0.0.1', 11211 ],
 ],




Модуль php-imagick не поддерживает SVG




Для устранения данного предупреждения необходимо установить модуль imagick:




sudo apt install imagemagick




Не указан регион размещения этого сервера Nextcloud




Не указан регион размещения этого сервера Nextcloud, что требуется для возможности проверки номеров телефонов без указания кода страны.




Чтобы разрешить пользователям сервера указывать номера телефонов без указания кода страны, добавьте параметр «default_phone_region» с соответствующим кодом страны в соответствии с ISO 3166-1↗.




Для устранения данного предупреждения откроем конфигурационный файл NextCloud :




sudo nano /var/www/nextcloud/config/config.php




и добавим следующие строки:




'default_phone_region' => 'RU',




Предупреждение headers




Для устранения данных ошибок в терминале набираем следующее:




sudo nano /etc/nginx/conf.d/headers.conf




И заполняем данным текстом:




    add_header Referrer-Policy   "no-referrer" always;
    add_header X-Content-Type-Options   "nosniff" always;
    add_header X-Download-Options   "noopen" always;
    add_header X-Frame-Options   "SAMEORIGIN" always;
    add_header X-Permitted-Cross-Domain-Policies "none" always;
    add_header X-Robots-Tag   "none"  always;
    add_header X-XSS-Protection   "1; mode=block" always;
    add_header Cache-Control "public, max-age=7200";
    # Remove X-Powered-By, which is an information leak
    fastcgi_hide_header X-Powered-By;




Сохраняем файл (ctrl+o, ctrl+x). И перезагружаем nginx




sudo service nginx restart




Заголовок HTTP «Strict-Transport-Security»




Для устранения данного предупреждения отредактируем файл Nginx headers.conf:




sudo nano /etc/nginx/conf.d/headers.conf




Добавим следующие строки:




add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;




Перезапустим nginx:




 sudo service nginx restart




PHP не настроен для системного окружения.




PHP не настроен правильно для получения переменных системного окружения.




Запрос getenv(«PATH») возвращает пустые результаты.
Обратитесь к разделу о конфигурации PHP и примечаниям к конфигурации PHP из руководства по установке. Обратите внимание на настройку параметров PHP, особенно при использовании механизма php-fpm.




Когда вы используете php-fpm, системные переменные среды, такие как PATH, TMP или другие, не заполняются автоматически так же, как при использовании php-cli. Вызов функции PHP, такой как getenv(‘PATH’); может возвращать пустой результат. Поэтому вам может потребоваться вручную настроить переменные среды в файле конфигурации php-fpm.




Редактируем файл:




sudo nano /etc/php/8.0/fpm/pool.d/www.conf




Находим строки:




;env[HOSTNAME] = $HOSTNAME
;env[PATH] = /usr/local/bin:/usr/bin:/bin
;env[TMP] = /tmp
;env[TMPDIR] = /tmp
;env[TEMP] = /tmp




И сними с них комментарий (;).




Далее перезапустим php8.0-fpm




sudo service php8.0-fpm restart




Значение PHP ниже рекомендуемого значения .




Разрешённое максимальное значение использования памяти PHP ниже рекомендуемого значения в 512 МБ.




В терминале набираем:




sudo nano /etc/php/8.0/fpm/php.ini




Находим и редактируем следующие строки:




max_execution_time = 300
max_input_time = 600
memory_limit = 512M
post_max_size = 20M
upload_max_filesize = 40M




Не скачиваются файлы больше 1Гб




При попытках скачать из облака файлы объемом более 1гб скачивание прерывается при достижении 1гб. Такое происходит при условии использования Nginx как реверс-прокси. Решается очень просто, нужно добавить в конфигурационный файл сайта опцию «proxy_buffering off». Открываем и добавляем эту опцию:




server {
…
proxy_buffering off;
…
}



[endtxt]




. . . .




2021-04-07T23:24:12
NextCloud