Что это и зачем

Transmission-daemon это торрент-клиент работающий в фоне; управление осуществляется посредством web-клиента. Наша задача установить transmission-daemon на сервер (Ubuntu server 20.04), где он будет работать в фоновом режиме. Так же, он будет в автоматическом режиме сканировать и подбирать торренты помещенные в папку /torrents  и  закачивать их в папку /downloads.

План

  1. Установка transmission-daemon из репозитория;

  2. Создание отдельного пользователя для запуска transmission-daemon. Включение пользователей взаимодействующих с Transmission в группу transmission-daemon.;

  3. Создание папок /torrents и /downloads;

  4. Создание папки для файлов локальной настройки у пользователя и копирование settings.json;

  5. Настройка файла /etc/default/transmission-daemon;

  6. Переопределение пользователя запускающего transmission-daemon;

  7. Настройка файла settings.json;

  8. Подключение к transmission-daemon по web-интерфейсу.

1. Установка

Transmission-daemon имеется в стандартном репозитории Ubuntu. Установка из репозитория Ubuntu (от пользователя с административными правами):

sudo apt install transmission-daemon

После установки приложение будет сразу запущено. Так же автоматически создается пользователь debian-transmission (или подобный в зависимости от версии), данный пользователь управляет всеми процессами transmission, поэтому все пользователи использующие transmission должны быть включены в его группу.

Для дальнейшей настройки останавливаем Transmission-daemon

# остановить сервис
sudo systemctl stop transmission-daemon.service
# проверить состояние
sudo systemctl status transmission-daemon.service

Расположение конфигурационных файлов transmisson-daemon:

файл инициализирующий старт демона:

/etc/init.d/transmission-daemon

Файл конфигурации:

/etc/default/transmission-daemon

Файл global settings:

/etc/transmission-daemon/settings.json

Файл local settings:

~/.config/transmission-daemon/settings.json

2. Создание пользователя для запуска Transmision

В нашем случае для управления transmission-daemon мы создадим отдельного пользователя от имени которого и будет работать этот сервис. 

sudo adduser server
# во время установки автоматически создается пользователь debian-transmission в # его группу надо добавить нового пользователя
sudo usermod -aG debian-transmission server

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

3. Создание папок /torrents и /downloads

Создадим папки для торрентов и загрузок и установим соответствующие права.

sudo mkdir -m 775 /home/server/torrents
sudo mkdir -m 775 /home/server/downloads
sudo chown server:server /home/server/torrents
sudo chown server:server /home/server/downloads

4. Создание папки для файлов локальной настройки у пользователя и копирование settings.json

В папке /etc/transmission-daemon/ лежат файлы конфигурации transmission-daemon по умолчанию, для того чтобы создать конфигурацию используемую с нашим в новь созданным пользователем нужно скопировать файлы конфигурации в домашнюю папку пользователя/home/server/.config/ (или любую другую, путь к нему мы укажем дальше) и установить права позволяющие участникам группы debian-transmission изменять и читать их.

sudo cp -R /etc/transmission-daemon/ /home/server/.config/
sudo chmod -R 775 /home/server/.config

Файл который нам необходим называется setting.json. В этом файле находятся все настройки transmission-daemon. К его настройке мы вернемся в конце, когда будем делать окончательную настройку сервиса.

5. Настройка файла /etc/default/transmission-daemon

Для того, чтобы использовать файл настроек из  /home/transmission/.config/settings.json, необходимо указать его местоположение в файле /etc/default/transmission-daemon

# defaults for transmission-daemon
# sourced by /etc/init.d/transmission-daemon

# Change to 0 to disable daemon
ENABLE_DAEMON=1

# Здесь нужно указать путь к файлу настроек 
# /etc/transmission-daemon/settings.json
CONFIG_DIR="/home/server/.config/transmission-daemon/settings.json"

# Default options for daemon, see transmission-daemon(1) for more options
OPTIONS="--config-dir $CONFIG_DIR"

# (optional) extra options to start-stop-daemon
#START_STOP_OPTIONS="--iosched idle --nicelevel 10"

6. Переопределение пользователя запускающего transmission-daemon

 Далее настраиваем файл инициализации /etc/init.d/transmission-daemon в USER указываем имя пользователя от имени которого будет запускается сервис

NAME=transmission-daemon
DAEMON=/usr/bin/$NAME
USER=server
STOP_TIMEOUT=30

правильно это сделать через переопределение:

Делать это нужно при запущенном сервисе. После того как мы убедились что сервис запущен. Приступаем к переопределению конфигурации сервиса. Файл в котором конфигурируется запуск сервиса находится в /etc/systemd/system/transmission-daemon.sevice.d/override.conf

возможны два варианта действий:

Вариант 1. можно внести изменения в сам файл override.conf , делать это нужно с правами администратора.

Вариант 2. Используем команду:

sudo systemctl edit transmission-daemon.service

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

[Service]
User=<username>

и сохранить изменения.

7. Настройка файла settings.json

!!! Перед внесением изменений в  settings.json, клиент и демон  должен  быть закрыт и остановлен, в противном случае параметры будут возвращены в предыдущее состояние.

Поэтому всегда перед изменении настроек в файле необходимо остановить службу  transmission-daemon :

sudo service transmission-daemon stop

Что нам необходимо настроить обязательно:

  1. папку куда будут закачиваться файлы

  2. папка из которой будут подхватываться torrent'ы

  3. url и порт доступа к web-интерфейсу Transmission-daemon

  4. пользователя и пароль для доступа к web-интерфейсу

1. Установка папки download

"download-dir": "/home/server/downloads",

2. Установка папки для торрентов

"watch-dir-enabled": true,
"watch-dir": "/home/server/torrents"

первая опция активирует отслеживание папки с торрентами, вторая устанавливает путь к отслеживаемой папке. После запуска Transmission-daemon будет отслеживаться эта папка и как тольке в ней появиться новый торрент начнется его скачивание.

3. Настройка url web-интерфейса и установка имени и пароля

    "rpc-password": "{80ca2ab57b39fa2f949365bf0256b85afdc49a354MayeihV",

rpc-password между кавычками вставляем пароль в текстовой форме, при запуске демона он будет изменен на хеш пароля

    "rpc-port": 9091,

rpc-port на каком порту работает web-интерфейс

    "rpc-url": "/transmission/",

rpc-url постфикс адреса url (192.168.0.10/transmission/)

    "rpc-username": "User",

rpc-username имя пользователя для доступа к web-интерфейсу

    "rpc-whitelist": "127.0.0.1,192.168.1.*",

rpc-whitelist  список адресов имеющих доступ к web-интерфесу

    "rpc-whitelist-enabled": true,

rpc-whitelist-enabled вкл/выкл использование "белого" списка адресов

По окончании всех настроек запускаем службу

sudo service transmission-daemon start

Настроек у transmission множество, краткое описание других параметров settings.json найденное https://pcminipro.ru/os/nastrojka-transmission-daemon-settings-json/ привожу ниже:

«alt-speed-down»: 50,

скорость альтернативной загрузки KB/s Нажатие «Черепаха» в gui активирует настройки альтернативной загрузки

«alt-speed-enabled»: false,

включена ли альтернативная загрузка да/нет (true/false)

«alt-speed-time-begin»: 540,

время начала альтернативной загрузки с 540 минуты с 9:00

«alt-speed-time-day»: 127,

по каким дням включать альтернативные настройки: 127-по всем

Воскресенье: 1 (binary: 0000001)

Понедельник: 2 (binary: 0000010)

Вторник: 4 (binary: 0000100)

Среда: 8 (binary: 0001000)

Четверг: 16 (binary: 0010000)

Пятница: 32 (binary: 0100000)

Суббота: 64 (binary: 1000000)

Например:

Рабочие дни: 62 (binary: 0111110)

Выходные: 65 (binary: 1000001)

Все дни: 127 (binary: 1111111)

«alt-speed-time-enabled»: true,

включено ли время альтернативной загрузки да/нет (true/false)

«alt-speed-time-end»: 1020 ,

время окончания альтернативной загрузки до 1020 минуты до 17:00

«alt-speed-up»: 50,

скорость альтернативной отдачи KB/s

«bind—address—ipv4″: «0.0.0.0»,

прослушивается на всех адресах IPv4 и IPv6, доступных в вашей системе

«bind—address—ipv6″: «::»,

прослушивается на всех адресах IPv4 и IPv6, доступных в вашей системе

«blocklist-enabled»: false,

Использовать списки блокировки URL

«blocklist-url»: «http://www.example.com/blocklist»,

списки блокированных URL

«cache-size-mb»: 4,

Размер (по умолчанию = 4), в мегабайтах, для распределения кэша памяти. Кэш используется для совместного использования пакетного ввода-вывода, поэтому увеличение размера кеша может быть использовано для уменьшения количества чтения и записи на диске.

«dht-enabled»: true,

Включить распределенную таблицу хэшей(DHT)

«download-dir»: «/home/Ваш_пользователь/Multimedia»,

директория для скачанных файлов

«download-limit»: 100,

ограничение пропускной способности, KB/s

«download-limit-enabled»: false,

включение ограничения пропускной способности (по умолчанию = false)

«download-queue-enabled»: true,

Очередь. Когда true, transmission будет загружать только download-queue-size незавершенные торренты.

«download-queue-size»: 5,

Размер очереди. Количество загружаемых активных торрентов .

«encryption»: 1,

(0 = Предпочитают незашифрованные соединения, 1 = Предпочитают зашифрованные соединения, 2 = Требовать шифрованные соединения, по умолчанию = 1) Предпочтение шифрования . Шифрование может помочь обойти некоторую фильтрацию ISP, но ценой немного более высокой загрузки ЦП.

«idle-seeding-limit»: 30,

Остановить раздачу после простоя в течение N минут.

«idle-seeding-limit-enabled»: false,

Останавливать при простое. По умолчанию = false

«incomplete-dir»: «/home/Ваш_пользователь/Multimedia/.incomplete»,

путь, где будут распологаться не довершившие закачку торренты. Точка впереди директории говорит что она должна быть скрыта

«incomplete—dir—enabled«: false,

хранить ли скачивающиеся файлы в отдельной папке (true/false)

«lpd-enabled»: false,

Включить обнаружения локальных BitTorrent-пиров, и, следовательно, сокращения трафика, проходящего через канал Интернет-провайдера и максимального использования пропускной способности

«message-level»: 2,

количество информации, выдаваемой в /var/log/syslog, значение можно менять 0 = None, 1 = Error, 2 = Info, 3 = Debug

«peer-congestion-algorithm»: «»,

Алгоритм управления TCP описано на http://www.pps.jussieu.fr/~jch/software/bittorrent/tcp-congestion-control.html

«peer-limit-global»: 240,

Используемое количество пиров всего

«peer-limit-per-torrent»: 60,

Используемое количество пиров на один торрент

«peer-port»: 51413,

порт входящих соединений. Если вы за NAT’ом, то позаботьтесь о пробросе этого порта

«peer-port-random-high»: 65535,

Верхняя граница портов

«peer-port-random-low»: 49152,

Нижняя граница портов

«peer-port-random-on-start»: false,

Менять рандомно порт при старте transmission

«peer-socket-tos»: «default»,

параметр Type-Of-Service (TOS) для исходящих пакетов TCP. Возможные значения: «default», «lowcost», «throughput», «lowdelay» и»reliability». Значение «lowcost» рекомендуется, если вы используете интеллектуальный маршрутизатор

«pex-enabled»: true,

Включить расширение BitTorrent-протокола для обмена списками участников

«port-forwarding-enabled»: false,

Включить UPnP или NAT-PMP

"preallocation": 1,

Влияет на фрагментацию записанных файлов (0 = Off, 1 = Fast, 2 = Full (медленнее, но уменьшает фрагментацию диска), по умолчанию = 1)

"prefetch-enabled": true,

 по-умолчанию = true

"queue-stalled-enabled": true,

 Когда true, торренты, не закачивающие данные в течении  queue-stalled-minutes , обрабатываются как «застопорены», очередь продвигается дальше.

"queue-stalled-minutes": 30,

 Время ожидания получения данных при закачке

"ratio-limit": 2,

 Лимит на отдачу (default = 2)

"ratio-limit-enabled": false,

 Включить лимит раздачи

"rename-partial-files": true,

Менять расширение файла не докаченного файла на ".part" (true/false)

"rpc-authentication-required": false,

требовать аутентификацию для удаленного управления

"rpc-bind-address": "0.0.0.0",

 IP адрес Transmission для входа через веб морду

"rpc-enabled": true,

 включение удаленного управления. Сюда же относится и управление через web-интерфейс

"rpc-password": "Пароль",

 Пароль для входа в web-интерфейс transmission-daemon. После сохранения настроик пароль будет зашифрован.

"rpc-port": 9091,

 порт к web-интерфейсу

"rpc-url": "/transmission/",

 настройка адреса web-интерфейса

"rpc-username": "Пользователь",

Имя пользователя для входа в web-интерфейс transmission-daemon.

"rpc-whitelist": "127.0.0.*,192.168.1.*",

 список разрешенных ip адресов для доступа к web-интерфейсу

"rpc-whitelist-enabled": true,

 включение доступа с ip адресов да/нет (true/false)

"scrape-paused-torrents-enabled": true,

 по умолчанию = true

"script-torrent-done-enabled": false,

 Запуск сценария при завершении торрента

"script-torrent-done-filename": "",

 Путь к скрипту

"seed-queue-enabled": false,

 Когда true. Передача будет обрабатывать только  seed-queue-size незастопоренные торренты.

"seed-queue-size": 10,

 количество

"speed-limit-down": 1500,

 ограничение скорости обычной загрузки

"speed-limit-down-enabled": false,

 включение ограничения обычной загрузки да/нет (true/false)

"speed-limit-up": 1000,

 ограничение скорости обычной отдачи

"speed-limit-up-enabled": false,

 включение ограничения обычной отдачи да/нет (true/false)

"start-added-torrents": true,

 Начать торренты, как только они будут добавлены

"trash-original-torrent-files": true,

 Удалить торренты, добавленные из каталога watch

"umask": 18,

 Устанавливает маску создания

"upload-limit": 100,

 Ограничение раздачи, KB/s

"upload-limit-enabled": 0,

 Включить ограничение (0 или false - нет, 1 или true - да)

"upload-slots-per-torrent": 14,

 количество раздаваемых торрентов

"utp-enabled": true,

 Включить протокол микротранспорта (μTP)

"watch-dir": "/home/Ваш_пользователь/Torrents",

 директория с которой подхватывать торрент-файлы для скачивания

"watch-dir-enabled": true

 включает или отключает сканирование директории с файлами торрент

Подключение к Web-интерфейсу

Если в конфигурационном файле settings.json все сделано правильно и демон запущен, то в любом браузере подключаемся к нему введя в адресную строку <host>:9091/transmission/, и видим привычный интерфейс. Не забывайте о том, что если включён фильтр по белому списку, то адрес с которого происходит подключение должен быть в него внесен.

настройка закончена.

Комментарии (18)


  1. imotorin
    31.03.2022 20:12
    +11

    прошу прощения, в чём научная новизна произведения?


    1. Notimer
      01.04.2022 09:30

      к тому же вопросу, зачем на Хабре научпоп.


      1. unsignedchar
        01.04.2022 09:39

        Это скорее заметка уровня "попал под лошадь гр. Бендер. Лошадь отделалась лёгким испугом".


  1. aokoroko
    31.03.2022 22:32

    По каким средствам?


  1. psynix
    31.03.2022 22:38
    +6

    не хочу показаться неоригинальным, но зачем это ...


  1. Spiritschaser
    31.03.2022 23:49
    +1

    Эх...
    Алгоритм неправильный: не хватает выкачивания сорцов, наложение патчей для последовательной загрузки и сборки пакета.


    1. HabraZ0
      01.04.2022 01:08

      именно для последовательной закачки пользуюсь qbittorentом. Автор, даешь мануал по патчингу трансмишена?


  1. Rastler
    01.04.2022 00:05
    +3

    Написали бы лучше про Transmission Remote GUI https://github.com/transmission-remote-gui/transgui
    Интерен тем, что написан на Pascal и работает уже очень много лет, да ещё и поддерживается :)


    1. nitro80
      01.04.2022 02:23

      1. wavebvg
        01.04.2022 10:14

        Как мне, Gear Shift будет поудобнее. Но он "очень старый".


    1. mk2
      01.04.2022 02:43

      Жаль только последний релиз был аж в 2019, а собирать самому неохота разбираться.


  1. zolti
    01.04.2022 01:49
    +1

    Пользуюсь вот этим, работает отлично, выглядит удобнее конкурентов :)

    https://github.com/ronggang/transmission-web-control


  1. FotoHunter
    01.04.2022 06:50

    На эту тему было 100500 шикарных статей, мне больше всего нравится связка transmission + samba + dlna + клиент для Android.

    Лучше бы про монетизацию торрентов в BTTC написал, на эту тему статей меньше и работает криво, у меня с этим что то пошло не так ????


  1. sim2q
    01.04.2022 06:59

    А вдруг кто то знает - как бы так к нему прикрутить что бы ко всем скачиваемым торрентам добавлялся дружественный пир. Сам демон стоит на честном ip и нужно что бы всегда в первую очередь отдавал другу который за NAT.
    Открыл тут недавно для себя doxygen, натравил на исходники libtransmission (вся основная кухня там как я понял) и....Там такой лес - взаимосвязи на три моих экрана для входных функций.


    1. FotoHunter
      02.04.2022 23:34

      если хочется подобного, поиграйтесь c MlDonkey - это одновременно и клиент и узел торрентов, осликов и всякой архаики. Там можно добавлять "друзей" и к примеру выкаченые торренты автоматом попадают в раздачу StrongDC.... к ней есть гуй Санчо, но можно и через веб-форму искать раритеты, которых нет на торрентах и в локалках.


  1. ecliptic
    01.04.2022 08:59

    тег devops? вы таки шутите


  1. Earthsea
    01.04.2022 10:05

    Если это инструкция для чайников, то надо рассказывать полностью, как решить задачу, от начала и до конца.

    Нужно добавить информацию, у каких хостеров можно размещать такую торрентокачалку. А также рассказать, как сделать свой домашний сервер видимым снаружи, через роутер и NAT при отсутствии белого IP.

    Без этого ценность статьи около 0.


    1. nitro80
      01.04.2022 10:31

      У меня такая качалка стоит на cubieboard, конечно, 100мбит-ного порта не очень хватает, особенно заметно при одновременном просмотре тяжёлого фильма и закачке тоже чего-нибудь большого и на хорошей скорости, но в целом, выкидывать за nat имхо лишнее