Подключение Nextcloud к Storage Server: место, квоты и общий доступ

Опубликовано 5 мин. чтения

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

Nextcloud умеет всё, чего не умеет Storage Server: управлять пользователями, выделять каждому свой объём, открывать доступ к папкам, создавать ссылки с паролем и датой истечения и отдавать файлы в браузер по HTTPS. А дорогим Nextcloud делает как раз место, потому что оно лежит на NVMe-SSD сервера.

Вместе это даёт схему, которая и закрепилась на практике: небольшой сервер для Nextcloud, файлы на Storage Server. В этой статье разобраны оба способа настройки, объяснено, какой из них когда лучше, и названы подводные камни, которые встречаются каждый раз.

Почему эта связка так хорошо подходит

Nextcloud даётStorage Server даёт
учётные записи с паролем и двухфакторной проверкойместо, от 1 до 20 ТБ
квоты для каждого пользователяснимки как второй уровень защиты
ссылки общего доступа с паролем и срокомразмещение отдельно от сервера
отдачу файлов по HTTPS со входом по логинукратно меньшую стоимость за терабайт
версии файлов и корзину100 субаккаунтов под разные задачи

Решающий момент для многих проектов: Storage Server не знает квоты на субаккаунт. Субаккаунт остаётся в своём каталоге, но может занять там весь тариф. Nextcloud решает именно это, потому что там каждый пользователь получает жёсткий лимит.

Два способа, и какой из них лучше

Способ A: Nextcloud обращается к хранилищу сам, через встроенный драйвер SMB или SFTP. В операционную систему вмешиваться не нужно.

Способ B: вы подключаете хранилище в операционной системе как каталог и настраиваете в Nextcloud внешнее хранилище типа «Локальный» на этот каталог.

Берите способ B, если у вас есть права root. Обход через файловую систему заметно быстрее драйвера SFTP в Nextcloud, особенно на множестве мелких файлов, и он лучше переживает сбои сети. Способ A нужен тогда, когда в операционной системе вы ничего менять не можете или не хотите.

Подготовка: отдельный субаккаунт

В личном кабинете создайте субаккаунт только для Nextcloud, с собственным стартовым каталогом, например /nextcloud. Разрешите ему только тот протокол, которым вы действительно пользуетесь. Проверьте заодно в «Настройках доступа», что Внешняя доступность включена, иначе сервер до хранилища не доберётся.

В примерах используются такие значения, замените их на свои:

ПараметрПример значения
Имя узлаu123456.storage.kernelhost.net
Субаккаунтu123456-sub1
Общий ресурс (SMB)backup
Порт SMB445
Порт SFTP23

Способ B: подключить и использовать как локальное хранилище

Сначала подключение. На Debian и Ubuntu:

apt install -y cifs-utils
mkdir -p /mnt/storage
printf 'username=u123456-sub1\npassword=ВАШ_ПАРОЛЬ\n' > /etc/samba/storage.cred
chmod 600 /etc/samba/storage.cred

Затем запись в /etc/fstab, чтобы подключение переживало перезагрузку:

//u123456.storage.kernelhost.net/backup /mnt/storage cifs credentials=/etc/samba/storage.cred,uid=www-data,gid=www-data,file_mode=0660,dir_mode=0770,seal,_netdev,nofail 0 0

Три важные опции: uid=www-data даёт веб-серверу право на запись, seal шифрует передачу средствами SMB 3, а _netdev вместе с nofail не дают серверу зависнуть при загрузке, если хранилище в этот момент не отвечает.

mount -a
sudo -u www-data touch /mnt/storage/test && echo "Доступ на запись в порядке"

После этого включите в Nextcloud приложение «External storage support» и впишите хранилище, либо в интерфейсе в разделе Администрирование, Внешние хранилища, либо в командной строке:

sudo -u www-data php occ app:enable files_external
sudo -u www-data php occ files_external:create Данные local null::null -c datadir=/mnt/storage
sudo -u www-data php occ files_external:list

Папка «Данные» теперь появляется у тех пользователей, которым вы её откроете. Доступ вы задаёте для каждого пользователя или для группы, чтобы не каждый видел всё.

Способ A: внешнее хранилище прямо в Nextcloud

Без прав root обойтись можно и без подключения в системе. Для SMB понадобится соответствующее расширение PHP:

apt install -y smbclient php-smbclient
systemctl restart php8.3-fpm

Потом в разделе Администрирование, Внешние хранилища создайте запись:

ПолеЗначение
Имя папкиДанные
Внешнее хранилищеSMB / CIFS
Хостu123456.storage.kernelhost.net
Общий ресурсbackup
Удалённый подкаталогnextcloud
Имя пользователяu123456-sub1
Парольпароль субаккаунта

Для SFTP выберите вместо этого тип «SFTP», укажите в поле «Хост» u123456.storage.kernelhost.net, а в поле порта 23. Это самая частая причина ошибок на этом пути: Nextcloud предлагает 22, а наше хранилище слушает 23.

Как выдать квоты пользователям

Теперь часть, которая оправдывает всю схему. В разделе Администрирование, Пользователи вы задаёте объём для каждой учётной записи, например 50 ГБ. Или в командной строке:

sudo -u www-data php occ user:setting fotograf1 files quota "50 GB"

Nextcloud засчитывает в эту квоту версии файлов и корзину. Так и должно быть, но это часто удивляет: кто получил 50 ГБ и загрузил 50 ГБ, из-за старых версий быстро занимает больше, чем рассчитывал. Для учётных записей, которые больше заменяют файлы, чем добавляют, стоит ограничить срок хранения версий.

Ссылки общего доступа для своего сайта

Для Nextcloud внешнее хранилище это такая же папка, как любая другая, поэтому общий доступ работает без изменений. Ссылка с паролем и датой истечения создаётся в три щелчка, и файл при этом отдаёт Nextcloud, а не хранилище напрямую. Ваши данные доступа к хранилищу, таким образом, никогда не покидают сервер.

Это как раз тот кусок, которого Storage Server сам по себе не даёт. Кто держит сайт с зоной загрузок, получает управление пользователями, права и отдачу файлов в одном месте, причём программировать ничего не нужно. Как выглядит вариант без Nextcloud, описано в статье Storage Server для своего сайта.

Четыре подводных камня, которые встречаются каждый раз

  • Каталогу данных на хранилище не место. Технически возможно, на практике рискованно: Nextcloud пишет туда ещё и файлы блокировок и промежуточные состояния, и короткий сбой сети парализует весь экземпляр. Как внешнее хранилище сбой затрагивает только одну папку.
  • База данных остаётся локальной. Всегда. На хранилище место файлам, и ничему больше.
  • Настройте Redis. Без кэша для блокировок файлов Nextcloud с внешним хранилищем заметно замедляется, потому что каждая блокировка идёт через базу данных.
  • Порт 23, а не 22. Для SFTP Nextcloud предлагает 22. Наше хранилище слушает 23, а сообщение об ошибке подсказывает мало.

Какой сервер и какой тариф

Для самого Nextcloud достаточно небольшой машины. Файлы ведь лежат в другом месте, сервер только управляет: от нескольких человек до нескольких десятков активных пользователей хватает от 4 до 8 ГБ ОЗУ, если работает Redis и настроено фоновое задание. Инструкция по установке есть в статье Установка Nextcloud на собственном сервере.

С хранилищем выбор зависит от нужного места:

ТарифМестоСнимкиЦена
Storage-11 ТБ10 плюс 10 автоматических9,99 EUR
Storage-25 ТБ20 плюс 20 автоматических29,99 EUR
Storage-310 ТБ30 плюс 30 автоматических39,99 EUR
Storage-420 ТБ40 плюс 40 автоматических69,99 EUR

Все Storage Server стоят в Германии, говорят на SMB, SFTP, WebDAV и не только, допускают до 100 субаккаунтов и приносят снимки с собой. Без платы за установку, PrePaid, без минимального срока. Растёт потребность в месте, вы переходите на тариф побольше, не трогая данные.

Частые вопросы

Почему не взять просто большой сервер с большим диском?
Потому что место на сервере с NVMe-SSD стоит в разы дороже. Самому Nextcloud нужно мало места и мало мощности, основной объём приходится на файлы. Поэтому небольшой сервер плюс Storage Server обычно заметно дешевле большого сервера с большим диском.
Что выбрать, SMB или SFTP?
Если на сервере с Nextcloud у вас есть права root, подключите хранилище по SMB в файловую систему и настройте в Nextcloud внешнее хранилище типа «Локальный» на этот каталог. Так быстрее и стабильнее, чем через драйвер SFTP в Nextcloud, который на множестве мелких файлов заметно тормозит.
Можно ли выделить каждому пользователю свой объём?
Да, именно для этого вся схема и нужна. Сам Storage Server не знает квоты на субаккаунт, а Nextcloud знает. В управлении пользователями вы задаёте объём для каждой учётной записи, и Nextcloud следит за его соблюдением.
Можно ли положить данные прямо на хранилище, а не подключать его как внешнее?
Технически да, тогда каталог данных Nextcloud лежит на подключённом хранилище. Но так делать не стоит: Nextcloud пишет туда ещё и файлы блокировок, превью и промежуточные состояния, и при коротком сбое сети встаёт весь экземпляр. Как внешнее хранилище сбой затрагивает только один каталог.
Работают ли ссылки общего доступа для файлов на Storage Server?
Да, для Nextcloud внешнее хранилище это такой же каталог, как любой другой. Общий доступ с паролем и датой истечения работает точно так же, и файл при этом отдаёт Nextcloud, а не напрямую хранилище.
Насколько это быстро?
На больших файлах ограничением становится канал вашего сервера, а не хранилище. На множестве мелких файлов к каждому обращению добавляется время прохождения по сети, поэтому превью должны лежать в локальном кэше Nextcloud, а не на внешнем хранилище.
Что будет, если хранилище на короткое время недоступно?
Если оно подключено как внешнее хранилище, Nextcloud помечает каталог как недоступный, а остальное работает дальше. Если же там лежит весь каталог данных, экземпляр встаёт. Это и есть главный аргумент в пользу варианта с внешним хранилищем.
Нужна ли база данных на Storage Server?
Нет, ни в каком случае. База данных остаётся на сервере, на быстром локальном накопителе. На Storage Server место только для файлов.
Сколько пользователей выдержит небольшой сервер?
От нескольких человек до нескольких десятков активных пользователей спокойно держит сервер с объёмом ОЗУ от 4 до 8 ГБ, если настроены Redis и регулярное фоновое задание. Файлы всё равно лежат в другом месте, сервер только управляет.
Сколько стоит такая связка?
Небольшой сервер для Nextcloud плюс Storage Server от 9,99 евро в месяц за 1 ТБ. Storage-2 с 5 ТБ стоит 29,99, Storage-3 с 10 ТБ 39,99 и Storage-4 с 20 ТБ 69,99. Всё без платы за установку, на условиях PrePaid и без минимального срока.

Nextcloud Storage Server Externer Speicher SMB SFTP Quota Freigaben