Установка торрента transmission c web-мордой

cd /usr/ports/net-p2p/transmission-daemon make clean && make install clean

Добавляем в /etc/rc.conf параметры запуска:


transmission_enable="YES"
# Где лежат конфиги
transmission_conf_dir="/usr/local/etc/transmission/"
# Куда складывается скаченное
transmission_download_dir="/usr/home/transmission/downloads"
# Пользователь под которым работает демон.
# Если задан пустой, то пускается под root'ом, что не рекомендуется.
# Если параметр не задан, то запускается под transmission
transmission_user="transmission"
# Дополнительные флаги запуска transmission_flags=""

Не забываем создать нужные папки и выдать на них разрешения.

mkdir /usr/local/etc/transmission
chown -R transmission:transmission
/usr/local/etc/transmission
mkdir -p /usr/home/transmission/downloads
chown -R transmission:transmission /usr/home/transmission

— Все директории кроме той, что указана в директиве transmission_conf_dir, нужно создать до первого запуска
— У пользователя, под которым будет работать transmission, должен быть доступ на чтение и запись во все указанные в rc.conf директории
— Пользователь transmission создается при установке программы, если хотите использовать другого пользователя, то создавайте ручками.

Теперь нам нужен конфигурационный файл. Для его создания запускаем и выключаем transmission:

# /usr/local/etc/rc.d/transmission start 
# /usr/local/etc/rc.d/transmission stop

Файл создан! /home/media/torrents/.transmission/settings.json

Что там есть интересного для нас?

"bind-address-ipv4": "0.0.0.0",

На каких ip-адресах работает transmission. 0.0.0.0 означает, что используются все доступные ip-адреса. Если необходимо, то можно указать только конкретный ip-адрес.

"peer-port": 51413, 
"peer-port-random-high": 65535,
"peer-port-random-low": 49152,

На каких портах идет работа. Я решил, что такой диапазон по умолчанию между значениями peer-port-random-low и peer-port-random-high — это слишком жирно и указал

"peer-port-random-high": 55560, 
"peer-port-random-low": 55556,

Внимание! Указанные выше (а также ещё некоторые) порты необходимо разрешить в брандмауэре! Вот образец для стартового скрипта ipfw:

# torrent incoming 
$fw add allow ip from me 55556-55560 to any out
$fw add allow ip from any to me 55556-55560 in
$fw add allow ip from me 6881-6889 to any out
$fw add allow ip from any to me 6881-6889 in
# transmission web-interface
$fw add allow ip from me 9090 to any out
$fw add allow ip from any to me 9090 in
# transmission incoming listen $fw add allow ip from me 51413 to any out
$fw add allow ip from any to me 51413 in

Далее. Настройки управления через web-интерфейс.

"rpc-authentication-required": false, 
"rpc-bind-address": "0.0.0.0",
"rpc-enabled": true,
"rpc-password": "{0bad0a49bd171d9d225da4e435a91ff6052605723MoqUS1K",
"rpc-port": 9091,
"rpc-url": "/transmission/",
"rpc-username": "",
"rpc-whitelist": "127.0.0.1",
"rpc-whitelist-enabled": true,

rpc-authentication-required — обязательна ли аутентификация того, кто пытается подключиться? Да, поэтому ставим true
rpc-bind-address — на каком ip поднимать интерфейс. Значение 0.0.0.0 — на всех
rpc-enabled — web-интерфейс включен или выключен
rpc-password — пароль для доступа. Запишите его простым текстом вместо существующего, при запуске transmission сам его зашифрует
rpc-port — порт, на котором работает web-интерфейс. Настоятельно рекомендуется поменять на другой, например 9090 и не забыть его разрешить в брандмауере!
rpc-url — пусть останется так как есть
rpc-username — имя пользователя для доступа, имя придумайте сами
rpc-whitelist — с каких ip можно подключаться. Пустая строка у меня не прокатила (0.0.0.0 не пробовал, может прокатит), поэтому я оставил этот параметр в покое
rpc-whitelist-enabled — использовать или нет rpc-whitelist. Я хотел соединяться с любых адресов, поэтому задал false.

Используем
Запускаем

# /usr/local/etc/rc.d/transmission start

Заходим в web-морду. Открываем браузер и в адресной строке пишем

http:///transmission/web/

У нас спрашивают имя пользователя и пароль (которые мы задали в настройках), после чего допускают к управлению.

Добавление торрентов возможно двумя способами

— через web-интерфейс (папка со стрелкой вверх)
— добавлением торрент-файла в директорию, заданную в директиве transmission_watch_dir файла /etc/rc.conf. После успешного добавления, к имени торрент-файла будет приписано .added, такой файл можно удалить.

Полезности
Чем хорош transmission, так это тем, что на всяческие события можно приделать собственный внешний скрипт-обработчик.

Например, я хотел, чтобы по окончанию скачивания файла, ссылка на него выкладывалась в директорию /home/media/torrents/.finished а также на определенный email приходило письмо о том, что файл скачался. Нет ничего проще.

Создаем файл /home/media/torrents/.transmission/torrent_done.sh со следующим содержимым:

    
#!/bin/sh
# create link
ln -s /home/media/torrents/$TR_TORRENT_NAME /home/media/torrents/.finished/$TR_TORRENT_NAME
# send email echo $TR_TIME_LOCALTIME - $TR_TORRENT_NAME Downloaded | mail -s "Torrent Done" root@server exit 0;

Переменные, которые можно использовать в скрипте:
$TR_APP_VERSION — версия transmission
$TR_TORRENT_ID — id торрента, как оно показывается в remote-GUI
$TR_TORRENT_NAME — имя торрента как оно отображается в интерфейсе
$TR_TORRENT_DIR — директория торрента
$TR_TORRENT_HASH — хэш торрента
$TR_TIME_LOCALTIME — дата и время запуска стрипта

Выключаем transmission и редактируем его конфигурационый файл /home/media/torrents/.transmission/settings.json

"script-torrent-done-enabled": true, 
"script-torrent-done-filename": "/home/media/torrents/.transmission/torrent_done.sh",

Запускаем transmission

Источник:
https://www.site-motor.ru/docs/freebsd/net-p2p_transmission.html

http://www.lissyara.su/articles/freebsd/programms/transmission/

Автоматическое обновление чёрных списков в transmission

Намедни мы настроили transmission понимать черный список и не терять его при рестарте. Сегодня для альтернативно ленивых — автоматизация обновления этого чёрных списков, в том числе из нескольких источников.

1. Настраиваем трансмишн на работу с черными списками как описано ранее

2. Выясняем папку где лежит конфиг. Для этого
Смотрим в Services > BitTorrent
параметр Configuration directory
(напоминаю, мы его давным-давно задавали руками)
В моем случае /mnt/WD2T/Files/start/sys

3. К сожалению, ЖЖ корёжит коды, а яндекс не даёт долгоживущих прямых ссылок, так что здесь слегка через париЖ .
Качаем скрипт blocklists_updater.sh с моего яндекс диска
https://yadi.sk/d/Pdkbrzpv3EryDQ
Переносим на NAS, например в папку Медиа. А оттуда — в созданную в подпапку blocklists папки из п 2
Задаём права и владельца. Хоть это и скрипт, права на исполнения давать не считаю нужным, будем вызывать явным образом

nas4free sys/ root~$ cp -a /mnt/Pool/Media/blocklists_updater.sh /mnt/WD2T/Files/start/sys/blocklists
nas4free sys/ root~$ cd /mnt/WD2T/Files/start/sys/blocklists
nas4free blocklists/ root~$ chown transmission:www blocklists_updater.sh
nas4free blocklists/ root~$ chmod 666  blocklists_updater.sh
nas4free blocklists/ root~$ ls -la
total 3358
drwxr-xr-x  2 transmission  www        4 Mar  1 22:35 ./
drwxrwxrwx  7 www           www       13 Mar  1 22:32 ../
-rw-rw-rw-  1 transmission  www  3280728 Feb 24 01:23 blocklist.bin
-rw-rw-rw-  1 transmission  www     3789 Mar  1 22:29 blocklists_updater.sh

3. редактируем скрипт blocklists_updater.sh

nas4free blocklists/ root~$ nano blocklists_updater.sh

Здесь параметр в 9 строке надо указать имя вашей конфигурационной папки (из п 2).
В моём случае 8 и 9 строки

#Path configuration
folderConfigTransmission=/mnt/WD2T/Files/start/sys

Выходим из nano с сохранением (Ctrl-X, Y, Enter)

4. Список блоклистов скрипт читает из файла list_blocklist, расположенного в конфигурационной папке.
При желании что-то изменить можете заполнить его по шаблону: LIST_NAME AUTHOR FILENAME_AFTERDOWNLOAD BLOCKLIST_URL
Списков в файле может быть несколько — трансмишн сам при нужде должен склеить. Я использую тот же список, что в ручном варианте.

В результате у меня содержимое файлика выглядит так:

JohnBitsurge JohnBitsurge biglist.gz «http://john.bitsurge.net/public/biglist.p2p.gz»

Кладём эту строку в этот файл,
nas4free blocklists/ root~$ cd ..
nas4free sys/ root~$ nano list_blocklist

Выходим из nano с сохранением (Ctrl-X, Y, Enter)
Задаём права-владельца
nas4free sys/ root~$ chown transmission:www list_blocklist
nas4free sys/ root~$ chmod 666 list_blocklist

5. Давайте запустим наш скрипт с полными путями, как будем запускать в кроне
/bin/sh /mnt/WD2T/Files/start/sys/blocklists/blocklists_updater.sh

В результате нескольких запусков в логе вижу
nas4free sys/ root~$ cat update_blocklists.log
[Wed Mar  1 23:03:03 MSK 2017] Update found and downloaded for: JohnBitsurge (JohnBitsurge)
[Wed Mar  1 23:03:57 MSK 2017] No update for: JohnBitsurge (JohnBitsurge)
[Wed Mar  1 23:04:02 MSK 2017] No update for: JohnBitsurge (JohnBitsurge)

То есть первый раз файл загрузился, далее скрипт проверяет оставшийся неизменным размер и не грузит. Если размер изменится, скрипт должен его загрузить и  рестартовать transmission. Убедимся в этом со временем. Но для этого

6. Добавляем через веб-морду наш скриптик в крон от пользователя root (к сожалению, от transmission в nas4free не удаётся рестартовать одноимённый сервис 🙁 ). Я запускаю его раз в сутки, но можно и раз в неделю/месяц.

На картинке я вызываю скрипт ежедневно в 02:05

Жмём Add, затем Apply changes
Затем вернуться к редактированию скрипта и прогнать скрипт, нажав кнопку Run Now
И взглянуть в лог как выше.

UPD от 05 марта 2017
Вроде работае, обновления выходят, скрипт их качает

nas4free sys/ root~$ cat update_blocklists.log
(…)
[Thu Mar  2 02:05:01 MSK 2017] No update for: JohnBitsurge (JohnBitsurge)
[Fri Mar  3 02:05:09 MSK 2017] Update found and downloaded for: JohnBitsurge (JohnBitsurge)
[Fri Mar  3 02:05:10 MSK 2017] No update for: JohnBitsurge (JohnBitsurge)
[Sat Mar  4 02:05:10 MSK 2017] Update found and downloaded for: JohnBitsurge (JohnBitsurge)
[Sat Mar  4 02:05:10 MSK 2017] No update for: JohnBitsurge (JohnBitsurge)
сейчас пишет что 757 944 правил /UPD

Скрипт допилил камрад Максим Чернов на основе ветки из оффрума

Источник