Хранилище и доставка медиа
Локальное хранилище, внешние серверы хранения (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. Более низкие версии записываются в ту же папку, поэтому в одном каталоге содержится всё необходимое для видео. Смотрите Транскодирование для получения информации о создании этих версий.
videos/ хранятся только файлы, которые ещё загружаются или транскодируются.Внешние серверы хранилища
Система медиахранилищ позволяет зарегистрировать любое количество бэкендов. Новые видео всегда отправляются в хранилище по умолчанию; когда хранилище достигает порога заполнения диска, TubePress автоматически переключает новые загрузки на следующее доступное. Существующие видео продолжают обслуживаться там, где они были записаны, поскольку каждое видео хранит собственный storage_id.
Поддерживаются четыре типа бэкендов — и никаких других:
| Тип | Применение | Поля подключения |
|---|---|---|
| Local | Один сервер или начало работы | Нет — обслуживается из public/uploads |
| FTP | Недорогой VPS для хранения или сидбокс | Хост, порт (21), пользователь, пароль, удалённый путь, SSL/TLS, пассивный режим |
| S3 | AWS S3, DigitalOcean Spaces, Backblaze, MinIO | Ключ доступа, секрет, бакет, регион, эндпоинт, префикс |
| WebDAV | Nextcloud и другие WebDAV-хосты | WebDAV URL, пользователь, пароль |
Каждое удалённое хранилище также имеет несколько рабочих настроек:
Добавление бэкенда хранилища
- Откройте редактор хранилища. Перейдите в
/admin/settings?tab=storageи нажмите Add Storage. - Выберите тип и назовите хранилище. Выберите Local, FTP, S3 или WebDAV. Форма автоматически покажет только нужные поля.
- Введите URL медиаконтента и учётные данные. Укажите публичный URL медиаконтента, затем хост/ключи/путь для бэкенда. Оставьте поле пароля пустым при редактировании, чтобы сохранить текущий пароль.
- Задайте рабочие параметры. Выберите статус, порог максимального использования диска и необходимость подписи URL.
- Проверьте и сохраните. При сохранении сначала выполняется тест соединения (и проверка скрипта мониторинга, если он указан). Исправьте любую неудавшуюся проверку, затем сохраните. При необходимости установите это хранилище как хранилище по умолчанию, чтобы новые загрузки направлялись туда.
https://cdn.example.com). Это не FTP/S3 эндпоинт — их путаница является наиболее распространённой причиной сбоя воспроизведения после переключения.Монитор хранилища
Для удалённых бэкендов TubePress может отслеживать состояние диска и работоспособность с помощью небольшого PHP-скрипта, который вы устанавливаете на сервер хранилища. В панели Мониторинг диска редактора хранилища нажмите Скачать скрипт мониторинга (доступен по адресу /api/storage-monitor-download), загрузите его на удалённый сервер, затем вставьте его публичный URL в поле URL скрипта мониторинга.
После подключения редактор отображает текущее использование диска и время последней проверки, а порог автопереключения использует эти данные, чтобы определить заполненность бэкенда. Скрипт защищён ключом, поэтому запрашивать его может только ваша CMS.
Безопасная доставка медиа
Когда для хранилища включена функция Защищённые URL, TubePress никогда не выдаёт прямой путь к файлу. Вместо этого он подписывает короткую ссылку с ограниченным сроком действия, перенаправляемую через /media/:
/media/{token}/{expires}/{path}403. Срок действия по умолчанию — шесть часов.uploads/videos/….Токен вычисляется повторно и проверяется на стороне сервера при каждом запросе. Для локального хранилища TubePress передаёт файл напрямую с поддержкой HTTP range (что обеспечивает перемотку); для удалённого хранилища он проверяет токен, а затем выдаёт редирект 302 на файл в CDN. Необработанное видео также ограничено по скорости на уровне веб-сервера: редактор хранилища создаёт готовый к вставке сниппет nginx, который ограничивает стриминг после первых нескольких мегабайт, при этом позволяя работникам транскодирования загружать файлы на полной скорости с использованием ключа.
CDN & Cloudflare
TubePress разработан для комфортной работы за Cloudflare. Важны два аспекта:
- Чанковые загрузки обходят ограничение 100 МБ. Результаты транскодирования передаются обратно в CMS по частям через
/api/transcode-upload-chunk, поэтому отдельные запросы остаются ниже бесплатного ограничения Cloudflare в 100 МБ, независимо от размера версии. - Долгосрочное кэширование активов с инвалидацией кэша. Статические активы подаются с длинными, неизменяемыми заголовками кэша и инвалидируются версионным запросом при каждом релизе, поэтому прокси может агрессивно кэшировать данные, никогда не выдавая устаревший файл.
Сниппет nginx для каждого хранилища добавляет разумные заголовки expires для видео и опциональное внутреннее расположение /media/, используемое для безопасной локальной доставки, что позволяет напрямую вставить его в конфигурацию вашего сайта.
Следующие шаги
Остались вопросы?
Откройте заявку в панели управления, и наша команда поможет.