Руководства

Файловый менеджер для MinIO и собственного S3: подключите его к Nubbo

Как подключить к Nubbo своё S3-совместимое хранилище, например MinIO, Ceph или SeaweedFS: endpoint, ключ, регион, CORS и что делать при ошибке.

Nubbo подключается к любому S3-совместимому хранилищу с подписью Signature V4, например MinIO, Ceph или SeaweedFS, на вашем собственном сервере или у другого провайдера. Нужны только URL конечной точки, ключ и регион. Это руководство шаг за шагом проходит мастер Nubbo по обоим путям: автоматическому и с ключом, ограниченным одним bucket.

Что вы получаете

  • Просмотр bucket как обычного диска: папки, режимы отображения, поиск, корзина, метки и избранное.
  • Загрузка и скачивание файлов напрямую между браузером и вашим сервером. Файлы никогда не проходят через серверы Nubbo.
  • Отправка файлов и папок с паролем, сроком действия и лимитом скачиваний, получение файлов в ваш bucket и создание галерей.
  • Ваши ключи хранятся в зашифрованном виде (AES-256-GCM), а bucket можно отключить в любой момент.

Перед началом

Вам нужно S3-совместимое хранилище и аккаунт Nubbo. Каждый подключённый bucket учитывается в лимите вашего тарифа: «Бесплатно» позволяет подключить 2, Personal 5, а в Pro ограничений нет. Endpoint должен быть публичным адресом, доступным и серверам Nubbo, и браузеру, и работать по HTTPS, потому что браузер не загружает содержимое по HTTP со страницы https://nubbo.app. Nubbo отклоняет endpoint, указывающие на частные или локальные адреса. Если на вашем сервере нет регионов, оставьте us-east-1.

Выберите способ подключения

Мастер Nubbo предлагает два пути. Оба заканчиваются одинаково: bucket подключён и готов к загрузкам из браузера.

АвтоматическиС ограниченным ключом
КлючДоступ ко всему аккаунтуОграничен одним bucket
BucketNubbo использует один из ваших или создаёт новыйВы создаёте его заранее
CORSNubbo добавляет правило за васВы добавляете правило сами
Когда выбиратьСамый быстрый способКогда не хотите давать доступ ко всему аккаунту

Автоматическое подключение

Шаг 1: создайте ключ на своём сервере

  1. Убедитесь, что ваш сервер предоставляет API S3 с подписями V4 по публичному адресу HTTPS, например https://s3.your-domain.com.
  2. Создайте ключ, который может создавать bucket и менять их CORS.
  3. Запишите URL конечной точки и регион. Если на вашем сервере нет регионов, используйте us-east-1.

Шаг 2: подключите bucket в Nubbo

  1. В Nubbo откройте раздел Buckets и нажмите Подключить bucket. Выберите Пользовательский S3 / Самостоятельный хостинг и нажмите Продолжить.

    Шаг «Провайдер» мастера Nubbo с выбранным вариантом «Пользовательский S3 / Самостоятельный хостинг» Шаг «Провайдер» мастера Nubbo с выбранным вариантом «Пользовательский S3 / Самостоятельный хостинг»
  2. Выберите Автоматически и нажмите Продолжить.

    Шаг «Способ подключения» с вариантами «Автоматически» и «С ограниченным ключом» Шаг «Способ подключения» с вариантами «Автоматически» и «С ограниченным ключом»
  3. На шаге Ваш ключ вставьте access key, secret key, URL конечной точки и регион. Нажмите Проверить ключ. Nubbo проверит, что ключ работает и что у него есть доступ ко всему аккаунту.

    Шаг «Ваш ключ» для варианта «Пользовательский S3 / Самостоятельный хостинг» с кратким руководством и полями ключа Шаг «Ваш ключ» для варианта «Пользовательский S3 / Самостоятельный хостинг» с кратким руководством и полями ключа
  4. Выберите один из своих bucket и нажмите Использовать этот bucket или выберите Создать новый, введите имя (и выберите регион, если мастер его спросит) и нажмите Создать и подготовить. Nubbo добавит в bucket правило CORS, которое разрешает загрузку и скачивание только из приложения, и сохранит уже существующие правила.

    Шаг «Ваш bucket» со списком bucket и вариантом «Создать новый» Шаг «Ваш bucket» со списком bucket и вариантом «Создать новый»
  5. Просмотрите три проверки, при желании измените Имя в Nubbo и нажмите Завершить. Bucket появится в разделе Buckets, и его можно будет открыть в проводнике.

    Шаг «Готово» с проверками подключения, bucket и CORS Шаг «Готово» с проверками подключения, bucket и CORS

Если Nubbo не может добавить правило CORS с вашим ключом, мастер переведёт вас на шаг CORS. В этом случае следуйте разделу Добавьте правило CORS.

Подключение с ограниченным ключом

Шаг 1: подготовьте bucket и ключ на своём сервере

  1. Создайте bucket на своём сервере (в MinIO, например, командой mc mb).
  2. Создайте ключ с правами на чтение и запись в этот bucket.
  3. Запишите URL конечной точки и регион.

Шаг 2: подключите bucket в Nubbo

  1. В разделе Buckets нажмите Подключить bucket, выберите Пользовательский S3 / Самостоятельный хостинг, а затем С ограниченным ключом.
  2. Вставьте access key, secret key, endpoint и регион. Нажмите Проверить ключ.
  3. Введите точное имя bucket и нажмите Проверить доступ.
  4. Мастер перейдёт на шаг CORS с правилом, которое нужно добавить.

Добавьте правило CORS

Правило CORS позволяет браузеру загружать и скачивать файлы из вашего bucket на https://nubbo.app. Это то же правило, которое мастер показывает на шаге CORS.

Способ настройки CORS зависит от программного обеспечения:

  • MinIO (community edition) не поддерживает CORS на уровне bucket: используется глобальная настройка (MINIO_API_CORS_ALLOW_ORIGIN), которая по умолчанию разрешает любой источник. Если вы её не меняли, делать ничего не нужно: нажмите Готово, проверить, и проверка пройдёт. Если меняли, добавьте https://nubbo.app.
  • Ceph и SeaweedFS поддерживают CORS на уровне bucket через API S3. Примените это правило привычным инструментом (например, aws s3api put-bucket-cors со своим endpoint) или позвольте Nubbo сделать это на автоматическом пути.
[
  {
    "AllowedHeaders": ["*"],
    "AllowedMethods": ["GET", "PUT", "POST", "DELETE", "HEAD"],
    "AllowedOrigins": ["https://nubbo.app"],
    "ExposeHeaders": ["ETag"],
    "MaxAgeSeconds": 3600
  }
]
Шаг «CORS» с правилом, которое нужно добавить в bucket Шаг «CORS» с правилом, которое нужно добавить в bucket

Когда правило готово, вернитесь в Nubbo и нажмите Готово, проверить. В Ceph и SeaweedFS, если ваш ключ может менять CORS, кнопка Попробовать настроить за меня сделает это за вас.

Если что-то пошло не так

Сообщение в NubboЧто делать
«Неверные учётные данные. Проверьте access key и secret access key.»Скопируйте оба ключа ещё раз, без пробелов в начале и в конце.
«Похоже, этот ключ ограничен одним bucket. Можно продолжить по ограниченному пути или создать ключ с полным доступом.»Нажмите «Продолжить с ограниченным ключом» или создайте ключ с доступом ко всему аккаунту и нажмите «Попробовать другой ключ».
«Bucket не найден. Проверьте имя и регион.»Проверьте точное имя bucket и то, что выбранный регион совпадает с регионом bucket.
«У вашего ключа нет прав на создание bucket.»Используйте ключ с полным доступом или создайте bucket в своей панели и нажмите «Он уже создан в моей панели».
«Это имя уже занято у этого провайдера; попробуйте другое.»Имена bucket уникальны в пределах всего провайдера: выберите другое.
«У вашего ключа нет прав на эту настройку.»Добавьте правило CORS вручную, как описано выше.
«Пока не работает. Проверьте правило и попробуйте снова; некоторым провайдерам нужна минута, чтобы его применить.»Убедитесь, что источник указан точно как https://nubbo.app без косой черты в конце, подождите минуту и проверьте снова.
«Этот bucket уже используется.»Этот bucket уже подключён в Nubbo, в вашем аккаунте или в чужом.
«Не удалось подключиться к конечной точке S3. Проверьте URL конечной точки.»Убедитесь, что адрес публичный, использует HTTPS и отвечает из интернета, а не только из вашей сети.
«URL конечной точки недействителен. Проверьте формат.»Введите полный адрес с https:// и без имени bucket. Это сообщение появляется и тогда, когда адрес указывает на частный или локальный IP либо имя не разрешается.
«Время ожидания соединения истекло. Повторите попытку.»Проверьте файрвол сервера и доступность порта извне.

Сколько это стоит

Если вы сравниваете собственное хранилище с провайдером, сопоставьте цены и лимиты в статье S3, R2, Spaces, Wasabi и Backblaze B2: сравнение.

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

Какие собственные хранилища работают с Nubbo?

Любое хранилище, совместимое с API S3 с подписями V4, например MinIO, Ceph или SeaweedFS, а также S3-совместимые провайдеры, которых нет в списке.

Можно ли подключить MinIO в моей локальной сети?

Нет. Endpoint должен быть публичным адресом: Nubbo отклоняет частные и локальные адреса, а браузеру тоже нужно до него достучаться.

Какой регион использовать, если на моём сервере нет регионов?

us-east-1. Это регион по умолчанию для большинства S3-совместимых серверов.

Почему Nubbo не может настроить CORS в MinIO?

Потому что бесплатная редакция MinIO (community edition) не поддерживает CORS на уровне bucket. Она использует глобальную настройку, которая по умолчанию разрешает любой источник, и Nubbo это проверяет.

Источники

Цены и лимиты взяты с официальных страниц ниже. Провайдеры их меняют, поэтому проверьте перед тем, как принимать решение.