Главная | Контакты



Главная > Программы

Transmission - торрент-клиент для FreeBSD c web-интерфейсом

Поскольку все чаще и чаще необходимые файлы можно обнаружить только в  peer-to-peer сетях, решил на одном из ненагруженых серверов установить torrent-клиент, который работал бы круглосуточно. Выбор остановил на  transmission, поскольку управление данным torrent-клиентом можно выполнять через веб-интерфейс.

Выполним установку из системы портов:

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

Внесем необходимые опции запуска в rc.conf:

# echo '# Запуск transmission' >> /etc/rc.conf
# echo 'transmission_enable="YES"' >> /etc/rc.conf
# echo '# Каталог для .torrent-файлов' >> /etc/rc.conf
# echo 'transmission_watch_dir="/usr/torrents/.torrents/"' >> /etc/rc.conf
# echo '# Каталог для загруженых файлов' >> /etc/rc.conf
# echo 'transmission_download_dir="/usr/torrents/downloads/"' >> /etc/rc.conf
# echo '# Каталог конфигурационных файлов' >> /etc/rc.conf
# echo 'transmission_conf_dir="/usr/torrents/.transmission/"' >> /etc/rc.conf
# echo '# Имя пользователя, от имени которого будет работать transmission' >> /etc/rc.conf
# echo 'transmission_user="transmission"' >> /etc/rc.conf

Если опция запуска transmission_user не указана, то процесс запускается под пользователем transmission, а если задана пустой - тогда под root, что не рекомендуется. Также есть возможность указать дополнительные флаги запуска, воспользовавшись опцией запуска transmission_flags="".

Следующий шаг - создание каталогов и установка необходимых прав доступа. В процессе установки будет создан пользователь transmission. Если же хотите использовать другого пользователя - необходимо будет предварительно его создать.

# mkdir -p /usr/torrents/.torrents
# mkdir /usr/torrents/downloads
# mkdir /usr/torrents/.transmission
chown -R transmission:transmission /usr/torrents

Пора приступать к созданию конфигурационного файла. Самый простой способ - запуск и останов transmission. В процессе запуска он проверит наличие необходимых файлов и в случае необходимости, создаст их. 

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

После этого приступаем к редактированию конфигурационного файла settings.json, который будет создан в каталоге transmission_conf_dir. Немного подкоректировал дефолтный файл конфигурации. В результате имеем следующие параметры:

{
    "alt-speed-down": 50,
    "alt-speed-enabled": false,
    "alt-speed-time-begin": 540,
    "alt-speed-time-day": 127,
    "alt-speed-time-enabled": false,
    "alt-speed-time-end": 1020,
    "alt-speed-up": 50,
    "bind-address-ipv4": "10.227.206.45",
    "bind-address-ipv6": "::",
    "blocklist-enabled": false,
    "blocklist-url": "
http://www.example.com/blocklist", "cache-size-mb": 4, "dht-enabled": true, "download-dir": "/usr/torrents/downloads/", "download-queue-enabled": true, "download-queue-size": 5, "encryption": 1, "idle-seeding-limit": 30, "idle-seeding-limit-enabled": false, "incomplete-dir": "/usr/torrents/.incomplete", "incomplete-dir-enabled": true, "lpd-enabled": false, "message-level": 2, "peer-congestion-algorithm": "", "peer-id-ttl-hours": 6, "peer-limit-global": 200, "peer-limit-per-torrent": 50, "peer-port": 51413, "peer-port-random-high": 59999, "peer-port-random-low": 50000, "peer-port-random-on-start": false, "peer-socket-tos": "default", "pex-enabled": true, "pidfile": "/var/run/transmission/daemon.pid", "port-forwarding-enabled": true, "preallocation": 1, "prefetch-enabled": 1, "queue-stalled-enabled": true, "queue-stalled-minutes": 30, "ratio-limit": 2, "ratio-limit-enabled": false, "rename-partial-files": true, "rpc-authentication-required": true, "rpc-bind-address": "10.227.206.45", "rpc-enabled": true, "rpc-password": "very_hard_pawssword", "rpc-port": 9095, "rpc-url": "/transmission/", "rpc-username": "muff", "rpc-whitelist": "127.0.0.1,192.168.*.*", "rpc-whitelist-enabled": true, "scrape-paused-torrents-enabled": true, "script-torrent-done-enabled": false, "script-torrent-done-filename": "", "seed-queue-enabled": false, "seed-queue-size": 10, "speed-limit-down": 100, "speed-limit-down-enabled": false, "speed-limit-up": 100, "speed-limit-up-enabled": false, "start-added-torrents": true, "trash-original-torrent-files": false, "umask": 18, "upload-slots-per-torrent": 14, "utp-enabled": true, "watch-dir": "/usr/torrents/.torrents/", "watch-dir-enabled": true }

Значительная часть опций понятна и без комментариев. Рассмотрим некоторых из опций.

  • alt-speed-enabled - альтернативные настройки скорости;
  • alt-speed-time-begin - время в минутах от полуночи до начала действия альтернативных правил;
  • alt-speed-time-day - битовая маска дней, по которым действуют правила
    • Sunday: 1 (binary: 0000001)
    • Monday: 2 (binary: 0000010)
    • Tuesday: 4 (binary: 0000100)
    • Wednesday: 8 (binary: 0001000)
    • Thursday: 16 (binary: 0010000)
    • Friday: 32 (binary: 0100000)
    • Saturday: 64 (binary: 1000000)
      Например:
    • Рабочие дни: 62 (binary: 0111110)
    • Выходные: 65 (binary: 1000001)
    • Все дни: 127 (binary: 1111111)
       
  • alt-speed-time-enabled - альтернативные настройки скорости в зависимости от времени суток;
  • alt-speed-time-end - время в минутах от полуночи до окончания действия альтернативных правил;
  • bind-address-ipv4 - на каком IPv4 адресе "биндить" демон;
  • rpc-authentication-required - обязательна ли аутентификация для подключившихся;
  • rpc-bind-address - на каком  IPv4 адресе "биндить" удаленный доступ;
  • rpc-enabled - включение удаленного доступа;
  • rpc-password - пароль для подключения; хешируется после рестарта;
  • rpc-port - на каком порту "слушать" запросы к RPC
  • rpc-url - по какому адресу ожидать запросов;
  • rpc-username - имя пользователя для подключения;
  • rpc-whitelist - перечень IP-адресов, разделенных запятой, для которых разрешены удаленные подключения;
  • rpc-whitelist-enabled - включать ли rpc-whitelist  

Попытаемся запустить transmission:

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

Сервис успешно стартовал. Если же нет - ищем в логах причину ошибки. Также после успешного старта можно обнаружить такие записи в /var/log/messages:

... UDP Failed to set send buffer: No buffer space available ...
... UDP Failed to set receive buffer: No buffer space available ...

Исправить эту ситуацию можно увеличив максимально допустимый размер приемного буфера операционной системы:

# echo 'kern.ipc.maxsockbuf=2097152' >> /etc/sysctl.conf
# sysctl kern.ipc.maxsockbuf=2097152

Либо же, как вариант, можно в settings.json переменную utp-enabled выставить в значение "falce".

ВАЖНО! В случае необходимости внесения  изменений в файл конфигурации settings.json, предварительно необходимо остановить transmission.

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

transmission

Добавим торрент-файл, воспользовавшись иконкой "Open Torrent" в верхнем левом углу интерфейса:

transmission

После добавления торрента загрузка будет запущена автоматически:

transmission transmission

С остальными возможностями предоставленного интерфейса разобраться не составит труда.

Кстати, transmission дает довольно большое поле для творчества, разрешая запуск внешних скриптов.

Доступные переменные:

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

Например, сделаем так, что по завершению закачки на почту будет приходить уведомление. Для этого напишем скрипт finish.sh следующего содержания:

#!/bin/sh

echo $TR_TIME_LOCALTIME - $TR_TORRENT_NAME Downloaded | mail -s "Torrent download successfull" root [at] domain [dot] com (root [at] domain [dot] com)

exit 0;

Остановим transmission и внесем необходимые изменения в settings.json:

"script-torrent-done-enabled": true,
"script-torrent-done-filename": "/usr/torrents/finish.sh",

После этого снова запускаем transmission.

Материал взят с сайта: http://muff.kiev.ua/content/transmission-torrent-klient-dlya-freebsd-c-web-interfeisom

Главная > Программы