Перейти к содержимому
TubePress — бесплатный, самостоятельный & активно поддерживаемый
Медиа и транскодирование

Хранилище и доставка медиа

Локальное хранилище, внешние серверы хранения (S3, FTP, WebDAV) и безопасный медиа-прокси.

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

Хранилище настраивается в разделе /admin/settings?tab=storage. Можно работать полностью с локального диска или добавить бэкенды FTP, S3-совместимые и WebDAV и позволить TubePress заполнять их поочерёдно.

Как TubePress хранит медиафайлы

Загруженные файлы хранятся в каталоге public/uploads/. Каждое видео получает собственную папку — video_folder видео — в которой находится исходный файл, все версии, созданные транскодером, и небольшие ресурсы, необходимые плееру:

public/uploads/
  videos/
    a1b2c3d4.../        one folder per video (video_folder)
      video.mp4         original upload (source)
      video_1080p.mp4   processed source rendition
      video_720p.mp4    transcoded rendition
      video_480p.mp4    transcoded rendition
      timeline.vtt      scrub-preview sprite map
      preview.mp4       hover-preview clip
  thumbnails/           poster images
  watermark/            watermark PNG
  intros/               pre-roll / post-roll clips
  branding/             logo, favicon, background

Транскодер обнаруживает источник, сканируя файлы с наибольшим значением video_<height>p.mp4, и при необходимости обращается к исходному video.mp4, .webm или .ogg. Более низкие версии записываются в ту же папку, поэтому в одном каталоге содержится всё необходимое для видео. Смотрите Транскодирование для получения информации о создании этих версий.

Локальный диск — временная область при использовании CDN. При наличии внешнего хранилища по умолчанию каждая загрузка обрабатывается локально, а затем удаляется с сервера приложений после успешного переноса на бэкенд — в локальном каталоге videos/ хранятся только файлы, которые ещё загружаются или транскодируются.

Внешние серверы хранилища

Система медиахранилищ позволяет зарегистрировать любое количество бэкендов. Новые видео всегда отправляются в хранилище по умолчанию; когда хранилище достигает порога заполнения диска, TubePress автоматически переключает новые загрузки на следующее доступное. Существующие видео продолжают обслуживаться там, где они были записаны, поскольку каждое видео хранит собственный storage_id.

Поддерживаются четыре типа бэкендов — и никаких других:

ТипПрименениеПоля подключения
LocalОдин сервер или начало работыНет — обслуживается из public/uploads
FTPНедорогой VPS для хранения или сидбоксХост, порт (21), пользователь, пароль, удалённый путь, SSL/TLS, пассивный режим
S3AWS S3, DigitalOcean Spaces, Backblaze, MinIOКлюч доступа, секрет, бакет, регион, эндпоинт, префикс
WebDAVNextcloud и другие WebDAV-хостыWebDAV URL, пользователь, пароль

Каждое удалённое хранилище также имеет несколько рабочих настроек:

URL медиаконтента
Публичный HTTP-адрес, по которому посетители загружают файлы — не адрес управления FTP/S3.
Статус
Активен (принимает новые видео), Только чтение (обслуживает только существующие файлы) или Отключён (не в сети).
Максимальное использование диска
50–99% (по умолчанию 90). При достижении порога новые загрузки автоматически переключаются на следующее хранилище.
Защищённые URL
Подписывает медиассылки токеном с истечением срока действия — смотрите Безопасная доставка медиа ниже.

Добавление бэкенда хранилища

  1. Откройте редактор хранилища. Перейдите в /admin/settings?tab=storage и нажмите Add Storage.
  2. Выберите тип и назовите хранилище. Выберите Local, FTP, S3 или WebDAV. Форма автоматически покажет только нужные поля.
  3. Введите URL медиаконтента и учётные данные. Укажите публичный URL медиаконтента, затем хост/ключи/путь для бэкенда. Оставьте поле пароля пустым при редактировании, чтобы сохранить текущий пароль.
  4. Задайте рабочие параметры. Выберите статус, порог максимального использования диска и необходимость подписи URL.
  5. Проверьте и сохраните. При сохранении сначала выполняется тест соединения (и проверка скрипта мониторинга, если он указан). Исправьте любую неудавшуюся проверку, затем сохраните. При необходимости установите это хранилище как хранилище по умолчанию, чтобы новые загрузки направлялись туда.
URL медиаконтента и адрес управления. URL медиаконтента — это то, что загружают браузеры (например, https://cdn.example.com). Это не FTP/S3 эндпоинт — их путаница является наиболее распространённой причиной сбоя воспроизведения после переключения.

Монитор хранилища

Для удалённых бэкендов TubePress может отслеживать состояние диска и работоспособность с помощью небольшого PHP-скрипта, который вы устанавливаете на сервер хранилища. В панели Мониторинг диска редактора хранилища нажмите Скачать скрипт мониторинга (доступен по адресу /api/storage-monitor-download), загрузите его на удалённый сервер, затем вставьте его публичный URL в поле URL скрипта мониторинга.

После подключения редактор отображает текущее использование диска и время последней проверки, а порог автопереключения использует эти данные, чтобы определить заполненность бэкенда. Скрипт защищён ключом, поэтому запрашивать его может только ваша CMS.

Рекомендуется устанавливать на каждый CDN-сервер. Без монитора TubePress не может считывать удалённое использование диска, поэтому автопереключение по максимальному использованию действует только для хранилищ, которые он может измерить.

Безопасная доставка медиа

Когда для хранилища включена функция Защищённые URL, TubePress никогда не выдаёт прямой путь к файлу. Вместо этого он подписывает короткую ссылку с ограниченным сроком действия, перенаправляемую через /media/:

/media/{token}/{expires}/{path}
token
16-символьный HMAC-SHA256 пути и времени истечения, подписанный приватным секретом этого хранилища.
expires
Unix timestamp; после его истечения ссылка возвращает 403. Срок действия по умолчанию — шесть часов.
path
Запрашиваемый файл в каталоге uploads/videos/….

Токен вычисляется повторно и проверяется на стороне сервера при каждом запросе. Для локального хранилища TubePress передаёт файл напрямую с поддержкой HTTP range (что обеспечивает перемотку); для удалённого хранилища он проверяет токен, а затем выдаёт редирект 302 на файл в CDN. Необработанное видео также ограничено по скорости на уровне веб-сервера: редактор хранилища создаёт готовый к вставке сниппет nginx, который ограничивает стриминг после первых нескольких мегабайт, при этом позволяя работникам транскодирования загружать файлы на полной скорости с использованием ключа.

Токены привязаны к пути, времени истечения и секрету. Смена секрета хранилища аннулирует все действующие ссылки, а просроченные ссылки перестают работать самостоятельно. Сочетайте защищённые URL со сниппетом ограничения скорости для создания эффективного барьера против скрапинга. Смотрите Безопасность.

CDN & Cloudflare

TubePress разработан для комфортной работы за Cloudflare. Важны два аспекта:

  • Чанковые загрузки обходят ограничение 100 МБ. Результаты транскодирования передаются обратно в CMS по частям через /api/transcode-upload-chunk, поэтому отдельные запросы остаются ниже бесплатного ограничения Cloudflare в 100 МБ, независимо от размера версии.
  • Долгосрочное кэширование активов с инвалидацией кэша. Статические активы подаются с длинными, неизменяемыми заголовками кэша и инвалидируются версионным запросом при каждом релизе, поэтому прокси может агрессивно кэшировать данные, никогда не выдавая устаревший файл.

Сниппет nginx для каждого хранилища добавляет разумные заголовки expires для видео и опциональное внутреннее расположение /media/, используемое для безопасной локальной доставки, что позволяет напрямую вставить его в конфигурацию вашего сайта.

Следующие шаги

Остались вопросы?

Откройте заявку в панели управления, и наша команда поможет.

Попробовать демо → Скачать TubePress →