Что надо
Плюсы
Минусы
Этот гайд актуален для любой файлопомойки, который предоставляет доступ к файлам на Вашем облаке посредством WebDAV (например, Mail.RU или Google Drive). Если у Вас действительно места на сервере в обрез - можно использовать этот костыль. В противном случае, заливайте файлы напрямую на сервер.
Я не несу никакой ответственности за Ваши действия.
Имеется аккаунт в Яндекс.Диск с объёмом диска в 74Гб (на самом Яндексе имеется некая папка с файлами для быстрой загрузки) и VDS-сервер, арендованный на неком хостинге.
На сервере установлена Ubuntu 16.04 со всеми обновлениями, которые имеются на данный момент. Так же уже установлен некий софт.

Заметки:
- VDS/VPS-сервер
- Широкий канал (в идеале)
- Аккаунт на Яндексе
Плюсы
- Экономия места на диске сервера
- Если Вам повезло случайно установить клиент Яндекс Диска во времена, когда удаление клиента приводило к удалению ОС Windows - у Вас гарантированно есть не менее 200Гб халявно под FastDL
Минусы
- Неприличные задержки (длиной в секунду-две) перед началом загрузки файла.
- Пониженная скорость загрузки (чтобы отдать файл, nginx должен запросить его у драйвера Файловой Системы, а драйверу его самому надо загрузить с Яндекса (для чего и рекомендуется широкий канал)).
Этот гайд актуален для любой файлопомойки, который предоставляет доступ к файлам на Вашем облаке посредством WebDAV (например, Mail.RU или Google Drive). Если у Вас действительно места на сервере в обрез - можно использовать этот костыль. В противном случае, заливайте файлы напрямую на сервер.
Я не несу никакой ответственности за Ваши действия.
Имеется аккаунт в Яндекс.Диск с объёмом диска в 74Гб (на самом Яндексе имеется некая папка с файлами для быстрой загрузки) и VDS-сервер, арендованный на неком хостинге.
На сервере установлена Ubuntu 16.04 со всеми обновлениями, которые имеются на данный момент. Так же уже установлен некий софт.

Заметки:
- Если Вы подключаетесь к серверу не из под root пользователя - используйте sudo для всех команд в данном руководстве (должен быть настроен).
- Все основные действия с софтом делаются в ОС Ubuntu/Debian посредством пакетного менеджера apt.
В других ОС - соответственно, другие пакетные менеджеры.
Например, в CentOS используется yum, а в Arch Linux - pacman.
- Обновим кеш пакетов.
- Установим nginx.
Код:
apt install nginx - Запустим сервер, если он сам не запустился.
Код:
systemctl start nginx - Проверим работоспособность сервера. Для этого скопируем внешний IP-адрес сервера, и вставим в браузер. Если Вам высветилась стандартная страница nginx - всё хорошо. В противном случае, копайте, что именно мешает ему работать.
- Установим webdav драйвер.
Если вылезет окно подобного плана:Код:
apt install fuse davfs2
Рекомендуем выбрать Yes. Делается это посредством стрелок влево-вправо и клавиши Enter. - Определим UID у пользователя, который создаётся в процессе установки nginx.
В Ubuntu 16.04 он имеет имя www-data, потому сразу отфильтруем:Третье значение (они разделяются через двоеточие) - и есть нужный UserID.Код:cat /etc/passwd | grep www-dataВ моём случае, UserID - 33.Код:www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin - Подмонтируем свой Яндекс.Диск.
Все диски принято монтировать в /mnt. Там и сделаем.
Перейдём в папку:Создаём папку для монтирования. Назовём её, скажем, YaDisk.Код:cd /mntВыполняем монтирование посредством команды mount.Код:mkdir YaDiskГде 33 - UserID Вашего nginx.Код:mount -t davfs -o uid=33 https://webdav.yandex.ru/ YaDisk - После ввода команды, у Вас запросит сначала логин, а после и пароль.
Логин вводим полностью, вместе с доменом почты. Если Вы используете стандартную Яндекс.Почту - то у Вас домен yandex.ru
- Проверяем удачность монтирования. Для этого перейдём в новую папку и посмотрим, какие файлы там есть. Должны быть все файлы и папки с Яндекс.Диска.
Код:cd YaDisk ls -la
- Настроим nginx на вытягивание файлов из нужной папки.
Открываем файл /etc/nginx/sites-enabled/default любым удобным текстовым редактором, и заменяем его содержимое на следующее:
Где SourceFastDL - папка с файлами для быстрой загрузки.Код:server { root /mnt/YaDisk/SourceFastDL; server_name _; }
Обратите внимание, что конфиг я привёл для сервера, на котором ничего, кроме проксирования FastDL, на ЯД не будет. Если у Вас есть ещё что-то - заменяйте server_name на домен для FastDL. - Перезапускаем nginx и добавляем в автозапуск, если этого внезапно не случилось.
Код:systemctl restart nginx systemctl enable nginx - Проверяем загрузку путём открытия сайта в браузере, передавая сразу имя нужного файла. Для примера, я загрузил в корень папки файл PCA.7z. Его и пробую скачать путём открытия следующей ссылки в браузере:
Код:
http://IP/PCA.7z
Всё работает, как и задумывалось.
