--- title: Яндекс.Диск как хостинг картинок description: Использование возможностей Яндекс.Диска для хостинга картинок keywords: [яндекс.диск, хостинг картинок, yandex disk, image hosting, hosting] draft: true --- # Яндекс.Диск как хостинг картинок Я искал простой и надежный хостинг картинок для блога. Чтобы хранил картинки годами, давал прямые ссылки и не закрылся в течение хотя бы пары лет. Раньше я использовал в качестве хостинга фотографий для блога сервис Яндекс.Фотки. С его помощью можно было получить картинки разных разрешений для адаптивной верстки. Сервис работал уже продолжительно время, у него была большая аудитория, им было удобно пользоваться. Но в один момент Яндекс решил закрыть сервис. Вместо него появился Яндекс.Диск, а фотоальбомы теперь были представлены в виде коллекций. Так же просто как раньше уже было не получить прямых ссылок на загруженные фотки. Яндекс.Диском я пользовался и до этого. Я знал, что он поддерживает протокол WebDav. Это удобный протокол, с помощью которого можно подключить Диск в виде жесткого диска себе в систему. Одним из первых вариантов было написать прокси для того, чтобы использовать именно WebDav и проксировать к нему запросы. У меня был бы web-server, который принимал бы http-запросы и направлял их Диску. С этой мыслью я и пошел читать документацию к Яндекс.Диску. И в самом конце наше жемчужину. Оказывается, именно для изображений Диск умеет создавать превью. Можно просто передать нужное разрешений и диск отдаст картинку. Это было то, что нужно. Но для публичного использования было одно препятствие. Для доступа к данным нужно авторизоваться. Делается это с помощью http-заголовка `Authorization`. Получалось, что все равно нужен прокси, чтобы скрыть авторизационные данные. Прокрутив решения с отдельным приложением, которое бы подставляло в запросы заголовок `Authorization`, я вспомнил о сервере [Caddy](caddy). С его помощью прокси настраивается буквально в три строки. ``` preview.vakhrushev.me { proxy /img https://webdav.yandex.ru { transparent header_upstream User-Agent "yandex-disk-previewer/1.0" header_upstream Authorization "Basic {{ '{{' }} (yandex_disk.login ~ ':' ~ yandex_disk.password) | b64encode {{ '}}' }}" } tls anwinged@ya.ru } ``` Данные авторизации я поместил в хранилище Ansible Vault и подставляю при развертывании конфигурации на свой сервер. Также настройка прокси ограничивает директории, к которым можно получить доступ. Так как на Яндекс.Диске у меня хранятся и личные данные. [ya-disk](https://disk.yandex.ru) [ya-api](https://yandex.ru/dev/disk/doc/dg/concepts/quickstart-docpage/) [ya-api-preview](https://yandex.ru/dev/disk/doc/dg/reference/preview-docpage/) [caddy](https://caddyserver.com/)