Как превратить ваш Raspberry Pi в постоянно загружающий мегалит
СДЕЛАЙ САМ

Как превратить ваш Raspberry Pi в постоянно загружающий мегалит

Внесите свой вклад в глобальную ‘сеть распространения Linux’, создав специализированный, безопасный мегалит для скачивания торрентов, который потребляет едва ли 10 Вт энергии. Разумеется, он будет основан на Raspberry Pi

Внесите свой вклад в глобальную ‘сеть распространения Linux’, создав специализированный, безопасный мегалит для скачивания торрентов, который потребляет едва ли 10 Вт энергии. Это возможно, и он, конечно же, будет основан на Raspberry Pi

Скачивание и рассадка (вы ведь рассаживаете, верно? Хорошие люди рассаживают с коэффициентом не менее 2. 0) – тяжелая задача для любого обычного компьютера, и это означает, что вы потребляете гораздо больше электроэнергии, чем следовало бы, оставляя его включенным на ночь. Что если бы вы могли переложить эту задачу на маломощный Raspberry Pi, достаточно маленький, чтобы засунуть его под половицу, и едва ли потребляющий 10 Вт энергии, чтобы сделать все это. Именно это я и покажу вам сегодня

Вот план:

  • Установить Raspberry Pi с некоторым USB-накопителем и перенести системный диск на USB, чтобы продлить срок службы нашей SD-карты.
  • Поделитесь этим по сети.
  • Настройте VPN так, чтобы весь трафик направлялся через VPN, безопасно – и все останавливалось, если соединение не работает. Мы не хотим, чтобы провайдер знал, какой дистрибутив Linux мы предпочитаем.
  • Установите торрент-клиент с удаленным управлением, Transmission.

Звучит сложно, не так ли? Уверяю вас, не больше, чем несколько сотен команд Терминала. Многое из этого пересекается с нашим учебником по NAS Raspberry Pi, так что если вас не очень интересуют торренты и VPN, то лучше заглянуть туда

USB-накопитель

Начните со свежей установки Raspian, подключите интерфейс Ethernet и подключите USB-накопитель (через USB-концентратор с питанием, иначе, скорее всего, вы столкнетесь с ошибками, как это сделал я) – его пока не нужно форматировать. Войдите в систему удаленно, используя стандартные имя пользователя и пароль pi /raspberry, а затем выполните команду:

sudo raspi-config

Измените объем памяти, отведенной под графику, на 16 мегабайт – мы будем работать полностью без головы, поэтому графическая память вам не нужна. Выйдите, и давайте настроим несколько разделов на USB. Мы собираемся создать как минимум два – один для системы, чтобы сохранить жизнь нашей SD-карты, а другой для хранения загрузок. Сначала определите, какой диск является вашим USB

tail /var/log/messages

В моем случае его было легко идентифицировать как ‘sda’. Учитывая это, настройте следующую команду для входа в утилиту fdisk на соответствующем устройстве

sudo fdisk /dev/sda

Нажмите p , чтобы перечислить текущие разделы. Чтобы удалить все существующие разделы, нажмите d. Создайте новый основной раздел, нажав n , затем p. Когда появится запрос о размере, введите +8G. Теперь создайте еще один раздел для данных торрента (опять же, основной), или несколько разделов, если хотите. W запишет новую карту разделов на диск, когда вы закончите

После записи новой таблицы используйте следующие команды для форматирования дисков как linux ext4. Используйте дополнительные команды, если вы разбили диск более чем на два раздела

sudo mkfs.ext4 /dev/sda1
sudo mkfs.ext4 /dev/sda2
sudo mkdir /mnt/systemdrive
sudo mkdir /mnt/torrents
sudo mount /dev/sda1 /mnt/systemdrive
sudo mount /dev/sda2 /mnt/torrents
df -h

Последняя команда подтвердит, что разделы смонтированы правильно. Далее мы хотим скопировать данные с SD-карты на накопитель – это продлит срок его службы, поскольку позволит избежать постоянных операций чтения/записи в кэш и т. д. Для этого установите rsync :

sudo apt-get install rsync
sudo rsync -axv / /mnt/systemdrive

Это запустит длинную серию копирования файлов, поэтому немного покрутите пальцами

sudo cp /boot/cmdline.txt /boot/cmdline.orig
sudo nano /boot/cmdline.txt

Настройте это для чтения:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/sda1 rootfstype=ext4 elevator=deadline rootwait rootdelay=5

Затем измените fstab , чтобы монтировать их при запуске

sudo nano /etc/fstab

Добавьте следующие строки:

/dev/sda1 / ext4 defaults,noatime 0 1
/dev/sda2 /mnt/torrents ext4 defaults 0 2

Закомментируйте следующую строку, которая относится к SD-карте:

#/dev/mmcblk0p2 / ext4 defaults,noatime 0 1

Перезагрузите Pi с помощью

sudo reboot

Отсортировано! Теперь ваш Pi смонтирует корневой раздел с данными и раздел с торрентами

Поделитесь диском: Samba

Сначала убедитесь, что мы обновлены, удалите пакеты Wolfram Mathematica, которые всегда вызывали у меня проблемы при выполнении абсолютно любых действий на Pi (что-то связанное с math-kernel), затем установите необходимые пакеты

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get remove wolfram-engine
sudo apt-get install samba samba-common-bin
sudo nano /etc/samba/smb.conf

Нажмите CTRL-W и введите ‘security’, чтобы найти следующую строку и un закомментировать ее

security = user

Добавьте следующее, чтобы определить нашу общую папку torrents:

 torrents 
comment = torrents
path = /mnt/torrents
valid users = @users
force group = users
create mask = 0775
force create mode = 0775
security mask = 0775
force security mode = 0775
directory mask = 2775
force directory mode = 2775
directory security mask = 2775
force directory security mode = 2775
browseable = yes
writeable = yes
guest ok = no
readonly = no

Перезапустите службу Samba:

sudo service samba restart

Далее нам нужно добавить пользователя в систему. Замените ‘jamie’ на желаемое имя пользователя, под которым вы будете входить в систему для доступа к общей папке. Следующие команды попросят вас создать пароли, первый на уровне системы, а второй для Samba. Измените последние команды, если вы назвали свой диск с данными как-то иначе (и вот учебник по владению файлами в linux)

sudo useradd jamie -m -G users
sudo passwd jamie
sudo smbpasswd -a jamie
sudo chown pi:users /mnt/torrents
chmod g+w /mnt/torrents

Проверьте – вы должны иметь возможность подключиться с другой машины в сети и читать/записывать файлы на новый ресурс. Проверьте, что они появляются и на Pi с помощью ls из папки /mnt/torrents

Настройка VPN

Установите необходимые пакеты

sudo apt-get install openvpn resolvconf

Загрузите конфигурационные файлы OpenVPN от вашего провайдера. Вы можете ознакомиться со списком лучших VPN здесь, но не забудьте найти ту, которая дружественна к торрентам. Я сам пользуюсь privacy.io, но Private Internet Access – еще один популярный вариант в торрент-сообществах. В любом случае, вы сможете получить ZIP-файл с конфигурацией и сертификатом. Поместите их в папку torrents, в каталог под названием openvpn. Измените следующую команду так, чтобы она указывала на ваш файл конфигурации, который почти наверняка будет отличаться от privacyIO.ovpn

sudo openvpn --client --config /mnt/torrents/openvpn/privacyIO.ovpn --ca /mnt/torrents/openvpn/privacy.ca.crt --script-security 2

Если вы получите результат, подобный этому, все в порядке. Нажмите CTRL-C , чтобы завершить его. Это раздражает, хотя приходится вводить пароль, и нам нужно несколько модификаций, чтобы добавить скрипты запуска и остановки. Отредактируйте файл конфигурации (снова замените privacyIO.ovpn на файл.ovpn, который предоставил вам провайдер)

nano /mnt/torrents/openvpn/privacyIO.ovpn

Сначала измените следующую строку. В основном мы говорим, что будем хранить имя пользователя и пароль в файле под названием pass.txt

auth-user-pass /mnt/torrents/openvpn/pass.txt

Сохраните и введите:

nano /mnt/torrents/pass.txt

Введите имя пользователя в первой строке и пароль в следующей. Сохраните и попробуйте подключиться снова:

sudo openvpn --client --config /mnt/torrents/openvpn/privacyIO.ovpn --ca /mnt/torrents/openvpn/privacy.ca.crt --script-security 2

На этот раз у вас не должно быть ошибок при входе в систему. Ура! Далее снова откройте файл config и добавьте следующие строки:

route-up /mnt/torrents/openvpn/route-up.sh
down-pre
down /mnt/torrents/openvpn/down.sh

Здесь указаны некоторые скрипты, которые мы создадим позже для выполнения задач, когда соединение либо успешно устанавливается, либо разрывается. Убедитесь, что вы находитесь в директории mnt/torrents/openvpn , затем выполните следующее:

nano route-up.sh

Добавьте следующее, что обеспечит отправку трафика через VPN:

#!/bin/sh
iptables -t nat -I POSTROUTING -o tun0 -j MASQUERADE

Далее создайте сценарий down.sh

nano down.sh

Добавить:

#!/bin/sh
iptables -t nat -D POSTROUTING -o tun0 -j MASQUERADE

Наконец, мы хотим, чтобы скрипт открывал соединение, а не запускал его из командной строки, как мы только что сделали

nano vpn.sh

Вставьте команду запуска VPN из предыдущего файла. Если вы забыли:

sudo openvpn --client --config /mnt/torrents/openvpn/privacyIO.ovpn --ca /mnt/torrents/openvpn/privacy.ca.crt --script-security 2

Теперь сделайте все эти скрипты исполняемыми и запустите скрипт VPN при запуске

chmod +x down.sh
chmod +x route-up.sh
chmod +x vpn.sh
sudo nano /etc/rc.local

Добавьте следующую строку перед строкой exit 0. Мы просто указываем запустить этот скрипт при запуске

/mnt/torrents/openvpn/vpn.sh

Наконец, снова перезагрузите систему

Снова войдите в систему и выполните ifconfig. Вы поймете, что все работает, если увидите запись для tap0 (или tun0), и сможете успешно завернуть веб-страницу:

curl https://www.makeuseof.com

Торрент-клиент

Почти готово. Наконец, мы собираемся установить Transmission, который является легким и имеет красивый веб-интерфейс. Следующие команды устанавливают, затем останавливают демон – поскольку нам нужно сначала настроить его – затем открывают файл настроек для редактирования

sudo apt-get install transmission-daemon
sudo /etc/init.d/transmission-daemon stop
sudo nano /etc/transmission-daemon/settings.json

Измените ‘rpc-authentication-required’ на false; измените ‘rpc-whitelist’ на включение вашей локальной подсети – например:

'rpc-whitelist''127. 0. 0. 1,10. 0. 1.*'

Добавьте или скорректируйте следующие параметры, если они уже присутствуют:

'download-dir''/mnt/torrents'
'watch-dir''/mnt/torrents/'
'watch-dir-enabled'true
'umask'

Далее отредактируйте сам файл запуска демона, чтобы решить некоторые проблемы с разрешениями

sudo nano /etc/init.d/transmission-daemon

Измените USER=transmission-daemon на USER=root. Перезагрузите демон

sudo service transmission-daemon reload

Наконец, мы установим avahi-daemon для настройки сетевого взаимодействия bonjour/zeroconf, что означает, что нам не нужно будет использовать IP-адрес Pi для доступа к нему через браузер – вместо этого мы сможем использовать адрес raspberrypi.local

sudo apt-get install avahi-daemon

Предполагая, что ваше имя хоста по умолчанию (raspberrypi, но его можно изменить с помощью raspi-config), перейдите к:

http://raspberrypi.local:9091/transmission/web/

Сначала проверьте, правильно ли маскируется IP вашего торрента через VPN. Скачайте тестовый торрент-файл с TorGuard – графика загрузки выглядит как реклама, но это не так – и бросьте его в общую папку torrents

Мы уже настроили Transmission на просмотр этой папки на предмет новых торрентов, поэтому она должна быть добавлена немедленно. Продолжайте и закиньте туда несколько легальных торрентов дистрибутивов Linux

Торрент с проверкой IP-адреса должен выдать ошибку, а также IP-адрес, который он обнаружил. Убедитесь, что это не ваш домашний IP – если это так, то VPN настроен неправильно. По умолчанию все торренты, которые вы бросите в папку, будут переименованы в.added, и файл.part должен быть создан до завершения передачи. Проверьте, так ли это в вашей общей папке

Вот и все! Теперь у вас есть супермаломощный, безопасный, загружающий торренты Pi, оставляющий вашу рабочую станцию свободной для более важных дел. Возможно, вы захотите добавить UPnP-сервер для потоковой передачи мультимедиа по сети или использовать BitTorrent Sync для создания собственного облачного хранилища. Какие функции вы будете добавлять?

Об авторе

Алексей Белоусов

Привет, меня зовут Филипп. Я фрилансер энтузиаст . В свободное время занимаюсь переводом статей и пишу о потребительских технологиях для широкого круга изданий , не переставая питать большую страсть ко всему мобильному =)

Комментировать

Оставить комментарий