Что надо
  • VDS/VPS-сервер
  • Широкий канал (в идеале)
  • Аккаунт на Яндексе

Плюсы
  • Экономия места на диске сервера
  • Если Вам повезло случайно установить клиент Яндекс Диска во времена, когда удаление клиента приводило к удалению ОС Windows - у Вас гарантированно есть не менее 200Гб халявно под FastDL

Минусы
  • Неприличные задержки (длиной в секунду-две) перед началом загрузки файла.
  • Пониженная скорость загрузки (чтобы отдать файл, nginx должен запросить его у драйвера Файловой Системы, а драйверу его самому надо загрузить с Яндекса (для чего и рекомендуется широкий канал)).

Этот гайд актуален для любой файлопомойки, который предоставляет доступ к файлам на Вашем облаке посредством WebDAV (например, Mail.RU или Google Drive). Если у Вас действительно места на сервере в обрез - можно использовать этот костыль. В противном случае, заливайте файлы напрямую на сервер.
Я не несу никакой ответственности за Ваши действия.

Имеется аккаунт в Яндекс.Диск с объёмом диска в 74Гб (на самом Яндексе имеется некая папка с файлами для быстрой загрузки) и VDS-сервер, арендованный на неком хостинге.
На сервере установлена Ubuntu 16.04 со всеми обновлениями, которые имеются на данный момент. Так же уже установлен некий софт.

1700853675609.png

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