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