Устанавливаем BitTorrent-клиент Transmission из исходных кодов в операционной системе CentOS 7


Параметры конфигурации:

установка будет выполняться в папку /opt/transmission

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

закачки будут располагаться на отдельном жестком диске, подключенном к папке /opt/transmission/downloads

установка будет выполняться на примере Transmission версии 2.92

Весь процесс будет разделен на три этапа: сначала мы выполним базовую настройку с использованием для хранения закачек папки, расположенной на жестком диске с операционной системой, затем подключим к этой папке другой жесткий диск, а в завершение предоставим посредством Samba общий доступ к закачкам


Базовая настройка


увеличиваем размер буферов сокетов, для чего в файл /etc/sysctl.d/99-sysctl.conf добавляем строки

net.core.rmem_max = 4194304
net.core.wmem_max = 1048576

Замечание: в противном случае при старте Transmission в журнале будут появляться сообщения
UDP Failed to set receive buffer: requested 4194304, got 425984 (tr-udp.c:78)
UDP Failed to set send buffer: requested 1048576, got 425984 (tr-udp.c:89)

перезагружаемся

reboot

устанавливаем необходимые для компиляции пакеты

yum install gcc gcc-c++ libcurl-devel libevent-devel zlib-devel openssl-devel intltool

скачиваем и распаковываем дистрибутив

curl -L https://github.com/transmission/transmission-releases/raw/master/transmission-2.92.tar.xz | tar xJ -C /root

выполняем конфигурирование, компиляцию и установку Transmission

./configure --prefix=/opt/transmission
make
make install

добавляем путь к исполняемым файлам Transmission в переменную среды PATH, для чего создаем файл /etc/profile.d/transmission.sh следующего содержания

export PATH=$PATH:/opt/transmission/bin

добавляем в файл /etc/man_db.conf путь к man-файлам Transmission

MANDATORY_MANPATH /opt/transmission/share/man

создаем файл конфигурации /opt/transmission/settings.json следующего содержания

{
«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»: «0.0.0.0»,
«bind-address-ipv6»: «::»,
«blocklist-enabled»: false,
«blocklist-url»: «http://www.example.com/blocklist»,
«cache-size-mb»: 512,
«dht-enabled»: true,
«download-dir»: «/opt/transmission/downloads»,
«download-queue-enabled»: false,
«download-queue-size»: 5,
«encryption»: 2,
«idle-seeding-limit»: 30,
«idle-seeding-limit-enabled»: false,
«incomplete-dir»: «/opt/transmission/downloads»,
«incomplete-dir-enabled»: false,
«lazy-bitfield-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»: 65535,
«peer-port-random-low»: 49152,
«peer-port-random-on-start»: false,
«peer-socket-tos»: «default»,
«pex-enabled»: true,
«pidfile»: «/opt/transmission/transmission.pid»,
«port-forwarding-enabled»: false,
«preallocation»: 1,
«prefetch-enabled»: true,
«queue-stalled-enabled»: true,
«queue-stalled-minutes»: 30,
«ratio-limit»: 2,
«ratio-limit-enabled»: false,
«rename-partial-files»: false,
«rpc-authentication-required»: true,
«rpc-bind-address»: «0.0.0.0»,
«rpc-enabled»: true,
«rpc-password»: «some_password»,
«rpc-port»: 9091,
«rpc-url»: «/transmission/»,
«rpc-username»: «some_user»,
«rpc-whitelist»: «127.0.0.1»,
«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»: true,
«umask»: 63,
«upload-slots-per-torrent»: 14,
«utp-enabled»: true,
«watch-dir»: «/opt/transmission/watch»,
«watch-dir-enabled»: true
}

Замечание 1: значение параметра rpc-password после запуска службы заменяется на его хэш

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

создаем необходимые Transmission папки

mkdir /opt/transmission/{blocklists,downloads,resume,torrents,watch}

создаем пользователя и группу transmission

useradd -M transmission
passwd some_password

настраиваем владельцев папки /opt/transmission и права доступа к ней

chown -R transmission:transmission /opt/transmission
find /opt/transmission -type d -exec chmod 700 {} \;
find /opt/transmission -type f -exec chmod 600 {} \;
chmod 700 /opt/transmission/bin/*

создаем unit-файл /usr/lib/systemd/system/transmission.service

[Unit]
Description=Transmission BitTorrent Client
After=network.target

[Service]
Type=simple
ExecStart=/opt/transmission/bin/transmission-daemon —foreground —pid-file /opt/transmission/transmission.pid —config-dir /opt/transmission —logfile /opt/transmission/transmission.log
PIDFile=/opt/transmission/transmission.pid
User=transmission

[Install]
WantedBy=multi-user.target 

обновляем информацию о службах

systemctl daemon-reload

запускаем Transmission

systemctl start transmission

для добавления закачки выполняем

transmission-remote --auth some_user:some_password --add /file/path

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

transmission-remote --auth some_user:some_password --list

для удаления закачки выполняем

transmission-remote --auth some_user:some_password --torrent torrent_id --remove


Подключение диска


определяем имя нужного диска

fdisk -l

Замечание: далее будем считать, что имя диска - /dev/sdb

создаем физический раздел LVM

pvcreate /dev/sdb

создаем группу разделов LVM

vgcreate downloads_vg /dev/sdb

создаем логический раздел LVM

lvcreate -l 100%FREE -n downloads_lv downloads_vg

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

mkfs --type ext4 /dev/downloads_vg/downloads_lv

включаем автоматическое подключение логического раздела LVM при старте системы, для чего в файл /etc/fstab добавляем следующую строку

/dev/downloads_vg/downloads_lv /opt/transmission/downloads ext4 defaults 0 0

подключаем все файловые системы, перечисленные в файле /etc/fstab

mount -a

настраиваем владельцев корня файловой системы логического раздела LVM и права доступа к нему

chown -R transmission:transmission downloads
chmod -R 700 downloads


Настройка общего доступа


устанавливаем Samba

yum install samba

назначаем папкам /opt/transmission/downloads и /opt/transmission/watch контекст SELinux "samba_share_t" (как это сделать, рассказывается здесь)

заменяем содержимое файла /etc/samba/smb.config на следующее

[global]
security = user
server role = standalone
server min protocol = SMB2
server max protocol = SMB3
passdb backend = tdbsam:/etc/samba/passdb.tdb
log level = 1

[downloads]
path=/opt/transmission/downloads
guest ok = no
writable = yes
browsable = yes
create mask = 0700
directory mask = 0700

[watch]
path=/opt/transmission/watch
guest ok = no
writable = yes
browsable = yes
create mask = 0700
directory mask = 0700

создаем пользователя Samba

smbpasswd -a transmission

Замечание 1: в результате выполнения команды в папке /etc/samba будет создан файл passdb.tdb

Замечание 2: для проверки подлинности в нашей конфигурации Samba будет использовать файл с учетными данными, однако, в системе должны быть созданы одноименные учетные записи с установленными паролями (при этом пароли могут и должны отличаться)

устанавливаем нужные права на содержимое папки /etc/samba

chmod 400 /etc/samba/*

проверяем конфигурацию

testparm

перезапускаем Samba

systemctl restart smb

Добавить комментарий