diff --git a/source/_articles/2019-08-08-yandex-disk-image-hosting.md b/source/_articles/2019-08-08-yandex-disk-image-hosting.md new file mode 100644 index 0000000..76f8aa0 --- /dev/null +++ b/source/_articles/2019-08-08-yandex-disk-image-hosting.md @@ -0,0 +1,62 @@ +--- +title: Яндекс.Диск как хостинг картинок +description: Использование возможностей Яндекс.Диска для хостинга картинок +keywords: [яндекс.диск, хостинг картинок, yandex disk, image hosting, hosting] +--- + +# Яндекс.Диск как хостинг картинок + +Я искал простой и надежный хостинг картинок для блога. Чтобы хранил картинки +годами, давал прямые ссылки и не закрылся в течение хотя бы пары лет. + +Раньше я использовал в качестве хостинга фотографий для блога сервис +Яндекс.Фотки. С его помощью можно было получить картинки разных разрешений +для адаптивной верстки. Сервис работал уже продолжительно время, у него была +большая аудитория, им было удобно пользоваться. + +Но в один момент Яндекс решил закрыть сервис. Вместо него появился Яндекс.Диск, +а фотоальбомы теперь были представлены в виде коллекций. Так же просто как +раньше уже было не получить прямых ссылок на загруженные фотки. + +Яндекс.Диском я пользовался и до этого. Я знал, что он поддерживает +протокол 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/)