Pull to refresh

Transmission для нескольких пользователей

image
В данной статье будет освещен вопрос, как сделать торрент-качалку Transmission мультипользовательской. То есть нам нужно, чтобы было несколько логинов/паролей, и у каждого пользователя был свой список загрузок и свои директории. Готового решения не нашел, поэтому придумал несколько извращенное решение этой задачи, чем и готов поделиться с вами. Кому интересно — добро пожаловать под кат!

Суть решения — запуск 2 (или более) процессов: один от root, другой от пользователя.

Пошаговый процесс установки и настройке на системе ArchLinux:

— Устанавливаем Transmission:
pacman -S transmission-cli

Прописываем демон в автозагрузку:
nano /etc/rc.conf
Добавляем transmissiond в секцию DAEMONS

DAEMONS=(syslog-ng wicd crond rpcbind nfs-common nfs-server sshd samba transmissiond vsftpd)

— Редактируем настройки для Transmission, стартующей от root:
nano /root/.config/transmission-daemon/settings.json
Можно оставить дефолтный, чуть-чуть его подправив:
{
«alt-speed-down»: 500,
«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»: 500,
«bind-address-ipv4»: «0.0.0.0»,
«bind-address-ipv6»: "::",
«blocklist-enabled»: false,
«blocklist-url»: "",
«cache-size-mb»: 256,
«dht-enabled»: true,
«download-dir»: "/path/to/dir", — директория для готовых загрузок
«download-queue-enabled»: true,
«download-queue-size»: 5,
«encryption»: 1,
«idle-seeding-limit»: 30,
«idle-seeding-limit-enabled»: false,
«incomplete-dir»: "/path/to/dir", — директория для незавершенных загрузок
«incomplete-dir-enabled»: false,
«lazy-bitfield-enabled»: true,
«lpd-enabled»: true,
«message-level»: 2,
«open-file-limit»: 32,
«peer-congestion-algorithm»: "",
«peer-limit-global»: 450,
«peer-limit-per-torrent»: 80,
«peer-port»: 4320, — порт через который работаем
«peer-port-random-high»: 65535,
«peer-port-random-low»: 49152,
«peer-port-random-on-start»: false,
«peer-socket-tos»: «default»,
«pex-enabled»: true,
«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»: «0.0.0.0»,
«rpc-enabled»: true, — включаем WebUI
«rpc-password»: «passwd2», — пароль для WebUI
«rpc-port»: 2708, — порт, на котором висит WebUI
«rpc-url»: "/transmission/",
«rpc-username»: «username1», - логин для WebUI
«rpc-whitelist»: "",
«rpc-whitelist-enabled»: false,
«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»: 250,
«speed-limit-up-enabled»: false,
«start-added-torrents»: true,
«trash-original-torrent-files»: false,
«umask»: 0,
«upload-slots-per-torrent»: 14,
«utp-enabled»: true
}

— Копируем вышестоящий конфиг в /home пользователя
cp /root/.config/transmission-daemon/settings.json /home/username/.config/transmission-daemon/settings.json
— Изменяем в конфиге:
nano /home/username/.config/transmission-daemon/settings.json
«download-dir»: "/path/to/dir2", — директория для готовых загрузок 2
«incomplete-dir»: "/path/to/dir2", — директория для незавершенных загрузок 2
«peer-port»: 4321, — порт через который работаем (должен отличаться от порта из 1-го конфига)
«rpc-password»: «passwd2», — другой пароль для WebUI
«rpc-port»: 2709, — порт, на котором висит WebUI (должен отличаться от порта из 1-го конфига)
«rpc-username»: «username2», — другой логин для WebUI

— Ставим в автозагрузку от пользователя:
nano /etc/rc.local
Добавляем: su - username -c "transmission-daemon &"

— Рестатруем
reboot

Итак, после перезагрузки мы имеем 2 запущенных процесса. Для входа в WebUI используем http://localhost:2708 (username1, passwd1) и http://localhost:2709 (username2, passwd2)

Спасибо за внимание!
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.