Стандарт де-факто для хранения медиа файлов (user uploaded files) - S3. Он отлично поддерживается большинством фреймворков, и это не обязательно Amazon: поменяв в настройках проекта адрес хранилища, можно легко переключиться на использование любого другого облачного провайдера. Собственное S3 хранилище можно создать установив на сервер
MinIO.
Преимущества S3:
- отдельный стабильный сервис, не зависящий от ошибок в коде проекта
- простота масштабирования и оптимизации затрат
- основной сайт и хранилище файлов могут быть расположены на разных серверах: быстрый с небольшим ssd для бэкенда, слабый но с объемными дисками - для файлов
- нативная защита данных - криптографически подписанные ссылки с ограничением по времени
- упрощение проекта: никаких больше причудливых конфигураций nginx для роутинга запросов
- соответствие
The Twelve-Factor App
Если 1 TB достаточно, рекомендую
online.net. За €8.99 евро в месяц они предлагают выделенный сервер с SATA диском и неограниченным трафиком - отличный вариант для MinIO при умеренных нагрузках.
MinIO удобно запускать с помощью Docker, указав что для хранения данных должен использоваться каталог на хост системе. На роль reverse proxy / tls proxy в этом случае лучше всего подходит
Traefik