Всем привет. Признаться честно, я узнал про связку Raspberry Pi и
Transmission относительно недавно, хотя за несколько лет успел увидеть огромное количество способов использования этого одноплатника. После этого у меня появилась идея написать материал, который с одной стороны освещал бы этот use case Raspberry Pi, а с другой – был бы сделан в стиле DIY (Do It Yourself), рассказывая о том, как приготовить образ для своего одноплатника самостоятельно. Более того, я посчитал не лишним рассказать не только о Transmission'е, но и о
Deluge. Очевидно, что у каждого из этих проектов есть свои достоинства и недостатки, поэтому одной из целей этой статьи является помочь сделать выбор.
Мотивация
Одноплатники в общем и Raspberry Pi в частности отличаются бесшумной работой, только если вы не оснастили свое устройство охлаждением, которое булькает или гудит.
Таким образом, одноплатник является идеальным решением для выкачивания гигабайтов мультимедиа: он практически незаметен, бесшумен и не потребляет много энергии. Более того, у каждого в пределах локальной сети есть доступ к торрент-клиенту буквально с любого более-менее современного устройства. Но не поймите меня не правильно. Я слушаю музыку через Google Play Music и смотрю фильмы и сериалы на IVI и Амедиатеке, таким образом, всячески поощряя платный контент. Однако очень часто провайдер услуг просто не в состоянии вам дать то, что нужно в данный конкретный момент времени. К примеру, мы с женой договорились устроить 30-го декабря то, что мы назвали «День СТС». Наше осознанное детство пришлось на начало 2000-х, когда СТС был торт, а Интернет еще не так доступен. Таким образом, мы решили провести субботний день за просмотром сериалов, на которых выросли: моя любимая жена знакомила меня с Отчаянными домохозяйками, а я ее – с мультсериалом Назад в будущее, а вместе мы ностальгировали под Удивительные странствия Геракла (чтобы убить двух зайцев сразу, мы выбрали серию, где первый раз появляется Зена). Кстати, именно Назад в будущее, простите, хрен найдешь на IVI или Амедиатеке в силу его чудовищной непопулярности, что очень, на мой взгляд, несправедливо. Помните какие крутые эксперименты показывались в конце каждой серии? В общем, торрент-трекеры в очередной раз спасли положение.
Как выглядит мое решение
В данном разделе я хочу показать как выглядит решение, которое лично я уже использую достаточно давно. Стоит сразу отметить, что одного торрент-клиента на одноплатнике будет недостаточно, т.к., в конце концов, должна быть какая-то точка вхождения для устройств, на которых непосредственно будет проигрываться мультимедиа. Как ни странно, в моем случае этой точкой стал обычный FTP-сервер на базе vsftpd. Дело в том, что такие проигрыватели, как MX Player и VLC умеют стримить видео поверх FTP, т.е. приложению не нужно загружать видео целиком, чтобы его проиграть. Таким образом, я подключаюсь с целевого устройства к FTP-серверу, вижу список файлов, выбираю интересующий и проигрываю его так, как будто он хранятся на самом устройстве. Альтернативы FTP-серверу могут быть сколь угодно сложными, изощренными и современными. К примеру, я рассматривал Plex Media Server. Посмотрите в его стороны и вы. Тем не менее, он и другие, на мой взгляд, сильно усложняют очень простую задачу.
Целевыми устройствами для меня являются телевизор на базе Android 6.0 «Marshmallow».
и планшет на базе Android 7.0 «Nougat».
На этих устройствах в качестве FTP-клиента (и не только) я использую
ES File Explorer File Manager. Что касается самого устройства для торрент-качалки и FTP-сервера, то для этих целей я выбрал
Orange Pi Zero с обычным внешним жестким диском.
Сам одноплатник с модулем расширения и корпусом стоит в три раза дешевле, чем голая плата Raspberry Pi 3. Тем не менее, я ни в коем случае не пытаюсь никого отговорить от использования RPi в качестве торрент-качалки. Если у вас уже давно валяется без дела этот одноплатник, то почти наверняка он будет рад оказать вам услугу и взять на себя функцию торрент-клиента, хотя конечно для этой задачи он будет немного избыточен. Таким образом, если вы в процессе выбора устройства для этой задачи, то выберите что-то более простое и, как следствие, дешевое.
Как построить свое решение
Для того чтобы дальше следовать руководству понадобится одноплатник под управлением какого-нибудь Linux'а. Если для торрент-качалки вы расчехляете давно лежащее без дела устройство, то предлагаю поставить на него Raspbian или Ubuntu. Однако, какой бы не была система, – свежеустановленная или работающая уже много месяцев – в ней должны быть git, Docker и docker-compose. Дело в том, что я предлагаю воспользоваться проектом MMB, который представляет собой набор Dockerfile'ов и связанных с ними ресурсов для сборки образов Docker-контейнеров с различными сервисами, предназначенными для запуска на Raspberry Pi и других одноплатниках. (Кстати, в MMB вы найдете не только Transmission и Deluge, но и свежайшую версию Nextcloud'а.) Теперь выполните следующие команды на своем устройстве.
$ git clone https://github.com/tolstoyevsky/mmb.git
Затем перейдите в mmb/transmission-web, соберите и запустите Transmission.
$ cd mmb/transmission-web
$ docker build -t cusdeb.com:5000/transmission:2_92_armhf .
$ docker-compose up -d
После этого соберите и запустите Deluge. Deluge не будет конфликтовать с Transmission, но оба торрент-клиента будут использовать одну и ту же директорию для загрузок. Когда определитесь с клиентом, лишний можно будет удалить.
$ cd ../deluge-web
$ docker build -t cusdeb.com:5000/deluge:1_3_15_armhf .
$ sudo ./postinst.sh
$ docker-compose up -d
Установка Deluge потребовала выполнение ./postinst.sh. Этот скрипт создает пустой конфигурационный файл и директорию state, в которой будут оседать все torrent-файлы.
В заключении соберите и запустите FTP-сервер.
$ cd ../vsftpd
$ docker build -t cusdeb.com:5000/vsftpd:3_0_3_armhf .
$ docker-compose up -d
Оба торрент-клиента будут загружать файлы в директорию /srv/common/downloads/, которая, в свою очередь, будет корневой директорией для FTP-сервера. Основная идея MMB заключается в подогнанности сервисов к друг другу.
Кстати базовые образы сервисов MMB включают qemu-arm-static, который позволяет запускать сервисы, собранные под архитектуру armhf, на машинах x86. Это сделано в первую очередь для отладки сервисов на машинах разработчиков.
Теперь рассмотрим торрент клиенты Deluge и Transmission по отдельности.
Deluge
По мнению Yandex Wordstat'а Deluge менее популярен, чем Transmission по крайней мере в области торрент-клиентов с веб-интерфейсом для Raspberry Pi. Интерфейс Deluge (как и Transmission) очень далек от интерфейсов современных веб-приложений, поэтому это первое, к чему нужно быть готовым.
Перейдите на http://ip-адрес-устройства:8002, чтобы начать работу с Deluge. Торрент-клиент потребует ввести пароль, которым по умолчанию является «deluge». Требование ввести пароль может показаться лишним с учетом того, что приложение рассчитано на то, чтобы быть доступным из локальной сети, но мало ли какие фантазии вам захочется воплотить, поэтому Deluge должен быть к этому готов. Затем подключитесь к deluged, демону Deluge. В данном конкретном случае единственный вариант, который предлагает приложение является правильным.
Дело в том, что веб-интерфейс и демон Deluge – отдельные компоненты: первый является одним из многочисленных пользовательских интерфейсов, а другой – тем, что делает всю основную работу. deluged может даже быть запущен на одной машине, а веб-интерфейс – на другой, поэтому в самом начале работы с приложением необходимо уточнить, какой именно deluged необходимо использовать. Очевидно, что Deluge способен удовлетворить самые изысканные потребности пользователей. Забегая вперед, хочу сказать, что Transmission устроен намного проще.
В основном, работа Deluge ничем не отличается от любого (или почти любого) другого торрент-клиента. Если вы имеете дело с публичным торрент-трекером, то клиенту можно передать ссылку на .torrent-файл, но если торрент-трекер требует авторизации, то .torrent-файл придется сначала скачать себе на машину, а только потом передать клиенту.
Transmission
Перейдите на http://ip-адрес-устройства:8003, чтобы начать работу с Transmission. Торрент-клиент потребует ввести логин и пароль, которым по умолчанию в обоих случаях являются «cusdeb». Вы всегда можете изменить логин и пароль, а также другие параметры, в файле docker-compose.yml, а затем перезапустить контейнер с клиентом.
По сравнению с Deluge Transmission обладает более аскетичным интерфейсом, но в основе это все тот же торрент-клиент – клиенту можно передать как ссылку на .torrent-файл, так и сам файл, чтобы начать загрузку раздачи. Однако есть одна особенность Transmission'а, которая мне всегда не давала покоя. О ней я хочу рассказать сразу. Это будет полезно в первую очередь тем, кто только присматривается к торрент-клиентам с веб-интерфейсом и Transmission'у в частности. Ветеранам этого направления ПО я здесь не смогу рассказать ничего нового.
В отличии от Deluge, когда вы тем или иным способом передадите клиенту .torrent-файл, Transmission не предложит вам выбрать, что именно из раздачи вам нужно загрузить в данный момент. К примеру, раздача вышеупомянутого мультсериала «Назад в будущее» состоит из 27 видео-файлов – 26 серий и трейлер.
Если вы нажмете «Upload», то клиент начнет загружать всю раздачу целиком. В большинстве случаев это не то, что нужно, поэтом необходимо для начала снять галочку со «Start when added». После того как приостановленная загрузка появится в списке, необходимо щелкнуть по ней два раза, чтобы справа появилась панель со свойствами раздачи. По умолчанию будет открыта вкладка «Info». Перейдите на вкладку «Files»
выберете нужные файлы и запустите загрузку.
Больше всего дискомфорта лично у меня вызывает по умолчанию выделенная галочка «Start when added», но это можно исправить. Для этого перейдите в настройки
и на самой первой вкладке сбросьте одноименную галочку. После этого на панеле «Upload Torrent Files» она будет всегда сброшенной. Надеюсь это сделает первый опыт общения с Transmission'ом еще более гладким, чем он мог бы быть.
FTP-сервер
Как уже было сказано выше, торрент-клиенты буду загружать файлы в директорию /srv/common/downloads/. Настоятельно рекомендую примонтировать туда внешний жесткий диск или флешку, чтобы поберечь SD-карту. Эта же директория будет корневой для FTP-сервера. Таким образом, для того чтобы увидеть и воспроизвести на целевом устройстве все то, что вы загрузили посредством Deluge или Transmission, установите ES File Explorer File Manager и VLC. Я предполагаю, что вы используете в качестве целевого любое устройство на базе Android. Я не исследовал эту тему в области устройств на базе iOS, т.к. в основном статья опирается на мой собственный опыт, а я завален Android-устройствами различных форм-факторов с ног до головы.
Запустите ES File Explorer File Manager и перейдите в раздел «FTP», который находится в категории «Network».
Создайте новое ftp-соединение. Укажите адрес устройства в локальной сети, замените порт 21 на 8004, используйте «cusdeb» в качестве логина и пароля.
Теперь, когда вы захотите проиграть тот или иной видео-файл на вашем устройстве, воспользуйтесь VLC.
При этом скачивать файл целиком на устройство не потребуется.
Заключение
Несмотря на избыточность Raspberry Pi для каких-то задач, некоторые темы все равно остаются популярными. Так, одной из таких тем является создание торрент-качалки на базе Transmission'а и Raspberry Pi. Однако, если в системе не будет ничего, кроме Transmission'а, то достаточно мощное и относительно дорогое устройство будет большую часть времени простаивать. За треть стоимости (с учетом доставки) Orange Pi Zero может гонять Transmission не хуже. Также стоит в сотый раз напомнить, что у RPi отсутствует поддержка SATA, хотя конечно это не так критично, как для облачного хранилища данных на базе того же Nextcloud'а. Тем не менее, я с удовольствием рассказал про этот конкретный use case Raspberry Pi, т.к. он многим оказался интересен. Этот use case можно было бы даже назвать одним из примеров Интернета вещей, хотя и с натяжкой – устройства взаимодействуют друг с другом не совсем через Интернет и не совсем без участия человека. Кстати, готовые образы с Deluge и Transmission для Raspberry Pi 1, 2, 3 и Zero вы всегда можете получить на нашем сайте. Всем удачного возвращения в строй после выходных!