Что это и зачем
Transmission-daemon это торрент-клиент работающий в фоне; управление осуществляется посредством web-клиента. Наша задача установить transmission-daemon на сервер (Ubuntu server 20.04), где он будет работать в фоновом режиме. Так же, он будет в автоматическом режиме сканировать и подбирать торренты помещенные в папку /torrents и закачивать их в папку /downloads.
План
Установка transmission-daemon из репозитория;
Создание отдельного пользователя для запуска transmission-daemon. Включение пользователей взаимодействующих с Transmission в группу transmission-daemon.;
Создание папок /torrents и /downloads;
Создание папки для файлов локальной настройки у пользователя и копирование settings.json;
Настройка файла /etc/default/transmission-daemon;
Переопределение пользователя запускающего transmission-daemon;
Настройка файла settings.json;
Подключение к 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
Что нам необходимо настроить обязательно:
папку куда будут закачиваться файлы
папка из которой будут подхватываться torrent'ы
url и порт доступа к web-интерфейсу Transmission-daemon
пользователя и пароль для доступа к 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, |
|
"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)
Spiritschaser
31.03.2022 23:49+1Эх...
Алгоритм неправильный: не хватает выкачивания сорцов, наложение патчей для последовательной загрузки и сборки пакета.HabraZ0
01.04.2022 01:08именно для последовательной закачки пользуюсь qbittorentом. Автор, даешь мануал по патчингу трансмишена?
Rastler
01.04.2022 00:05+3Написали бы лучше про Transmission Remote GUI https://github.com/transmission-remote-gui/transgui
Интерен тем, что написан на Pascal и работает уже очень много лет, да ещё и поддерживается :)mk2
01.04.2022 02:43Жаль только последний релиз был аж в 2019, а собирать самому неохота разбираться.
FotoHunter
01.04.2022 06:50На эту тему было 100500 шикарных статей, мне больше всего нравится связка transmission + samba + dlna + клиент для Android.
Лучше бы про монетизацию торрентов в BTTC написал, на эту тему статей меньше и работает криво, у меня с этим что то пошло не так ????
sim2q
01.04.2022 06:59А вдруг кто то знает - как бы так к нему прикрутить что бы ко всем скачиваемым торрентам добавлялся дружественный пир. Сам демон стоит на честном ip и нужно что бы всегда в первую очередь отдавал другу который за NAT.
Открыл тут недавно для себя doxygen, натравил на исходники libtransmission (вся основная кухня там как я понял) и....Там такой лес - взаимосвязи на три моих экрана для входных функций.FotoHunter
02.04.2022 23:34если хочется подобного, поиграйтесь c MlDonkey - это одновременно и клиент и узел торрентов, осликов и всякой архаики. Там можно добавлять "друзей" и к примеру выкаченые торренты автоматом попадают в раздачу StrongDC.... к ней есть гуй Санчо, но можно и через веб-форму искать раритеты, которых нет на торрентах и в локалках.
Earthsea
01.04.2022 10:05Если это инструкция для чайников, то надо рассказывать полностью, как решить задачу, от начала и до конца.
Нужно добавить информацию, у каких хостеров можно размещать такую торрентокачалку. А также рассказать, как сделать свой домашний сервер видимым снаружи, через роутер и NAT при отсутствии белого IP.
Без этого ценность статьи около 0.
nitro80
01.04.2022 10:31У меня такая качалка стоит на cubieboard, конечно, 100мбит-ного порта не очень хватает, особенно заметно при одновременном просмотре тяжёлого фильма и закачке тоже чего-нибудь большого и на хорошей скорости, но в целом, выкидывать за nat имхо лишнее
imotorin
прошу прощения, в чём научная новизна произведения?
Notimer
к тому же вопросу, зачем на Хабре научпоп.
unsignedchar
Это скорее заметка уровня "попал под лошадь гр. Бендер. Лошадь отделалась лёгким испугом".