Архив метки: NextCloud

Ubuntu + NextCloud настройка Fail2Ban

Сегодня настроим фильтрацию fail2ban для NextCloud на операционной системы Ubuntu/Debian/Linux

Установка Fail2Ban

Для установки в терминале набираем:

sudo apt-get install fail2ban

После установки Fail2Ban имеет рабочий фильтр для ssh. Читать

Включаем Cron в Nextcloud на Ubuntu/Debian

Если Вы получаете предупреждение в админ панели NextCloud вида: “Последнее задание было выполнено X дней назад. Похоже, что-то не в порядке.




Соглавно документации и настроек, есть три варианта решения задачи:







AJAX – Выполнять одно задание с каждой загруженной страницей




По умолчанию Nextcloud использует метод планирования AJAX. Это самый простой, но не очень надёжный вариант. При каждом посещении пользователем web-страницы Nextcloud выполняется фоновое задание. Преимущество этого варианта в том, что он не требует ни каких дополнительных настроек. Недостатком этого механизма, что для его запуска требуется регулярное посещение страницы.




Webcron – cron.php зарегистрирован в службе webcron и будет вызываться каждые 5 минут по HTTP.




в этом варианте мы регистрируем адрес скрипта cron.php, который будет запускаться внешней веб-службой cron. Адрес скрипта если вы устанавливали без поддиректорий:




http[s]://ваш_сайт.ру/cron.php




(FQDN от англ. Fully Qualified Domain Name – полностью определённое имя домена)




Для настройки вы можете воспользоваться сервисом easycron.com или аналогичным. Чтобы использовать этот вариант автоматического выполнения фоновых задач на сервере, необходимо чтобы nextcloud сервер имел доступ к серверу через Интернет.




Cron – Использовать системный cron для вызова файла cron.php каждые 5 минут. cron.php должен исполняться из под пользователя “www”.




Наиболее предпочитаемый вариант – это использование функции cron в операционной системе. Этот метод позволяет выполнять запланированные задания без ограничений. Тут достаточно наличие выделенного сервера (VDS, VPS и т.д ) или доступ к системному Cron.




Чтобы запустить задание cron в Linux, нам необходимо узнать от какого пользователя работает веб-сервер. Проверяем с помощью sockstat какой сервис слушает порты 80 и 443. Необходимо установить программу:




sudo apt install sockstat




sockstat -l | grep -E "80|443"




root     nginx           2448     tcp4   *:80              *:*                       
root     nginx           2449     tcp4   *:80              *:*                       




или при помощи netstat




netstat -tulpn | grep -E ":80|:443"




tcp  0   0 0.0.0.0:80     0.0.0.0:*       LISTEN      2448/nginx: master




Итак, настраивать будем cron от пользователя www-data (актуально для Debian/Ubuntu), на запуск вызова сценария cron.php каждый 5 минут:




sudo crontab -u www-data -e




добавляем строку в конце




*/5 *  * * * php -f /var/www/nextcloud/cron.php




  • /var/www/nextcloud/cron.php – путь до веб-директории с nextcloud.




После данных изменений предупреждение из админ-панели пропадет.



[endtxt]




. . . .




2021-05-22T11:33:28
NextCloud

Nextcloud. Хитрости и секреты настройки

Сегодня поговорим о некоторых хитростях и секретах в настройках NextCloud, которые помогут вам в использовании вашего домашнего облака.




Отключение сброса пароля




Нужно добавить в конфигурационный файл config.php




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




следующие строки:




'lost_password_link' => 'disabled',




Увеличение размера загружаемых файлов




В ответ на предупреждение: Разрешённое максимальное значение использования памяти PHP ниже рекомендуемого значения в 512 МБ. Необходимо внести изменения в php.ini. Вот пример для php-fpm




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




Изменим следующие строки




upload_max_filesize = 4G
memory_limit = 512M




Перезагрузим php




sudo /etc/init.d/php8.0-fpm restart




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




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




server {
…
proxy_buffering off;
…
}




Предупреждение PHP Fatal error: Cannot use OCPConstants




Если при работе с OCC вы получаете вот такую ошибку “PHP Fatal error: Cannot use OCPConstants as Constants because the name is already in use in /var/www/nextcloud/apps/groupfolders/lib/Command/ACL.php on line 35“. Например при включении режима обслуживания:




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

PHP Fatal error:  Cannot use OCPConstants as Constants because the name is already in use in /var/www/nextcloud/apps/groupfolders/lib/Command/ACL.php on line 35




Для исправления ошибки откроем файлACL.php :




sudo nano /var/www/nextcloud/apps/groupfolders/lib/Command/ACL.php




и закомментируем 35 строчку:




//use OCPConstants;




Загрузка больших файлов




Дополнительные настройки, добавим или изменим в файле: 




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




 'session_lifetime' => 60 * 60 * 24,
 'session_keepalive' => true,




Также изменим в php основные конфигурации:




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




данный пример справедлив для nginx + php-fpm




php_value upload_max_filesize 10G
php_value post_max_size 10G
php_value max_input_time 3600
php_value max_execution_time 3600



[endtxt]




. . . .




2021-04-17T14:19:35
NextCloud

Устраняем предупреждения в админ панели 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

Установка NextCloud+Nginx+PHP+PostgreSQL на Linux

Сегодня в статье рассмотрим пример по установке и настройке домашнего облака NextCloud в среде Linux, также установим базу данных PostgreSQL и Web-сервер Nginx с PHP-FPM. Установка будет производиться на чистую Ubuntu Server 22.04 LTS.






Системные требования для NextCloud:




  • База данных: MySQL 5.7+, или MariaDB 10.2, или PostgreSQL 9.5+



  • Веб-сервер: Apache с mod_php или php-fpm или nginx с php-fpm



  • Php: 8.2+



  • ОЗУ: 512Мб+ или 2ГБ+, если использовать пакета Collabora или OnlyOffice



  • NextCloud: версии 27.0.1+




Установка




Разобьем установку на части. Установим базу данных PostgreSQL, интерпретатор PHP, далее web-сервер Nginx, ну и последним пунктом наше облако NextCloud:




Установка PostgreSQL




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




sudo apt install postgresql




Установка PHP




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




sudo add-apt-repository ppa:ondrej/php




После этого устанавливаем PHP и необходимые зависимости для NextCloud.




Предупреждение: в данный момент NextCloud поддерживает PHP версии не выше 8.2




sudo apt install php8.2 php8.2-bcmath php8.2-bz2 php8.2-common php8.2-curl php8.2-fpm php8.2-gd php8.2-gmp php8.2-intl php8.2-mbstring php8.2-opcache php8.2-pgsql php8.2-imagick php8.2-xml php8.2-xmlrpc php8.2-zip php8.2-memcached memcached php-memcached




Установка Web-сервера Nginx




Для установки nginx для начала добавим, как и с PHP, более новый репозиторий:




sudo add-apt-repository ppa:ondrej/nginx




Теперь можно установить наш web-сервер. Устанавливать будем сборку в которую включен модуль для проигрывания потокового видео с нашего сервера (поддержка модуля mp4). Открываем терминал и набираем:




sudo apt install nginx-extras




Установка NextCloud




После всех пунктов выше приступим к установки нашего домашнего облака NextCloud. Для этого переходим в директорию /var/www:




cd /var/www/




Скачиваем последнюю версию NextCloud (на данный момент это версия NextCloud 27.0.1), а также сразу распакуем и изменим права на директорию NextCloud:




sudo wget https://download.nextcloud.com/server/releases/nextcloud-27.0.1.zip
sudo unzip nextcloud-27.0.1.zip
sudo chown -R www-data:www-data /var/www/




Настройка




Как и в пункте с установкой, настройка также будет разбита по пунктам. Давайте приступим.




Настройка Nginx для NextCloud




Приступим к настройке web-сервера nginx. Создадим файл конфигурации для NextCloud, работать наш сервер будет на порту 80. И так начнем:




sudo nano /etc/nginx/sites-available/nextcloud.conf




Заполняем в соответствии с моим листингом:




server {
    listen 80;
    root /var/www/nextcloud;
    index index.php index.html;
    server_name mynextcloud.ru; # меняем на свой домен
    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }
    location / {
            rewrite ^(/core/doc/[^/]+/)$ $1/index.html;
            rewrite ^ /index.php;
            try_files $uri $uri/ index.php;
    }
    # Устанавливаем максимальный размер загрузки
    client_max_body_size 2048M;
    fastcgi_buffers 64 4K;
    # Указываем расположение страниц 40X.php
    error_page 403 /core/templates/403.php;
    error_page 404 /core/templates/404.php;
location /.well-known {
         location = /.well-known/carddav   { return 301 $scheme://mynextcloud.ru/remote.php/dav/; }
         location = /.well-known/caldav    { return 301 $scheme://mynextcloud.ru/remote.php/dav/; }
         # Все остальное динамически обрабатывается Nextcloud
         location ^~ /.well-known          { return 301 $scheme://mynextcloud.ru/index.php$uri; }
         try_files $uri $uri/ =404;
     }
    # Настройка безопасности
    location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
       deny all;
    }
    location ~ ^/(?:.|autotest|occ|issue|indie|db_|console) {
       deny all;
     }
    location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+).php(?:$|/) {
       include fastcgi_params;
       fastcgi_split_path_info ^(.+.php)(/.*)$;
       try_files $fastcgi_script_name =404;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       fastcgi_param PATH_INFO $fastcgi_path_info;
       # Избегать отправки заголовков безопасности дважды
       fastcgi_param modHeadersAvailable true;
       fastcgi_param front_controller_active true;
       fastcgi_pass unix:/run/php/php8.2-fpm.sock;
       fastcgi_intercept_errors on;
       fastcgi_request_buffering off;
    }
    location ~ ^/(?:updater|ocs-provider)(?:$|/) {
       try_files $uri/ =404;
       index index.php;
    }
    # Добавление заголовка управления кэшем для файлов js и css
    # Убедитесь, что он находится НИЖЕ блока PHP
    location ~* .(?:css|js)$ {
        try_files $uri /index.php$uri$is_args$args;
        add_header Cache-Control "public, max-age=7200";
        # Добавляем заголовки связанные с безопасностью.
        add_header X-Content-Type-Options nosniff;
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Robots-Tag none;
        add_header X-Download-Options noopen;
        add_header X-Permitted-Cross-Domain-Policies none;
        add_header Referrer-Policy no-referrer;
        # Optional: Don't log access to assets
        access_log off;
   }
   # Настройка обработки для файлов данного типа
   location ~* .(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
        try_files $uri /index.php$uri$is_args$args;
        expires 6M; # Управление кэшем
        access_log off; # Отключение логирования
   }
# Настройки для обработки потокового видео
   location ~ .(?:flv|mp4|mov|m4a)$ {
        mp4;
        mp4_buffer_size 20m;
        mp4_max_buffer_size 40m;
        fastcgi_split_path_info ^(.+.php)(/.)$;
        try_files $fastcgi_script_name =404;
        include fastcgi_params;
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        expires max;
        directio 10m;
        limit_rate 1024m;
        limit_rate_after 10m;
   }
}




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




Далее создании ссылку на наш файл:




ln -s /etc/nginx/sites-available/nextcloud.conf /etc/nginx/sites-enabled/




удаляем дефолтный файл конфигурации:




rm /etc/nginx/sites-enabled/default




Проверяем все ли мы правильно сделали:




nginx -t




Если ошибку нет, то перезапускаем nginx




service nginx restart




Настройка PHP




Настроим PHP для работы с NextCloud. В терминале набираем:




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




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




max_execution_time = 300
max_input_time = 600
memory_limit = 512M
post_max_size = 20M
upload_max_filesize = 40M
# Настройка кэширования
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=1
opcache.save_comments=1




Настройка PostgreSQL




Сперва настроим наш PostgreSQL для прослушивания всех внутренних адресов сервера. Для этого открываем следующий файл:




sudo nano /etc/postgresql/14/main/postgresql.conf




Находим и приводим данную строчку к такому виду:




listen_addresses = '*'




Теперь можно создать нашу БД для NextCloud, а также создадим пользователя БД и пароль для него. Подключаемся к postgresql:




sudo -u postgres psql




Создаем базу данных и пользователя для nextcloud




CREATE DATABASE nextcloud; # создаем БД
CREATE USER usernxt WITH PASSWORD 'mypasswords'; # создаем пользователя и вводим пароль для него
ALTER DATABASE nextcloud OWNER TO usernxt;
GRANT ALL PRIVILEGES ON DATABASE nextcloud to usernxt;
exit




Далее переходим по адресу нашего сервера (локальному или внешнему например: http://mynextcloud.ru) и видим первоначальную установку NextCloud




install-nextcloud




Из скриншота видим, что на самом верху нам предлагается придумать учетную запись и пароль администратора nextcloud.




Далее идет поле для выбора каталога с данными. Данное поле отвечает за размещение всех данных пользователей в директории на сервере. Я оставляю без изменений.




Последняя группа полей ответственна за подключение к базе данных. Чуть выше мы создавали и настраивали БД PostgreSQL, вот эти данные и вводим сюда. И нажимаем кнопку продолжить.




Если все сделали правильно, то после обновления окна нам будет предложено войти в свою учетную запись.




nextcloud




Замечание: В панели администратора в пункте общие сведения Вы можете наблюдать различные ошибки и предупреждения от системы. Как их устранить я писал тут.




На этом наша настройка домашнего облака NextCloud завершается. Всем удачи!!!



[endtxt]




. . . .




2021-04-07T20:04:00
NextCloud