В сегодняшней статье из цикла публикаций об использовании Raspberry Pi 3 я расскажу, как сделать на базе этого микрокомпьютера бесшумный и энергоэффективный Torrent Box (торрентокачалку), который может работать круглыми сутками, не обременяя владельца дополнительными расходами на электроэнергию и не мешая спать по ночам издаваемым шумом.
Установка торрент-клиента с возможностью удаленного управления является частью крупного проекта по превращению Raspberry Pi 3 в многофункциональный домашний сервер.
Содержание
Что нам понадобится
Для осуществления описываемых в этой статье действий понадобится:
- Raspberry Pi 3 Model B
- Внешний жесткий диск
- Локальная сеть
О том, как правильно подключить внешний жесткий диск к Raspberry Pi рассказано в этой статье.
Подходит ли Raspberry Pi на роль торрентокачалки?
Перед тем, как обсуждать процесс установки и настройки торрент-клиента на Raspberry Pi, хотелось бы затронуть вопрос того, насколько она вообще подходит для работы с торрентами.
У Raspberry Pi есть несколько общеизвестных слабых мест:
- Ethernet только на 10/100Mbit
- Отсутствие SATA
- Все 4 USB-порта и Ethernet-адаптер висят на одной шине
То есть, вместо быстрого интерфейса SATA доступ к жесткому диску будет осуществляться по более медленному интерфейсу USB 2.0, максимальная пропускная способность которого составляет 480Мбит/с. Более того, эта максимальная пропускная способность будет распределяться на все 4 USB-порта и Ethernet-контроллер.
Давайте разбираться дальше.
Ethernet-контроллер, работающий на скоростях до 100Мбит — это плохо. Потому что современные роутеры и гигабитные Ethernet-адаптеры поддерживают намного большие скорости. Но плохо это только внутри локальной сети. Потому что за пределами локальной сети вы все равно упираетесь в ограничение в виде скорости интернет-канала, которая у подавляющего большинства пользователей не превышает 100Мбит, а многие не имеют даже и такой скорости.
Идем дальше. Предположим, что из 480Мбит/с максимальной пропускной способности 100Мбит/с отъедает под себя Ethernet. Остается 380Мбит/с для жесткого диска, подключенного к одному из USB-портов.
380Мбит/с это меньше, чем 6Гбит/с по стандарту подключения SATA-III. Но все еще больше, чем 100Мбит/с — максимальная скорость, с которой данные могут скачиваться на «малину» из интернета. Таким образом, низкие ТТХ «малины» не являются «бутылочным горлышком» при загрузке файлов из интернета — таковым в данном случае является сам интернет-канал.
Вывод: Raspberry Pi 3 будет хорошо чувствовать себя в качестве TorrentBox в любом случае, а если скорость вашего интернет-канала ниже 100Мбит/с, то параллельно с загрузкой торрентов можно совершать другие операции с содержащимися на подключенном к Raspberry Pi жестком диске файлами — например, воспроизводить музыку или видео. Пропускной способности хватит на все.
Оптимальный torrent-клиент для Raspberry Pi
Существует 3 основных торрент-клиента, которые обычно используются на Raspberry Pi:
- Deluge
- rTorrent
- Transmission
Из них Deluge и Transmission поддерживают удаленное управление «из коробки», а rTorrent является консольным торрент-клиентом, веб-интерфейс к которому прикручивается отдельно.
В плане скорости и качества работы все три этих клиента примерно одинаковы. Поэтому имеющие опыт работы с Linux-системами пользователи обычно отдают предпочтение знакомому клиенту: пользовался rTorrent на компьютере — устанавливаешь привычный себе rTorrent на Raspberry Pi, пользовался Deluge — устанавливаешь Deluge и т.п.
Я же выбрал Transmission. Потому что из всех трех клиентов он, на мой взгляд, наиболее прост и удобен в установке и настройке.
Transmission является популярным торрент-клиентом, поддерживает удаленное управление через веб-интерфейс как по локальной сети так и по интернету, существует уже много лет и является стандартным приложением в некоторых дистрибутивах Linux.
Его и будем устанавливать.
Подготовительные действия
Перед установкой торрент-клиента нужно сделать два простых действия — создать папку для загрузки и хранения торрентов и увеличить размер файла подкачки.
Увеличиваем размер файла подкачки
Первым делом увеличим размер файла подкачки со стандартного значения в 100Мб до 512Мб.
Он будет использоваться если вдруг по каким-то причинам Raspberry Pi 3 перестанет хватать размера своей оперативной памяти.
Вряд ли это произойдет, 1Гб RAM за глаза хватает «малине» для выполнения функций домашнего сервера, но на всякий случай стоит подстраховаться.
Открываем для редактирования файл настроек:
sudo nano /etc/dphys-swapfile
И меняем значение CONF_SWAPSIZE со 100 на 512.
Сохраняем изменения и перезагружаем «малину» чтобы они вступили в силу:
sudo reboot
Создаем директорию для загрузки торрентов
Теперь создадим на жестком диске папку, в которую будут загружаться торренты, и откроем полный доступ на чтение и запись в нее:
sudo mkdir /mnt/usbstorage/Torrents sudo chmod 777 /mnt/usbstorage/Torrents
На этом подготовка завершена. Остается только установить и настроить Transmission.
Установка и настройка Transmission
Торрент-клиент Transmission представляет собой постоянно запущенное и работающее в фоне приложение. Такие приложения в Linux-среде называют демонами (daemon).
Устанавливаем Transmission:
sudo apt-get update sudo apt-get install transmission-daemon
После установки демон Transmission запустится автоматически. Необходимо его отключить на время настройки, иначе вносимые изменения не будут сохраняться:
sudo /etc/init.d/transmission-daemon stop
Теперь настроим Transmission под себя через правку файла настроек:
sudo nano /etc/transmission-daemon/settings.json
В этом файле нас интересуют следующие строки:
"download-limit": 100000,
— Максимальная скорость закачки в килобитах в секунду. Можно ограничить ее по своему желанию. Мой интернет-канал работает со скоростью 50Мбит днем и 100Мбит ночью, поэтому я выставил 100000, что соответствует 100Мбит/с — максимальной пропускной способности моего интернет-канала, исходя из соображений, что «малина» все равно не выберет и половины теоретически доступного предела.
"download-dir": "/mnt/usbstorage/Torrents",
— Путь к папке, в которую будут сохраняться загрузки. Меняем на свой путь к папке на внешнем жестком диске, иначе загрузки будут сохраняться на microSD-карту с системой, что неудобно и ускоряет ее износ.
"incomplete-dir": "/mnt/usbstorage/Torrents",
— Можно настроить так, чтобы незавершенные закачки сохранялись в отдельную директорию. Дело вкуса, я предпочитаю не разделять готовые и незавершенные закачки по разным папкам.
"incomplete-enabled": false,
— Отключение опции разделения по разным папкам готовых и незавершенных закачек.
"download-queue-size": 5,
— Максимальное количество одновременно запущенных закачек. Если Transmission начнет виснуть при работе, то это значение необходимо уменьшить сперва до 3, а если зависания не прекратятся, то до 1. При значении 1 все закачки будут идти поочередно и мощности Raspberry Pi гарантированно хватит.
"rpc-enabled": true,
— Включение удаленного управления (через веб-интерфейс). Эта опция включена по умолчанию, ее не трогаем.
"rpc-whitelist": "192.168.*.*",
— Белый список IP-адресов, с которых возможно удаленное управление. 192.168.*.* — маска локальной сети, позволяющая получать доступ к веб-интерфейсу Transmission с любого компьютера, но только из своей локальной сети. Если планируется управлять торрент-закачками через интернет, то настройки нужно изменить: либо добавив в «белый список» свои внешние IP-адреса, либо отключив «белый список» и включив вместо него парольную аутентификацию.
"rpc-whitelist-enabled": true,
— Включение «белого списка» IP-адресов, о котором шла речь выше.
"rpc-authentication-required": false,
– Отключение парольной защиты доступа к веб-интерфейсу Transmission, которая изначально включена. Если ее не отключить, то веб-интерфейс перестает открываться в браузере Safari на iOS. Кроме того, при ограничении доступа «белым списком» IP-адресов необходимость парольной защиты отпадает.
"rpc-username": "логин",
— Логин для удаленного управления, используется если парольная защита все-таки активирована.
"rpc-password": "пароль",
— Пароль для удаленного управления, используется если парольная защита все-таки активирована. Пароль нужно вписывать в чистом виде (как он будет вводиться), после перезапуска Transmission его значение в этом поле будет автоматически зашифровано.
"rpc-port": 9091,
— Порт для доступа к удаленному управлению. Его надо запомнить — в дальнейшем он будет использоваться для доступа к веб-интерфейсу Transmission.
"rpc-url": "/transmission",
— Адрес, по которому будет располагаться веб-интерфейс для удаленного управления.
"prefetch-enabled": 0,
— Отключение кэширования.
"preallocation": 0,
— Отключение предварительного резервирования места под файлы.
На этом основную настройку Transmission можно считать завершенной. Теперь нужно запустить демон Transmission повторно:
sudo /etc/init.d/transmission-daemon start
Если стандартные настройки используемого порта не менялись, то торрент-клиентом можно пользоваться, открыв адрес http://ip-адрес-raspberry-pi:9091 в любом браузере:
Как полностью отключить Upload
Отдельно напишу как полностью отключить сидирование раздач в Transmission.
Делать это не обязательно и даже противоречит этике пользования торрентами.
Но по мне, так большинство раздаваемого в сети контента прекрасно проживет даже если я не буду тратить ресурс своего жесткого диска и загружать исходящий канал ради того, чтобы стоять на раздаче. И большинство публичных торрент-трекеров в этом вопросе со мной согласно и уже давно отключило у себя учет соотношения загруженного и отданного каждым конкретным пользователем.
Отключение раздач в Transmission происходит через правку того же файла настроек:
sudo nano /etc/transmission-daemon/settings.json
В котором нужно отредактировать следующие строки:
"ratio-limit": 0, "ratio-limit-enabled": true,
— Выставляем предел соотношения загруженного к отданному, после которого автоматически прекращается сидирование раздачи. Если выставить этот предел на 0, то сидирование даже не будет начинаться.
"speed-limit-up": 0, "speed-limit-up-enabled" true,
— Выставляем ограничение максимальной скорости раздач на 0. Просто как дополнительную гарантию, что сидирование не начнется даже если случайно будет отключен выставленный нами на 0 ratio limit.
Кроме того, эти две опции можно отредактировать позднее уже из веб-интерфейса Transmission, нажав на иконку с гаечным ключом в левом нижнем углу и выбрав в открывшемся меню сперва «Stop seeding at ratio: 0» на вкладке Torrents, а затем «Upload (kB/s): 0» на вкладке «Speed».
Вместо заключения: испытание Raspberry Pi 3 в качестве торрент-качалки
Посмотрим, как работает Transmission на Raspberry Pi 3.
Зайдем в веб-интерфейс с удаленного компьютера и поставим на закачку какой-нибудь торрент:
Скорость скачивания 5,46Мб/с (мегабайт в секунду), что соответствует 43Мбит. Скорость моего канала днем — 50Мбит. Получается, что «малина» задействует канал почти полностью, и ни устаревший Ethernet-адаптер, ни USB 2.0 вместо SATA-III ей не преграда.
А вот так выглядит интерфейс Transmission на экране айфона:
И в горизонтальном положении на том же айфоне:
Интерфейс хорошо масштабируется, все элементы достаточно крупны для управления с сенсорного экрана. Процесс же управления Transmission ничем не отличается от управления любым привычным торрент-клиентом под Windows.
Transmission понимает magnet-ссылки, позволяет добавлять .torrent-файлы с компьютера или загружать их прямо с торрент-трекеров.
При подключении жесткого диска достаточного объема можно разгрузить свой основной компьютер от задач по скачиванию торрентов, полностью перепоручив это дело Raspberry Pi. Это просто, удобно и технологично :).
Raspberry Pi 3B (английская сборка)в интернет-магазине GearBest Raspberry Pi 3B (китайская сборка)в интернет-магазине GearBest
Как добавить в автозагрузку, а то после перезагрузки не включается
после перезагрузки по адресу своей малины демон не отображается, делаю команду демон старт и все равно не подключается, что можно сделать? или только один раз настроил и больше малину не отключать???
Вообще, демон руками принудительно включается только после принудительного же ручного отключения (для смены настроек, например). А так он прописывается в автозагрузке и запускается автоматически, так что трогать его не нужно..
Попробую в ближайшее время установить у себя еще раз Transmission с нуля чтобы попытаться понять что во время установки по моей инструкции могло пойти не так.
У меня такая же история. Принудительный рестарт помогает хотя, но хотелось на автоматом после перезагрузки. Заранее спасибо
На многих, кстати говоря, публичных трекерах, где раздавать не обязательно при попытке добавить торрент путём копирования ссылки на его файлы, transmission возвращает ошибку : gotMetadataFromURL: http error 404: Not Found. Бывает и 403я иногда. Работает только добавлением скачанного файла, что делает доступ через, например, телефон, неудачным и куцым решением. Так же очень хотелось бы настроить доступ к web-интерфейсу transmission из глобальной сети, чтобы можно было находясь на работе или ещё где добавлять малинке сериал/фильм на закачку, чтобы вечером домой приехать и посмотреть. Везде рекомендуют покупать у провайдера внешний статический IP и делать проброс портов на роутере. Единственный вариант без этих заморочек — сервис Weaved, который позволяет установить SSH и VNC соединение не из локальной сети, но Web-соединение в бесплатной версии даёт только 5 минут в сутки. Какие ещё есть способы решить эту задачу?
Спасибо
По первому вопросу я не знаю что ответить. Тут скорее надо спросить на каком-нибудь форуме, где обсуждают конкретно торрент-клиенты под Linux, или непосредственно Transmission.
По второму вопросу:
1. Есть RealVNC (он же предустановлен в качестве VNC-сервера в Raspbian по умолчанию), который позволяет поднимать соединения через свое облако из интернета. До 5 устройств можно подключить бесплатно, судя по информации на оф.сайте
2. Можно использовать Dynamic DNS — это позволяет обойтись без покупки статического IP у провайдера.
2. Можно создать Telegram-бота, который постоянно доступен в сети и залочен на прием команд только с определенных ID. Самый безопасный на мой взгляд внешнего управления Raspberry Pi, потому что историй взлома Телеграма пока что общественность не знает. Некоторые наработки по этой теме можно нагуглить. Но тут все завязано на умение программировать, т.к. все функции бота придется писать с нуля.
Установил. Всё заработало с первого раза. Только есть одно НО. В момент, когда идет загрузка файлов с интернета, начинаются жуткие тормоза.
Например, я хочу выполнить команду «ls /mnt/media/TVShows». Так вот, в момент, когда я дохожу до слова «media», командная строка подвисает на несколько секунд (15–20), а после появляются символы, которые я печатал. В веб-интерфейсе тоже тормоза. Как-будто бы скорость скачки очень медленная — на архив в 32 Гб показывает, что остался 1 день 10 часов.
При этом, этот архив скачивается в итоге за нормальное время (не засекал, т.к. лег спать). Сейчас поставил второй такой же архив на скачку, слежу, за сколько скачается.
Ощущение, что тормозит хард, но я в это не очень верю — не настолько же. При подключении к обычному компу тормозов нет.
К слову о харде — это 3 Тб внешний жд от Seagate со своим питанием. Работает на USB 3.0. На нем были файлы, поэтому я поделил его на две части, отформатировав свободное место в exfat.
Не сталкивались с таким?
Понаблюдал за торрентом. Тормоза вскоре кончаются, скорость и время скачивания в веб-интерфейсе приходит в себя. Подозреваю, все дело в том, что на начальном этапе торрент-клиент аллоцирует место на харде под скачиваемый архив (16 файлов по ≈ 2 Гб каждый).
Так преаллокацию можно отключить в настройках Transmission и посмотреть что при этом изменится.
Также можно посмотреть что и какую нагрузку дает на процессор (через приложение htop, например). Ну и как вариант можно предположить, что торрентокачалка забивает собой весь сетевой интерфейс, поэтому все остальные обращения по сети выполняются уже по остаточному принципу. Но это если подключаетесь удаленно по SSH. Если прямо на самой RPi консоль тормозит, то конечно не в этом причина.
Спасибо Вам огромное за все Ваши статьи. Все работает.
Установил и настроил Transmission. Но теперь Kodi не видит скаченных фильмов на внешнем HDD. Как это исправить? Есть какой-нибудь медиа плеер для Raspberry Pi 3 ?
Наверное конфликт с правами доступа, т.к. плеер работает от пользователя kodi и группы kodi, а Transmission от пользователя transmission-debian (или что-то типа того).
Сделайте сначала «sudo chmod -R 777» на папку с загрузками, а потом «sudo chown -R kodi:kodi».
Добрый день!
Установил по вашей методике.
Есть проблема.
http://127.0.0.1:9091/transmissionweb/
При попытке загрузки ссылки на торрент файл и других действиях в браузере вылетает ошибка: «Connected failed…could not connect to server»
Нашел похожую проблему тут https://forum.transmissionbt.com/viewtopic.php?t=16693
но не понятно как тут ее решили
По ссылке человек пишет, что перешел на новый VPS с выделенным IP и после этого у него все заработало.
А в теме ему советовали поэкспериментировать с параметрами «rpc-…» в конфиге.
Можно
1) сменить «rpc-authentication-required»: true, на false, это отключит запрос логина-пароля на доступ к веб-интерфесу
2) вписать в «rpc-whitelist»: локальные ip-адреса своих компьютеров, с которых осуществляется обращение к веб-интерфейсу и поменять настройку «rpc-whitelist-enabled» с false на true (активировать белый список на основании внесенных ip-адресов)
3) поменять адрес порта в «rpc-port» на какой-нибудь другой
Что-то из этого наверняка подействует.
http://ваш_ip:9091/transmission/web/
Забыли слэш поставить
Автор, добавь такой вариант ссылки в текст
Без /web/ в конце у меня выпадала ошибка 409, наверно многие с этим сталкивались
Добрый день!
Столкнулся с проблемой: при выборе папки для закачки на флешке, которая смонтировалась автоматически в «/media/pi/mstore/torrents/», в торрент клиенте выскакивает ошибка «Error: Permission dinaed».
Решил проблему по инструкции: https://raspberrypi.stackexchange.com/questions/4378/transmission-permission-denied-on-usb-disk
After lots of reading and frustration. First of all, make sure the normal user has read and write acces to the USB drive. The correct ‘non-root’ fix for having write acces to the USB drive is:
Step 1: Stop transmission daemon
sudo service transmission-daemon stop
Step 2: Add pi to debian-transmission group
sudo usermod -a -G debian-transmission pi
Step 3: changing the daemon-user
sudo nano /etc/init.d/transmission-daemon
Change USER to pi.
Step 4 Change the rights of the configuration files folder
sudo chown -R pi /var/lib/transmission-daemon/info/
sudo chmod 755 /var/lib/transmission-daemon/info/settings.json
Step 5: Set the correct permissions for the download / incomplete folders
sudo chown -R pi /somewhere/downloads
sudo chown -R pi /somewhere/incomplete
Step 5: Start transmission daemon
sudo service transmission-daemon start
Compiled from:
https://www.raspberrypi.org/forums/viewtopic.php?f=27&t=8714
https://wiki.archlinux.org/index.php/Transmission
Та же самая проблема, но инструкция не помогла, проделал дважды…
Не работал доступ к папке, в итоге смонтировал флешку по инструкции из другой статьи и вроде заработало, за исключением 2 вещей:
1. При перезагрузке почему-то все торренты пропадают. При добавлении заново начинается закачка заново.
2. Через какие-то промежутки скачанного, несколько сотен мегабайт, выскакивает ошибка, что не может записать Resume file: permission denied. При этом если перезапустить, то будет качать дальше, пока опять не выскочит эта ошибка.
Крик души — не понимаю, почему на линуксе все должно быть так сложно, почему на винде все так просто работает)))
А как этим торрент-клиентом вы реализовали загрузку фильмов/сериалов/другого контента в разные папки (как этого требует плекс)?
Никак, вручную переносится.
Тем более, что для плекса во многих случаях нужно править имена файлов, так что разнесение загрузок разных типов контента в разные директории особо ничего не даст.
Я извиняюсь, а если надо скачивать в папку пользователя Nextcloud с правами для www-data как это можно реализовать? Пишет нет прав.
Все сводится к тому, чтобы Transmission имел права на запись в каталог пользователя Nextcloud и чтобы Nextcloud, в свою очередь, не терял права на работу с этой папкой.
Для этого можно:
— Запускать Transmission от пользователя www-data
— Присвоить пользователю pi (от которого по умолчанию стартует Transmission) и пользователю www-data членство в одной группе и дать права доступа членам этой группы к каталогу Nextcloud.
у меня ни в какую не хочет качать..ошибка доступа и всё, что только не делал, а передать права на mnt/usbstorage не могу «chown: изменение владельца ‘/mnt/usbstorage’: Операция не позволена» и как вы говорите что transmission работает от пользователя это не так…подскажите как исправить ситуацию
1) Вы точно исполняете команду chown с правами суперпользователя? Надо «sudo chown …», а не просто «chown …»
2) Если используемый диск форматирован в NTFS, то установлен ли в системе пакет ntfs-3g? Подробнее вот в этой статье: https://dmitrysnotes.ru/raspberry-pi-3-pravilnoe-montirovanie-usb-hdd-i-fleshek
Настроил удаленный доступ по интырнету, может кому пригодится:
1) Регистрируемся на noip.com. Делаем бесплатный хост
2) В настройках роутера открываем порт 9091 для transmission
3) В настройках transmission.json в rpc-host-whitelist «username.ddns.net» (или какой у вас домен, хост)
rpc-whitelist «*. *. *. *»
rpc-authentication-required»: true,
rpc-password»: «password»
«rpc-port»: 9091,
«rpc-username»: «admin»,
4) Пишем в браузере ваш хост noip
username.ddns.net:9091/transmission/web/ и получаем доступ
5) можно скачать приложение для андроид https://github.com/equeim/tremotesf-android
Рекомендую termotesf, в его настройках указываем
доменное имя это наш username.ddns.net
Путь API это путь который указывали в json и через слэш добавить /rpc
/transmission/rpc/
Ну и аутентификация ваш логин и пароль
6) Радуемся :)
Всё никак не работал Transmission, писал что доступ denied. Помогло добавление рекурсии при выдаче прав на папку для торрент-файлов:
sudo chmod -R 777 /mnt/usbstorage/Torrents
То есть я добавил: -R. Может кому поможет.
Дмитрий, спасибо за статьи, с ними реально просто настроить малинку. Единственное, я бы хотел внести уточнение — у меня версия 2В, канал 100 Мбит. Когда внешний HDD был с NTFS (как в статье про подключение hdd) скорость скачивания реально была меньше 6 Мб/с. Я глянул, что процесс чтения NTFS потребляет около 40% cpu, переформатировал винт в нативный EXT4 — скорость закачек вышла за пределы 10 Мб/с.
Через некоторое время останавливает закачки с сообщением Error: unable to save resume file: No space on device. Место на внешнем диске определенно есть. Сталкивались ли с таким?
Скорее всего нет свободного места на системном разделе. Transmission хранит .torrent и .resume файлы по умолчанию в /var/lib/transmission-daemon/info/, ошибка выдается из-за того, что ему не удается сохранить данные по этому пути.
Спасибо! Это отличное руководство, как раз для меня, человека весьма далёкого от терминала. Не быстро, часа за 3-4 установил, отредактировал, настроил всё с ПК win10.
Спасибо за подробную инструкцию! Все получилось кроме одного, не пойму как подключиться к Transmission через телефон по wi-fi. Как у вас это получилось? Удалось подключиться к Transmission только через веб интерфейс компьютера через сетевой кабель.
Проблема в следующем: не могу подключиться к Transmission через другие интерфейсы wi-fi сеть например. Что для этого нужно? Имею старенький 4G модем с раздачей wi-fi. В общем, если подключаю к сети wi-fi модема — малинку, телефон, компьютер, то Transmission не подключается по веб интерфейсу :( Вроде как они все в одной сети, одна подсетка. Что делаю не так?
А модем точно может выполнять функции маршрутизатора, т.е. объединять устройства в локальную сеть?
Если да, и если на других устройствах это работает (например, удается расшарить какую-нибудь папку на компьютере по SMB и получить доступ к ней с телефона), то надо еще раз посмотреть конфигурацию Transmission. Возможно стоит ограничение доступа по маске подсети, которая отличается от той маски, которую выдает модем).
Спасибо за ответ. Да, скорее всего вы правы, из за отсутствия функций маршрутизатора я его не вижу.