Nextcloud увеличить размер загружаемого файла

Обновлено: 07.07.2024

NextCloud - набор инструментов с открытым исходным кодом для создания личного облачного хранилища.

Возможности NextCloud

  • Бесплатно и с открытым исходным кодом.
  • Сквозное шифрование, то есть файлы могут быть зашифрованы на клиентских устройствах перед загрузкой на сервер, поэтому даже если кто-то получит доступ к вашему серверу, он не сможет прочитать ваши файлы.
  • Может быть интегрирован с пакетом онлайн-офиса (Collobora Online , OnlyOffice), что даст возможность создавать и редактировать файлы doc, ppt, xls прямо из NextCloud.
  • Магазин приложений содержит сотни приложений для расширения функциональности (например, приложение календарь, приложение контактов, приложение для создания заметок, приложение для видеоконференций и т. д.).
  • Приложения-клиент для синхронизации доступны для систем Linux, macOS, Windows, iOS и Android.

Инструкция по установке довольно обширная, хоть и не сложная, но если вы хотите установить NextCloud максимально легким способом, то тогда вам стоит воспользоваться нашей предыдущей статьей по установки NextCloud с помощью snap пакета: NextCloud: Создаем свое облачное хранилище.

Установка NextCloud (Apache, MariaDB)

Установим Apach и MariaDB:

Установим необходимые PHP модули:

Войдем в консоль базы данных. Поскольку MariaDB теперь использует плагин unix_socket для аутентификации входа пользователя, нет необходимости вводить пароль root MariaDB. Нам просто нужно добавить к команде mysql префикс sudo:

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

Выходим из консоли базы данных:


В самом верху следующей команды добавляем название своего домена:


Создаём виртуальный хост Apache для Nextcloud:

Меняем владельца каталога:

Устанавливаем NextCloud, задаем нашу базу данных, создаем администратора:

Добавляем свой домен в базу доверенных доменов NextCloud:

Шифрование домена NextCloud:

Не забудьте открыть порты 80 и 443:

Удаление index.php с домена NextCloud

Убираем index.php , тем самым делая адрес более красивым.

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

Пример на скриншоте.


Затем обновляем .htaccess:

Известные ошибки

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

В конце, под блоком SSL добавляем следующий параметр:



И перезапускаем веб-сервер:

Решение ошибки: Не настроена система кеширования. Для увеличения производительности сервера, по возможности, настройте memcache. Более подробная информации

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


Перезапускаем Apache и PHP-FPM:

Увеличиваем предел размера загружаемого файла

При использовании модулей Apache PHP, по умолчанию задан предел загружаемого файла в 2 МБ. Обходим данное ограничение, увеличиваем предел загружаемого файла по своему усмотрению (в этом примере мы задаем предел в 5024 МБ):

Решение ошибки: В базе данных отсутствуют некоторые индексы. Из-за того, что добавление индексов в большие таблицы могло занять некоторое время, они не добавлялись автоматически

Решение ошибки: В некоторых столбцах базы данных отсутствует преобразование в большой тип int. Из-за того, что изменение типов столбцов в больших таблицах могло занять некоторое время, они не менялись автоматически

Переводим NextCloud в режим обслуживания:

И вводим следующую команду:

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

После этого Проверка безопасности и параметров, скорее всего не выявит проблем.

N extcloud – это один из самых попу­ляр­ных набо­ров про­грамм­но­го обес­пе­че­ния с откры­тым исход­ным кодом. Вы може­те исполь­зо­вать его для хра­не­ния ваших лич­ных фай­лов, кон­так­тов, изоб­ра­же­ний, музы­ки и мно­гое дру­гое, и это поз­во­ля­ет вам полу­чить к ним доступ или поде­лить­ся им с дру­зья­ми в любое вре­мя. Это попу­ляр­ная аль­тер­на­ти­ва дру­го­му широ­ко исполь­зу­е­мо­му фай­ло­во­му хостин­гу с име­нем ownCloud.

уста­но­ви­те репо­зи­то­рий epel.

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

Вклю­чи­те Nginx для запус­ка при загруз­ке и запус­ка служ­бы, используя:

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

Если вы хоти­те выбрать Apache вме­сто Nginx, вы може­те про­пу­стить уста­нов­ку nginx, и уста­но­вить Apache.

Вклю­чи­те Apache, что­бы начать загруз­ку и запу­стить служ­бу, используя:

Установите PHP 7

Вер­сия PHP по умол­ча­нию для CentOS 7 – это PHP 5.4, а для Nextcloud 14 тре­бу­ет­ся PHP 7 или выше, на этом эта­пе мы уста­но­вим PHP вер­сии 7.

Установите пакеты репозитория Remi и EPEL :

Включение Remi PHP 7 repo:

и уста­но­ви­те PHP 7 и несколь­ко PHP-моду­лей, тре­бу­е­мых Nextcloud, выпол­нив сле­ду­ю­щую команду:

yum install php php-mysql php-pecl-zip php-xml php-mbstring php-gd php-fpm php-intl

Заме­ни­те зна­че­ния на

Затем изме­ни­те раз­ре­ше­ние для ката­ло­га сеан­сов PHP , вам нуж­но про­пу­стить этот шаг, если вы хоти­те исполь­зо­вать Apache вме­сто Nginx.

Нако­нец, пере­за­пу­сти­те php-fpm

Установка сервера базы данных MariaDB

На этом эта­пе MariaDB запу­щен, и теперь мы созда­дим пароль для поль­зо­ва­те­ля root. Выпол­ни­те сле­ду­ю­щую коман­ду, что­бы создать пароль root, уда­лить тесто­вую базу дан­ных, уда­лить ано­ним­но­го поль­зо­ва­те­ля, а затем пере­за­гру­зить эти привилегии.


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

Создание базы данных.

mysql -uroot -p -e " CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" mysql -uroot -p -e " GRANT ALL on nextcloud.* to nextcloud@localhost identified by 'M0d1fyth15'"

Шаг 7. Настройка веб-сервера.

На преды­ду­щем шаге вы выбра­ли веб-сер­вер для уста­нов­ки, теперь вам нуж­но его настроить.

Конфигурация Nginx

Если вы хоти­те исполь­зо­вать nginx, создай­те файл кон­фи­гу­ра­ции для бло­ка сер­ве­ра nginx

add_header X - Permitted - Cross - Domain - Policies none ; gzip_proxied expired no - cache no - store private no_last_modified no_etag auth ; gzip_types application / atom + xml application / javascript application / json application / ld + json application / manifest + json application / rss + xml application / vnd . geo + json application / vnd . ms - fontobject application / x - font - ttf application / x - web - app - manifest + json application / xhtml + xml application / xml font / opentype image / bmp image / svg + xml image / x - icon text / cache - manifest text / css text / plain text / vcard text / vnd . rim . location . xloc text / vtt text / x - component text / x - cross - domain - policy ;

^ / ( ? : build | tests | config | lib | 3rdparty | templates | data ) /

^ / ( ? : \ . | autotest | occ | issue | indie | db_ | console )

^ / ( ? : index | remote | public | cron | core / ajax / update | status | ocs / v [ 12 ] | updater / . + | ocs - provider / . + ) \ . php ( ? : $ | / ) fastcgi_param SCRIPT_FILENAME $document_root $fastcgi_script_name ;

^ / ( ? : updater | ocs - provider ) ( ? : $ | / ) Добав­ле­ние заго­лов­ка cache control для фай­лов js и css

\ . ( ? : css | js | woff | svg | gif ) $ add_header Cache - Control “ public , max - age = 15778463 ” ; add_header X - Permitted - Cross - Domain - Policies none ;

\ . ( ? : png | html | ttf | ico | jpg | jpeg ) $ Необя­за­тель­но : не реги­стри­ро­вать доступ к дру­гим ресур­сам

Про­верь­те кон­фи­гу­ра­ци­он­ный файл nginx, затем пере­за­пу­сти­те службу

Конфигурация Apache

Создай­те файл кон­фи­гу­ра­ции вир­ту­аль­но­го хоста для доме­на, кото­рый вы хоти­те исполь­зо­вать для раз­ме­ще­ния Nextcloud.

Перей­ди­те на офи­ци­аль­ный сайт Nextcloud и загру­зи­те послед­нюю ста­биль­ную вер­сию приложения

Рас­па­куй­те загру­жен­ный zip-архив в кор­не­вой ката­лог доку­мен­та на вашем сервере

Если вы выбра­ли Apache, то вам нуж­но уста­но­вить раз­ре­ше­ние для поль­зо­ва­те­ля Apache

На этом эта­пе мы пока­жем вам, как уста­но­вить сер­ти­фи­кат SSL из Let’s Encrypt.

Вам будет пред­ло­же­но ука­зать ваш адрес элек­трон­ной почты, тогда вам нуж­но согла­сить­ся с ToS, что­бы про­дол­жить уста­нов­ку сертификата.

Если при запро­се сер­ти­фи­ка­та нет про­блем, Certbot авто­ма­ти­че­ски отре­дак­ти­ру­ет ваш суще­ству­ю­щий блок сер­ве­ра nginx для уста­нов­ки сертификата.

И вот что, с послед­не­го шага этой ста­тьи мы успеш­но уста­но­ви­ли Nextcloud 14 на вашем CentOs 7, и вы може­те вой­ти в систе­му с учет­ны­ми дан­ны­ми поль­зо­ва­те­ля ваше­го администратора

Zarom

Ну для начала надо определить что значит маленькая скорость, и что ее ограничивает.
Канал у вас 1гигабит.
Значит теоретически по нему можно прокачать в районе 120мегабайт/с.
Практически меньше - зависит от настроек сети, типа трафика, используемых протоколов.
К тому же канал может быть загружен.
В общем нормальная скорость передачи в среднем для гигабитного канала это 50-60мб/сек.
Ваши значения вроде такие и есть.

Так же следует понимать что вы не просто трафик гоняете вы его с диска читаете - далеко не каждый диск сможет выдать те же 30мб/с в любой ситуации.
Все зависит от нагрузки, размера обращений, соотношения записи к чтению, размера кластера,

Поэтому определите какая скорость вам нужна, насколько реальная отличается от нужной.
И тогда уже можно думать что именно стоит сделать.

Спасибо за развернутый ответ. Диски ссд. Я понимаю что данные проходят через пирог технологий и протоколов, но не думал, что настолько режет скорость.
Для примера я беру обычную smb-шару и монтирую ее убунтой получаю нормальную скорость, а подключаю через некстклауд получаю в 2-3 раза меньше.

Jump

Тот же самый SSD - среднестатистический может обеспечить скорость при чтении мелкими блоками в районе 20мб/с, а топовые модели до 80мб/с!

И это только диски.
А передача по сети. В некоторых протоколах служебной информации передается в два, четыре раза больше чем пользовательской. Например чтобы передать фотку размером мегабайт, по сети будет передаваться четыре мегабайта служебного трафика и собственно мегабайт фотки.

Далее - неизвестна нагрузка на канал.
Далее - некстклауд кушает процессор и требует памяти для обработки - так что есть вероятность что будет упираться и в это.

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

Я поднял на убунте и подключил прямым соединением с обычным пк. Тестовый файл в виде 4гб образа.
Штатной утилитой smbclient я гоняю этот файл на предельных для физической среды скоростях, а при подключении через nextcloud external dev -> smb получаю меньше. Я специально упростил все по максимуму, чтоб посмотреть реальную скорость одного соединения. Проц на тестовой машине i7/16гб ОЗУ.

Jump

Во вторых вы гоняете огромный файл - 4гб это линейное чтение.
А некстклоуд бъет файлы на мелкие порции и передает их в общем то почти случайным образом. Соответственно в разы отличается нагрузка на диск.

Рассмотренные примеры подойдут для 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, создаем базу данных и пользователя:

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

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

Устанавливаем 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. В данном примере это 7.4.

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

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

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

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

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;
>

^/(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 ^(/core/doc/[^\/]+/)$ $1/index.html;
try_files $uri $uri/ index.php;
>

* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ expires modified +30d;
access_log off;
>
>

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

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

systemctl stop apache2

systemctl disable apache2

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

systemctl enable nginx

systemctl restart nginx

Установка Nextcloud

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

apt-get install unzip

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

Ссылка для скачивания nextcloud

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

* на момент обновления инструкции последняя версия была 22.

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

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

mv nextcloud /var/www

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

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

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

Задаем параметры для подключения к базе данных

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

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

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

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

Переходим в настройку Nextcloud

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

Переходим к общим сведениям

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

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

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

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

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

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

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. Не настроена система кеширования

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

Мы рассмотрим два последних варианта.

Redis

Устанавливаем сам Redis Server и модуль php:

apt-get install redis-server php-redis

* в случае установки сервера Redis на отдельный сервер, необходимо выполнить на сервере Nextcloud только установку php-redis.

systemctl restart php7.4-fpm

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

Memcached

Выполняем установку модуля для php и сам сервис memcached:

apt-get install memcached php-memcached

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

systemctl enable memcached

systemctl restart php7.4-fpm

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

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

Для решения проблемы открываем конфигурационный файл nextcloud:

Работа с пользователями из 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

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

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

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

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

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

Ошибка при копировании большого файла с папки webdav

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

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

reg add "HKLM\SYSTEM\CurrentControlSet\Services\WebClient\Parameters" /v FileSizeLimitInBytes /t REG_DWORD /d 4294967295 /f

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

Linux

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

а) Ubuntu / Debian:

apt-get install davfs2

б) CentOS / Red Hat:

yum install davfs2

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

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

Username: user
.
Password:

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

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

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

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

/mnt user password

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

Запускаем и создаем сервис для Apache Web server’s используя systemctl:

2. Установка и настройка MariaDB для Nextcloud

Выполним команду для установки MariaDB.

Запуск и создание сервиса MariaDB.

Выполним начальную конфигурацию базы данных, установим root пароль для MaraiDB и настроим другие параметры, удалим тестовую базу данных и удаленный root логин.

Создадим базу данных с именем nextcloud_db. Подключаемся из терминала к консоли mysql и выполняем команды

Welcome to the MariaDB monitor . Commands end with ; or \ g . Copyright ( c ) 2000 , 2015 , Oracle , MariaDB Corporation Ab and others . Type 'help;' or '\h' for help . Type '\c' to clear the current input statement . MariaDB [ ( none ) ] & gt ; create database nextcloud_db ;

Создадим пользователя nxtuser и выдадим все привелегии ему для базы nextcloud_db

4. Скачиваем последнюю версию NextCloud

Замечание: необходимо убедиться что пакеты wget и bzip2 установлены на вашем сервере, в противном случаи выполните следующие команды для их установки.

Установливаем необходимые атрибуты для директории и файлов

5. открытие необходимых портов в firewall для nextcloud

В случаи если firewalld используется в качестве основного firewall используем следующие команды.

Переводим selinux в permissive режим

Проверяем/изменяем файл /etc/sysconfig/selinux

6. Зайдем на наш nextCloud используя web браузер

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

В моем случаи доступ по IP 192.168.56.15


7. Изменяем лимит для загрузки файлов в nextcloud (upload file size)

По-умолчанию максимальный размер, который можно загрузить 2MB, если есть потребность загружать файлы более 2MB в такком случаи необходимо изменить некоторые параметры в файле /etc/php.ini, к примеру установим 30 MB

Перезагружаем web сервер

8. Настройки безопастности

Проверить в файле /var/www/owncloud/data/.htaccess наличие:

9. Настройка клиентов по протоколу WebDAV

Если необходимо, можно использовать WebDAV для подключения сетевого диска, вашего пользователя nextcloud


Для Windows клиентов.

Для начала необходимо внести правки в реестр, изменить данные для обработки политики авторизации:

Читайте также: