Что надо
Плюсы
Минусы
Этот гайд актуален для любой файлопомойки, который предоставляет доступ к файлам на Вашем облаке посредством 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
- Определим UID у пользователя, который создаётся в процессе установки nginx.
В Ubuntu 16.04 он имеет имя www-data, потому сразу отфильтруем:Код:cat /etc/passwd | grep www-data
Код:www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
- Подмонтируем свой Яндекс.Диск.
Все диски принято монтировать в /mnt. Там и сделаем.
Перейдём в папку:Код:cd /mnt
Код:mkdir YaDisk
Код:mount -t davfs -o uid=33 https://webdav.yandex.ru/ YaDisk
- После ввода команды, у Вас запросит сначала логин, а после и пароль.
Логин вводим полностью, вместе с доменом почты. Если Вы используете стандартную Яндекс.Почту - то у Вас домен yandex.ru - Проверяем удачность монтирования. Для этого перейдём в новую папку и посмотрим, какие файлы там есть. Должны быть все файлы и папки с Яндекс.Диска.
Код:cd YaDisk ls -la
- Настроим nginx на вытягивание файлов из нужной папки.
Открываем файл /etc/nginx/sites-enabled/default любым удобным текстовым редактором, и заменяем его содержимое на следующее:
Код:server { root /mnt/YaDisk/SourceFastDL; server_name _; }
Обратите внимание, что конфиг я привёл для сервера, на котором ничего, кроме проксирования FastDL, на ЯД не будет. Если у Вас есть ещё что-то - заменяйте server_name на домен для FastDL. - Перезапускаем nginx и добавляем в автозапуск, если этого внезапно не случилось.
Код:systemctl restart nginx systemctl enable nginx
- Проверяем загрузку путём открытия сайта в браузере, передавая сразу имя нужного файла. Для примера, я загрузил в корень папки файл PCA.7z. Его и пробую скачать путём открытия следующей ссылки в браузере:
Код:
http://IP/PCA.7z