Главная
Главная Руководства FreeBSD › FreeBSD, установка и настройка торрент-клиента transmission



Автор:

Статья опубликована: 2017-08-13 23:03:57
Последние правки: 2017-08-13 23:18:17

На сервере вместо gui-клиента удобней использовать тот, который работает как даемон. Такой торрент-клиент для FreeBSD существует и он называется transmission. Данная программа есть в виде серверной части, которая может управляться через браузер - очень удобно.

  • Устанавливаем (под root)
    # cd /usr/ports/net-p2p/transmission-daemon
    # make install clean
    

  • Настраиваем

    Добавляем строчки в /etc/rc.conf
    # разрешаем запуск transmission
    transmission_enable="YES"
    # директория, в которой будут искаться .torrent-файлы
    transmission_watch_dir="/home/media/torrents/.torrents/"
    # директория, куда будут качаться файлы
    transmission_download_dir="/home/media/torrents/"
    # директория, где будут жить конфигурационные файлы
    transmission_conf_dir="/home/media/torrents/.transmission/"
    # пользователь, под которым будет работать transmission
    transmission_user="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