Устанавливаем 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