Перейти к содержимому
Berth

Аудиокниги в S3-совместимом хранилище

Обновлено 27 октября 2026 г.

Berth может хранить книги в любом S3-совместимом бакете вместо диска сервера. Сервер держит библиотеку и решает, кому можно слушать, а само аудио может идти из бакета или CDN прямо на телефоны.

Зачем объектное хранилище

Поддерживаемые провайдеры

Подходит любой S3-совместимый сервис. В админке есть пресеты, которые заполняют endpoint и регион для AWS S3, Cloudflare R2, Yandex Cloud, Backblaze B2, Bunny Storage и MinIO. Для Cloudflare R2 есть ещё и мастер, который сам создаёт бакет и ключи.

Подключение бакета

  1. Создайте в консоли провайдера бакет и ключ доступа с правами на чтение и запись в него.
  2. Добавьте бакету правило CORS: origin — ваш адрес Berth, методы GET, HEAD, PUT, заголовки *. Админка загружает файлы из браузера прямо в бакет, поэтому это правило обязательно.
  3. В админке Berth откройте настройки хранилищ, добавьте хранилище, выберите «S3-бакет» и возьмите пресет или заполните поля сами.
  4. Укажите название, бакет, endpoint (пусто для AWS), регион (us-east-1, если пусто), ID ключа доступа и секретный ключ. Для MinIO включите адреса в стиле path; для IP-адреса или localhost они включаются сами.
  5. Нажмите «Проверить»: Berth запишет, прочитает и удалит небольшой тестовый файл и проверит CORS с адресов вашего сервера.
  6. Сделайте хранилище хранилищем по умолчанию: новые книги попадают в хранилище по умолчанию.

Ключи хранятся зашифрованными серверным ключом secret.key и больше никогда не показываются.

Как аудио попадает на телефоны

Без подписи файлы за CDN открываются по ссылке, которая никогда не истекает. Их имена — хеши SHA-256, угадать их нельзя, но отзыв устройства не закрывает ссылки, которые у него уже есть. С токен-аутентификацией Bunny CDN ссылки истекают через 6 часов.

РежимКак работаетКогда использовать
Прямые ссылки (по умолчанию)Телефоны получают подписанную ссылку на бакет, которая действует 15 минутСнимает нагрузку с сервера
Через серверСервер стримит файл; ссылки действуют 6 часов и сразу перестают работать, когда устройство отозваноТелефоны не могут достучаться до бакета
Через CDNСсылки ведут на CDN или публичный адрес бакетаБыстрее всего, когда у бакета есть CDN

Полезно знать

Вопросы

Нужен ли Berth публичный доступ к бакету?

Нет. В режиме по умолчанию бакет остаётся закрытым, а телефоны получают подписанные ссылки, которые истекают через 15 минут.

Проверка пишет, что бакет не принимает загрузки из браузера. Что делать?

Добавьте правило CORS: origin — адрес Berth, методы GET, HEAD, PUT, заголовки *. Затем запустите проверку ещё раз.