From 8f0d5be92c1bdef936aca8a685bda2f55d8452a4 Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Thu, 8 Aug 2019 22:10:32 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A7=D0=B5=D1=80=D0=BD=D0=BE=D0=B2=D0=B8?= =?UTF-8?q?=D0=BA=20=D0=B7=D0=B0=D0=BC=D0=B5=D1=82=D0=BA=D0=B8=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=20=D1=8F=D0=BD=D0=B4=D0=B5=D0=BA=D1=81.=D0=B4?= =?UTF-8?q?=D0=B8=D1=81=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2019-08-08-yandex-disk-image-hosting.md | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 source/_articles/2019-08-08-yandex-disk-image-hosting.md 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/)