Подключаем Яндекс.Диск в качестве FastDL

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #1
Подключаем Яндекс.Диск в качестве FastDL
Что надо
  • VDS/VPS-сервер
  • Широкий канал (в идеале)
  • Аккаунт на Яндексе

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

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

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

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

Заметки:
  • Если Вы подключаетесь к серверу не из под root пользователя - используйте sudo для всех команд в данном руководстве (должен быть настроен).
  • Все основные действия с софтом делаются в ОС Ubuntu/Debian посредством пакетного менеджера apt.
    В других ОС - соответственно, другие пакетные менеджеры.
    Например, в CentOS используется yum, а в Arch Linux - pacman.

Приступим.
  • Обновим кеш пакетов.
  • Установим nginx.
    C-подобный:
    apt install nginx
  • Запустим сервер, если он сам не запустился.
    C-подобный:
    systemctl start nginx
  • Проверим работоспособность сервера. Для этого скопируем внешний IP-адрес сервера, и вставим в браузер. Если Вам высветилась стандартная страница nginx - всё хорошо. В противном случае, копайте, что именно мешает ему работать.
  • Установим webdav драйвер.
    C-подобный:
    apt install fuse davfs2
    Если вылезет окно подобного плана:
    upload_2018-7-25_12-26-47.png

    Рекомендуем выбрать Yes. Делается это посредством стрелок влево-вправо и клавиши Enter.
  • Определим UID у пользователя, который создаётся в процессе установки nginx.
    В Ubuntu 16.04 он имеет имя www-data, потому сразу отфильтруем:
    C-подобный:
    cat /etc/passwd | grep www-data
    Третье значение (они разделяются через двоеточие) - и есть нужный UserID.
    C-подобный:
    www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
    В моём случае, UserID - 33.
  • Подмонтируем свой Яндекс.Диск.
    Все диски принято монтировать в /mnt. Там и сделаем.
    Перейдём в папку:
    C-подобный:
    cd /mnt
    Создаём папку для монтирования. Назовём её, скажем, YaDisk.
    C-подобный:
    mkdir YaDisk
    Выполняем монтирование посредством команды mount.
    C-подобный:
    mount -t davfs -o uid=33 https://webdav.yandex.ru/ YaDisk
    Где 33 - UserID Вашего nginx.
  • После ввода команды, у Вас запросит сначала логин, а после и пароль.
    Логин вводим полностью, вместе с доменом почты. Если Вы используете стандартную Яндекс.Почту - то у Вас домен yandex.ru
    upload_2018-7-25_12-27-3.png
  • Проверяем удачность монтирования. Для этого перейдём в новую папку и посмотрим, какие файлы там есть. Должны быть все файлы и папки с Яндекс.Диска.
    C-подобный:
    cd YaDisk
    ls -la
    upload_2018-7-25_12-27-12.png
  • Настроим nginx на вытягивание файлов из нужной папки.
    Открываем файл /etc/nginx/sites-enabled/default любым удобным текстовым редактором, и заменяем его содержимое на следующее:
    C-подобный:
    server {
      root /mnt/YaDisk/SourceFastDL;
      server_name _;
    }
    Где SourceFastDL - папка с файлами для быстрой загрузки.
    Обратите внимание, что конфиг я привёл для сервера, на котором ничего, кроме проксирования FastDL, на ЯД не будет. Если у Вас есть ещё что-то - заменяйте server_name на домен для FastDL.
  • Перезапускаем nginx и добавляем в автозапуск, если этого внезапно не случилось.
    C-подобный:
    systemctl restart nginx
    systemctl enable nginx
  • Проверяем загрузку путём открытия сайта в браузере, передавая сразу имя нужного файла. Для примера, я загрузил в корень папки файл PCA.7z. Его и пробую скачать путём открытия следующей ссылки в браузере:
    C-подобный:
    http://IP/PCA.7z
    upload_2018-7-25_12-28-0.png

    Всё работает, как и задумывалось.

А для всех наркоманов, которые таким заниматься будут, напоминаю: если есть возможность - арендуйте нормальный сервер с нормальным размером диска под FastDL.
 

CAH4E3

Сосанчез.
Сообщения
1,597
Реакции
779
Этот наркоман всё-таки выложил инструкцию :crazy:
Для адекватных людей посоветую Облачное хранилище за несколько рублей в месяц.
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #3
Этот наркоман всё-таки выложил инструкцию
Because why not?
Сам я всё равно использую нормальный сервер под FastDL. Но есть извращенцы, которые в ЛС задавались этим вопросом. Потому и выложил.
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #4
Вдогонку к обычной инструкции.
Можно упростить себе жизнь по добавлению файлов на FastDL, добавив всё тот же Яндекс в кач-ве сетевого диска в компьютер.
На примере Windows 7 покажу ниже, как. Для Windows XP/8/10 - некоторые шаги, возможно, будут различаться. Но суть остаётся прежней.
  1. Открываем "Пуск", нажимаем ПКМ по компьютеру и нажимаем на "Подключить сетевой диск..."
    upload_2018-7-25_14-21-21.png
  2. Букву диска выбираем любую, в адрес папки вводим https://webdav.yandex.ru
  3. Ставим галочки на "Восстанавливать при входе в систему" и "Использовать другие учётные данные".
    upload_2018-7-25_14-24-3.png
  4. В появившемся окне вводим данные от аккаунта. Так же ставим галочку на запоминание логина и пароля, чтобы не вводить постоянно.
    upload_2018-7-25_14-26-32.png
После чего Яндекс.Диск появляется в компьютере и на него можно напрямую заливать файлы в обход клиента или веб-сайта.

upload_2018-7-25_14-30-5.png
 

hirowatch

Живет ХЛмод`ом
Сообщения
2,722
Реакции
1,634
@Kr1kuzya, Вот это действительно полезно. Получается можно не скачивать программу Яндекс.Диск, а просто подключить сетевой диск и все?
Прости не дочитал.
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #6
@hirowatch, ага. Тоже самое можно сделать и с Гугл Диском и Mail.Ru облаком, например.
Всё есть нативно в самой ОС. Просто не все изучали возможности используемого софта (ведь Windows тоже по сути софт).

P.S.: Кстати, лайфхак.
Подрубить любое облако в качестве WebDAV диска в ОС, настроить автобэкап всех нужных данных на него.
Если сервер внезапно умрёт - можно будет стянуть бэкап с облака.
Сам так делаю с БД.
 

Dragokas

Добрая душа
Сообщения
229
Реакции
213
Сам я всё равно использую нормальный сервер под FastDL. Но есть извращенцы, которые в ЛС задавались этим вопросом. Потому и выложил.
Мда, уж у людей и вкусы.
Если есть свой VDS, то проще на нём поднять отдельный FTP зеркально видимый публично из под HTTP, и FastDL подключить напрямую к нему.

За статью спасибо.
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #9
Ещё раз. Этот гайд писался для тех, у кого места на сервере в обрез (очень мало, т.е.), и кто не хочет доплачивать за него (а зря).
 

LEII4A

Участник
Сообщения
741
Реакции
135
яндекс вроде по тихому прикрыл webdav, несмотря на то, что подключаюсь к Яндекс.Диск на компьютере - Яндекс.Диск. Помощь я своим логином и паролем от диска зайти так и не смог не с одного клиента на разных ОС, но на момент написания сабжа всё работало
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #11
Да, есть проблемы. Но, решается генерацией пароля для приложения, и использования его для вебдава. Делается это тут.
1584905966375.png
 
Сверху Снизу