Установка и настройка Nextcloud + NGINX на Ubuntu

Рассмотренные примеры подойдут для Linux Ubuntu версий 16, 18 и 20.







Подготовка системы




Синхронизируем время.




Устанавливаем утилиту chrony:




apt-get install chrony




Выставляем нужный часовой пояс:




timedatectl set-timezone Europe/Moscow




* в данном примере московское время.




Разрешаем запуск демона chrony:




systemctl enable chrony




Настройка сервера баз данных




В качестве СУБД используем MariaDB.




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




apt-get install mariadb-server




Разрешаем автозапуск и стартуем сервис:




systemctl enable mariadb




systemctl start mariadb




Задаем пароль для суперпользователя mysql:




mysqladmin -u root password




Подключаемся к MariaDB, создаем базу данных и пользователя:




mysql -uroot -p




> CREATE DATABASE nextcloud DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;




> GRANT ALL PRIVILEGES ON nextcloud.* TO nextcloud@localhost IDENTIFIED BY 'nextcloud';




> q




Установка и настройка веб-сервера




PHP




Устанавливаем PHP, PHP-FPM и необходимые для работы nextcloud модули:




apt-get install php php-fpm php-common php-zip php-xml php-intl php-gd php-mysql php-mbstring php-curl php-imagick




Настраиваем php-fpm:




vi /etc/php/7.4/fpm/pool.d/www.conf




* путь к данной папке зависит от установленной версии php. В данном примере это 7.4.




Снимаем комментарии со следующей строки:




env[PATH] = /usr/local/bin:/usr/bin:/bin




Настраиваем php.ini:




vi /etc/php/7.4/fpm/php.ini




opcache.enable=1

opcache.enable_cli=1

opcache.interned_strings_buffer=8

opcache.max_accelerated_files=10000

opcache.memory_consumption=128

opcache.save_comments=1

opcache.revalidate_freq=1




Разрешаем автозапуск php-fpm и перезапускаем его:




systemctl enable php7.4-fpm




systemctl restart php7.4-fpm




* php7.4-fpm зависит от версии установленного php.




NGINX




Nextcloud можно развернуть на NGINX или Apache. В данной инструкции будем использовать первый.




Устанавливаем веб-сервер:




apt-get install nginx




Создаем виртуальный домен и настраиваем его для работы с облачным сервисом:




vi /etc/nginx/conf.d/nextcloud.conf




server {

        listen 80;

        server_name nextcloud.dmosk.ru;

        return 301 https://$server_name$request_uri;

}



server {

        listen 443 ssl;

        server_name nextcloud.dmosk.ru;



        ssl_certificate /etc/nginx/ssl/cert.pem;

        ssl_certificate_key /etc/nginx/ssl/cert.key;



        root /var/www/nextcloud;



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

        client_max_body_size 10G;

        fastcgi_buffers 64 4K;



        rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;

        rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;

        rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;



        index index.php;

        error_page 403 = /core/templates/403.php;

        error_page 404 = /core/templates/404.php;



        location = /robots.txt {

            allow all;

            log_not_found off;

            access_log off;

        }



        location ~ ^/(data|config|.ht|db_structure.xml|README) {

                deny all;

        }



        location / {

                rewrite ^/.well-known/host-meta /public.php?service=host-meta last;

                rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

                rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;

                rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;

                rewrite ^(/core/doc/[^/]+/)$ $1/index.html;

                try_files $uri $uri/ index.php;

        }



        location ~ ^(.+?.php)(/.*)?$ {

                try_files $1 = 404;

                include fastcgi_params;

                fastcgi_param SCRIPT_FILENAME $document_root$1;

                fastcgi_param PATH_INFO $2;

                fastcgi_param HTTPS on;

                fastcgi_pass unix:/run/php/php7.4-fpm.sock;

        }



        location ~* ^.+.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {

                expires modified +30d;

                access_log off;

        }

}




* где nextcloud.dmosk.ru — домен, на котором будет работать сервис; /etc/nginx/ssl — каталог, в котором будут храниться сертификаты; /var/www/nextcloud — каталог с порталом.




Создаем каталог для хранения сертификатов и переходим в него:




mkdir /etc/nginx/ssl




cd /etc/nginx/ssl




Генерируем сертификат:




openssl req -new -x509 -days 1461 -nodes -out cert.pem -keyout cert.key -subj "/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=nextcloud.dmosk.ru/CN=nextcloud"




* данная команда создаст сертификат на 4 года для URL nextcloud.dmosk.ru или nextcloud.




После установки php мог установиться и запуститься apache. Отключаем его:




systemctl stop apache2




systemctl disable apache2




Проверяем конфигурацию nginx, завершаем его автозапуск и перезапускаем сервис:




nginx -t




systemctl enable nginx




systemctl restart nginx




Установка Nextcloud




Устанавливаем пакет unzip:




apt-get install unzip




Заходим на страницу nextcloud и копируем ссылку на скачивание последней версии программы:







Переходим во временную папку и скачиваем исходник для установки, воспользовавшись скопированной ссылкой:




cd /tmp




wget https://download.nextcloud.com/server/releases/nextcloud-19.0.3.zip




Распаковываем скачанный архив:




unzip nextcloud-*.zip




И переносим содержимое архива в каталог /var/www:




mv nextcloud /var/www




Задаем права доступа:




chown -R www-data:www-data /var/www/nextcloud




Открываем браузер и переходим по адресу https://nextcloud.dmosk.ru, где nextcloud.dmosk.ru — адрес облачного сервиса.




Задаем логин и пароль для администратора. В качестве базы данных выбираем MySQL/MariaDB (если предлагается выбор) и вводим в качестве логина, пароля и базы nextcloud.







Завершаем установку.




Оптимизируем работу базы данных:




sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint




Тюнинг после установки




Для корректной работы системы выполним дополнительную настройку. После входа в nextcloud под администратором, переходим в настройки для пользователя:







В разделе «Параметры сервера» переходим в Основные сведения:







В разделе «Проверка безопасности и параметров» мы можем увидеть список проблем:







Рассмотрим процесс решения некоторых из них.




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




Открываем на редактирование файл:




vi /etc/php/7.4/fpm/php.ini




Меняем настройку для memory_limit:




memory_limit = 512M




Перезапускаем php-fpm:




systemctl restart php7.4-fpm




2. В системе не установлены рекомендуемые модули PHP




Данная ошибка устраняется в зависимости от списка модулей, которых не хватает системе. Чаще всего, подходит команда:




dnf install php-<название модуля>




Например:




apt-get install php-gmp php-bcmath




После перезапускаем php-fpm:




systemctl restart php7.4-fpm




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




Для решения проблемы мы должны установить и настроить одно из средств кэширования:




  • APCu
  • Redis
  • Memcached




Мы рассмотрим последний вариант. Для этого выполняем установку модуля для php и сам сервис memcached:




apt-get install memcached php-memcached




После разрешаем его автозапуск:




systemctl enable memcached




Перезапускаем php-fpm:




systemctl restart php7.4-fpm




После этого открываем конфигурационный файл для nextcloud:




vi /var/www/nextcloud/config/config.php




И добавим:




 ...

  'memcache.local' => '\OC\Memcache\Memcached',

  'memcache.distributed' => '\OC\Memcache\Memcached',

  'memcached_servers' =>

  array (

    0 =>

    array (

      0 => 'localhost',

      1 => 11211,

    ),

  ),

  ...




Готово.




Работа с пользователями из UNIX-Shell




В состав nextcloud входит php-скрипт occ, с помощью которого можно управлять сервисом из командной строки Linux.




Добавление пользователя




Создать нового пользователя можно командой:




sudo -u www-data php /var/www/nextcloud/occ user:add admin




* где admin — имя учетной записи.




Сброс пароля




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




sudo -u www-data php /var/www/nextcloud/occ user:resetpassword admin




* где admin — учетная запись пользователя, чей пароль хотим сбросить.




Подключение папки nextcloud по webdav




Мы можем подключить пользовательские данные nextcloud в качестве сетевого диска или раздела. Рассмотрим процесс для Windows и Linux.




Windows




Для начала необходимо включить службу «Веб-клиент». Для этого открываем от администратора командную строку и вводим команды:




sc config webclient start= auto




net start webclient




* первая команда включит автозапуск службы; вторая — запустит ее.




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




net use <Буква диска>: https://<путь до nextcloud>/remote.php/webdav /user:user password




Например, для нашей настройки:




net use N: https://nextcloud.dmosk.ru/remote.php/webdav /user:admin password




* где N — буква сетевого диска; nextcloud.dmosk.ru — адрес нашего сервера; admin — учетная запись, которая была создана при установке системы; password — пароль от пользователя admin.




Ограничение на копирование файла с webdav




В Windows при попытке скопировать большой файл с папки webdav, мы можем получить ошибку «Ошибка 0x800700DF: Размер файла превышает установленное ограничение, сохранение файла невозможно.»:







Для решения проблемы необходимо на клиенте разрешить больший объем для загрузки файлов. Это делается в реестре — ветка HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesWebClientParameters, параметр FileSizeLimitInBytes. Для примера, если задать значение 4294967295 (максимально возможное), то мы получим ограничение в 4 Гб.




Также можно воспользоваться командой:




reg add "HKLMSYSTEMCurrentControlSetServicesWebClientParameters" /v FileSizeLimitInBytes /t REG_DWORD /d 4294967295 /f




* команду нужно запускать в консоли, запущенной от администратора. В данном примере мы задаем также ограничение в 4 Гб.




Linux




Установим клиент davfs2. Действия будут немного различаться в зависимости от дистрибутива Linux.




а) Ubuntu / Debian:




apt-get install davfs2




б) CentOS / Red Hat:




yum install davfs2




Теперь мы можем примонтировать 




mount -t davfs -o noexec https://nextcloud.dmosk.ru/remote.php/webdav /mnt




* в данном примере мы запустим команду на монтирование раздела по webdav в каталог /mnt. Обращение выполняется на наш сервер nextcloud.dmosk.ru.




После ввода команды, система попросит нас ввести логин и пароль от учетной записи Nextcloud:




  Username: user

  ...

  Password:  




После каталог будет примонтирован.




Для постоянного монтирования серез fstab, открываем файл:




vi /etc/fstab




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




https://nextcloud.dmosk.ru/remote.php/webdav/    /mnt    davfs    user,rw,_netdev 0 0




После открываем файл:




vi /etc/davfs2/secrets




И добавляем строку:




/mnt user password




* где /mnt — предполагаемый каталог, куда мы будем монтировать данные; user и password — логин и пароль от учетной записи в Nextcloud.




Монтируем каталог командой:




mount -a




Источник: https://www.dmosk.ru/miniinstruktions.php?mini=nextcloud-ubuntu



2021-06-15T23:46:40
Software