Домашний Сервер: Часть 4 – Настройка Transmission daemon в контейнере LXC Proxmox-VE

gost-main-torrent Роутеры
Приветствую, уважаемые читатели на четвертой части цикла!
 
В прошлый раз мы установили и настроили локальные доменные имена на базе сервиса BIND9 в LXC контейнере.
Список цикла статей:

 

  1. Домашний Сервер: Часть 1 – Предисловие, аппаратная и софтовая начинка
  2. Домашний Сервер: Часть 2 – Установка системы виртуализации Proxmox
  3. Домашний Сервер: Часть 3 – Внутренний DNS сервис на BIND9 или свои доменные имена в локальной сети
  4. Домашний Сервер: Часть 4 – Настройка Transmission daemon в контейнере LXC Proxmox-VE (вы тут)
  5. Домашний Сервер: Часть 5 – Установка и настройка Plex Media Server в контейнере LXC Proxmox-VE

Предисловие

По аналогии с предыдущей статьей, мы установим LXC контейнер и в нем установим и настроим «торрент качалку» Transmission
Официальный сайт: transmissionbt.com

Вы спросите: «А чем не устраивает торрент на обычном ПК?»
Так вот тем, что это не удобно при работе с локальным сервером. Да, варианты есть, но если честно… такое себе.
Гораздо удобнее, когда скачивание идет сразу на сервере и более того, я могу подключаться к своей системе не только через Desktop приложение, но и через мобильное приложение.
Т.е. фактически из любого места где есть интернет. А про локальную сеть я уже молчу )
Также в моей топологии сети, при этом, не задействуется Wi-Fi, все скачивание и раздача идет по кабельному каналу. (У меня тариф 500 Мбит/сек)

Это значит, что я также расскажу, как использовать приложение Transmission GUI на ПК и Transmission Remote на Android.
Ну и как бонус покажу немного автоматизации обработки торрентов. Мы ведь не хотим сами создавать все эти папки согласно иерархии хранения? 🙂
Кому стало интересно, приятного чтения !!!

Be careful! Много текста и работы с терминалом!

Установка и настройка Torrent сервиса Transmission-daemon

Процесс установки контейнера я опущу т.к. он разбирался в статье: Домашний Сервер: Часть 3 – Внутренний DNS сервис на BIND9 или свои доменные имена в локальной сети
Принцип аналогичен, разве что параметры контейнера можно немного изменить:
Memory — 2.00 GiB
DNS — 192.168.88.7, 192.168.88.1 (помним, что мы запустили свой DNS)

Самый важный момент!
Нам необходимо сохранять файлы на RAID массив, который мы создали в процессе установки и настройки основной хост системы.

Домашний Сервер: Часть 2 – Установка системы виртуализации Proxmox
Пункт: Подключение четырех дисков как ZFS массив RAID-5 (raidz1)

Но перед этим необходимо определиться со структурой хранения данных.
Для себя я определил следующую структуру:

rpoolz
├─data
| └─media
|   ├─serials
|   | ├─serial_name_1
|   | | ├─season_1
|   | | └─season_2
|   | └─serial_name_2
|   └─films
|     ├─2D
|     | ├─year_2019
|     | └─year_2020
|     └─3D
|       ├─year_2019
|       └─year_2020
└─root
  └─backup

Далее будем следовать данной структуре.

Как можно видеть, я создал специальную папку media для хранения всей мультимедиа информации.

И пока мы не запустили наш контейнер вопрос: «Как подключить массив к контейнеру?»
Делается это достаточно просто. Переходим в консоль основного сервера pve1

gost-proxmox-1
Основная консоль сервера PVE1

Настройки LXC контейнеров лежат по пути:
/etc/pve/lxc/

А там уже файлы конфигураций согласно номеру контейнера 100.conf, 101.conf и т.д.
Открываем файл настроек нашего контейнера:

nano /etc/pve/lxc/101.conf

Номер 100.conf это наш контейнер под DNS, а новый созданный это 101.conf

Добавляем в него такую строку:

mp0: /rpoolz/data,mp=/mnt/data

Т.е. у нас будет доступ из контейнера в файловую систему хостовой машины через точку монтирования(mp = Mount Point), при этом нам самим не нужно ничего монтировать, система сама обо всем позаботится.
В контейнере файлы мы будем сохранять по пути /mnt/data
Вы можете указать свой путь, как вам нравится.
Я же, создал базовую папку /rpoolz/data в которой будут храниться мои файлы

mkdir -m 777 /rpoolz/data
Финальные настройки LXC контейнера TORRENT
#*) transmission-daemon
#*) snmpd
arch: amd64
cores: 1
hostname: TORRENT
memory: 2048
mp0: /rpoolz/data,mp=/mnt/data
nameserver: 192.168.88.7 192.168.88.1
net0: name=eth0,bridge=vmbr0,firewall=1,hwaddr=7A:DD:6F:14:34:5B,ip=dhcp,type=veth
onboot: 1
ostype: debian
rootfs: local-zfs:subvol-102-disk-0,size=8G
searchdomain: gregory-gost.ru
swap: 2048
unprivileged: 1

Запустим контейнер и перейдем к установке и настройке Transmission уже непосредственно внутри контейнера

Проверим смонтированную папку

ls -l /mnt/

Создадим базовые папки

mkdir -m 777 -p /mnt/data/media/serials
mkdir -m 777 -p /mnt/data/media/films/2D
mkdir -m 777 /mnt/data/media/films/3D

Обновим контейнер и установим transmission-daemon

apt update && apt full-upgrade -y
apt install -y transmission-daemon net-tools

Остановим сервис, для изменения настроек

service transmission-daemon stop

Производим настройки transmission-daemon
Открываем файл настроек:

nano /etc/transmission-daemon/settings.json
Файл настроек settings.json при запущенном сервисе не сохраняет изменения. Для корректного редактирования, сервис transmission-daemon должен быть обязательно остановлен!

Файл настроек представлен в формате JSON, необходимо поправить ряд параметров:

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": 100,
    "dht-enabled": true,
    "download-dir": "/mnt/data/download",
    "download-limit": 100,
    "download-limit-enabled": false,
    "download-queue-enabled": true,
    "download-queue-size": 5,
    "encryption": 1,
    "idle-seeding-limit": 30,
    "idle-seeding-limit-enabled": false,
    "incomplete-dir": "/mnt/data/download/incomplete",
    "incomplete-dir-enabled": true,
    "lpd-enabled": false,
    "max-peers-global": 200,
    "message-level": 1,
    "peer-congestion-algorithm": "",
    "peer-id-ttl-hours": 6,
    "peer-limit-global": 200,
    "peer-limit-per-torrent": 50,
    "peer-port": 13003,
    "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": false,
    "preallocation": 2,
    "prefetch-enabled": true,
    "queue-stalled-enabled": true,
    "queue-stalled-minutes": 30,
    "ratio-limit": 2,
    "ratio-limit-enabled": true,
    "rename-partial-files": true,
    "rpc-authentication-required": true,
    "rpc-bind-address": "0.0.0.0",
    "rpc-enabled": true,
    "rpc-host-whitelist": "",
    "rpc-host-whitelist-enabled": false,
    "rpc-password": "123456",
    "rpc-port": 9091,
    "rpc-url": "/transmission/",
    "rpc-username": "user",
    "rpc-whitelist": "127.0.0.1,192.168.88.*",
    "rpc-whitelist-enabled": false,
    "scrape-paused-torrents-enabled": true,
    "script-torrent-done-enabled": true,
    "script-torrent-done-filename": "/opt/torrentdone/dist/main.js",
    "seed-queue-enabled": true,
    "seed-queue-size": 5,
    "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": false,
    "umask": 0,
    "upload-limit": 100,
    "upload-limit-enabled": false,
    "upload-slots-per-torrent": 14,
    "utp-enabled": true
}
Описание настраиваемых параметров (ENG)
Официальная страница с описанием параметров: github.com/transmission/wiki/Editing-Configuration-Files
Вот список параметров, которые мне пришлось изменить:

  • «cache-size-mb»: 100
  • «download-dir»: «/mnt/data/download» — директория, куда будут сохраняться загружаемые файлы
  • «download-queue-enabled»: true
  • «download-queue-size»: 5
  • «incomplete-dir»: «/mnt/data/download/incomplete» — директория, где будут располагаться скачанные файлы не завершенных торрентов
  • «incomplete-dir-enabled»: true
  • «peer-port»: 13003
  • «preallocation»: 2
  • «ratio-limit»: 2
  • «ratio-limit-enabled»: true
  • «rpc-password»: «123456» — пароль для программ удаленного доступа
  • «script-torrent-done-enabled»: true
  • «script-torrent-done-filename»: «/etc/transmission-daemon/torrentdone.sh» — для чего это нужно читайте в отдельном разделе ниже Скрипты обработки торрентов для Transmission-daemon
  • «seed-queue-enabled»: true
  • «seed-queue-size»: 5
  • «umask»: 0 — Файлы будут сохраняться с маской 777, т.е. будут доступны для всех (чтение, удаление). Это важно!

Сохраняем настройки и запускаем transmission-daemon

service transmission-daemon start

Проверяем работу

service transmission-daemon status
netstat -nltp4

Если видим в ответе netstat слова «transmission«, значит сервис точно запущен и работает.

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:13003           0.0.0.0:*               LISTEN      782/transmission-da 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      9440/nginx: master  
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      137/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      292/master          
tcp        0      0 0.0.0.0:9091            0.0.0.0:*               LISTEN      782/transmission-da 

На этом настройку можно считать завершенной.

Дополнительная настройка nginx для Transmission

Стандартно ставим nginx

apt install nginx

Удаляем базовый сайт

rm /etc/nginx/sites-enabled/default
Настраиваем основной файл конфигурации
nano /etc/nginx/nginx.conf
error_log               /var/log/nginx/error.log crit;
pid                     /var/run/nginx.pid;
worker_rlimit_nofile    8192;
timer_resolution        100ms;
include                 /etc/nginx/modules-enabled/*.conf;

events {
        multi_accept    on;
        accept_mutex    off;
        use             epoll;
}

http {
        include         /etc/nginx/mime.types;
        include         /etc/nginx/fastcgi.conf;
        default_type    application/octet-stream;

        sendfile        on;
        tcp_nopush      on;
        tcp_nodelay     on;

        #ssl_session_cache      shared:SSL:10m;
        #ssl_session_timeout    10m;

        include         /etc/nginx/conf.d/*.conf;

}
Добавляем отдельную конфигурацию для transmission
nano /etc/nginx/conf.d/transmission.conf
upstream transmission_backend {
        server          127.0.0.1:9091;
        keepalive       32;
}

server {
        listen          80;
        server_name     torrent.gregory-gost.ru;

        send_timeout    100m;

        gzip            on;
        gzip_vary       on;
        gzip_min_length 1000;
        gzip_proxied    any;
        gzip_types      text/plain text/css text/xml application/xml text/javascript application/x-javascript image/svg+xml;
        gzip_disable "MSIE [1-6]\.";

        client_max_body_size 100M;

        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";

        proxy_redirect off;
        proxy_buffering off;

        location / {
                rewrite ^/$ http://$http_host;
                proxy_pass http://transmission_backend;
        }

}

Перезапускаем nginx

service nginx restart

После этого можно обращаться к transmission и rpc по доменному имени.

Теперь перейдем к средствам удаленного управления.

Удаленное управление Transmission

Transmission удобен тем, что работает на сервере в виде службы и потребляет минимум ресурсов. Также основной ПК освобождается от торрента и хранимых медиа файлов )
Для управления можно использовать утилиту для Windows x86, Windows x64, Linux x86, Linux x64, Linux на ARM6L, Linux на ARM7L, MacOS (.dmg пакет)
Для Android и iOS также существуют приложения разработанные сторонними разработчиками
Даже на мощных роутерах таких компаний как Asus иногда можно встретить Torrent качалку на базе Transmission.

Т.е. это говорит о высокой интеграции данного сервиса во все известные системы и эта кроссплатформенность дает нужное удобство.
Рассмотрим приложения на базе Windows и Android. С остальными системами полагаю будет аналогично.

Применение Transmission Remote GUI

Что такое Transmission Remote GUI?

gost-transgui-1
Transmission Remote GUI на Windows 10


Transmission Remote GUI — это многофункциональный кроссплатформенный интерфейс для удаленного управления демоном Transmission через его протокол RPC. Он быстрее и обладает большей функциональностью, чем встроенный веб-интерфейс Transmission.
Transmission Remote GUI разработан с использованием Lazarus RAD и компилятора Free Pascal.
Обладает интерфейсом почти как у uTorrent (uTorrent-like interface)
Transmission Remote GUI можно скачать на гитхабе в разделе с релизами:
github.com/transmission-remote-gui/transgui/releases
По той же ссылке располагаются варианты для других систем, они там все скопом.

Установка и настройка выполняется как с обычной программой.
Я скачиваю exe файл, устанавливаю, запускаю и иду в настройки приложения.

gost-transgui-2
Путь к настройкам приложения
gost-transgui-3
Настройки для transmission с настроенным nginx


Далее вы уже можете производить индивидуальные настройки аналогично обычному торрент клиенту по типу того же uTorrent.
И еще, как вы могли заметить программа поддерживает Русский язык, что конечно радует 🙂

Теперь перейдем к мобильной части…

Применение приложения на Android, iOS

Я опишу одно приложение, которым пользуюсь сам и т.к. у меня телефон на дройде, то прошу владельцев iOS не переживать. Полагаю для яблочных систем должно быть аналогично.
Оно так и называется Transmission Remote.
Чтобы не ошибиться, вот ссылка на приложение: Transmission Remote
Вот немного скриншотов

Мне достаточно зайти на нужный сайт, скачать торрент файл и запустить его выбрав это приложение. Сервер далее уже сам все сделает.
Можно спокойно закрыть приложение, по окончании скачивания придет push уведомление об окончании.
За время скачивания можно налить чаю, устроиться поудобнее и запустить кино/сериал на просмотр 🙂

Скрипты обработки торрентов для Transmission-daemon

А теперь настала пора автоматизации.
Скажите, вам ведь не хочется самостоятельно раскладывать каждый файл фильма или сериала по папкам? Если не хочется, то вы можете либо свалить все в кучу и тогда в один прекрасный день будет такая же история, как у многих с музыкой в начале 2000х 🙂
Было бы здорово, чтобы фильмы хранились с определенной иерархией. В начале статьи мы определили иерархию для хранения фильмов в 2D, в 3D и сериалов, но как заставить Transmission самостоятельно их переносить в нужные папки сразу после окончания и при этом не переставать раздавать в самой программе?
Как заставить торренты удаляться после наступления определенных условий, скажем рейтинг скачал/отдал был бы равен 2, а если рейтинг никогда не доберется до значения 2, то удалить торрент через 7 дней после добавления?

Как видим задач для автоматизации не много. Приступить к созданию автоматической обработки торрентов меня подтолкнула строка в настройках transmission-daemon
«script-torrent-done-filename»: «»
Тут мы можем указать путь к файлу, который transmission-daemon исполнит по окончании загрузки торрента, при этом он передаст скрипту некоторые переменные окружения, чтобы в скрипте ими можно было пользоваться.

Скажу сразу, приложение можно дорабатывать, возможно с некоторыми пунктами в нем вы будете не согласны, но написание красивого кода я своей целью не ставил, целью было выполнение нужных функций и скрипт с этим прекрасно справляется.

Я загрузил файлы на Github. Там вы можете скачать последние версии данных файлов.

Приложение TorrentDone: https://github.com/GregoryGost/transmission-torrentdone
Приложение TorrentClear: https://github.com/GregoryGost/transmission-torrentclear

Кратко опишу, какое приложение, что делает:

Приложение TorrentDone

Данное приложение ранее было написано на простом Bash, но мне захотелось рюшечек и некоторого ООП в придачу. И вот свет увидела версия написанная на NodeJS (тут вы тоже можете со мной не согласиться, но я писал на том, что знаю лучше всего)

Все инструкции и тонкости по установке находятся прям в репозитории в README.md файле.
Достаточно следовать им (ну или делать что-то под себя)

Приложение определяет, что мы скачиваем, файл или папку с файлами. Далее переносит файл(файлы) по месту их корректного хранения.

Из определений, есть определение сериал это или фильм. И для фильмов есть разделение 2D или 3D фильм.
Приложение также создает все необходимые пути согласно принятой мной системе хранения.

Краткое описание алгоритма обработки

── Check File or Directory
  ├─ IS FILE
  | └─ Check file extensions (mkv,avi,mp4)
  |   └─ Check Releaser (LostFilm, NovaFilm, etc ...)
  |     └─ Check Serial or Film
  |       ├─ IS SERIAL => serialProcess()
  |       | ├─ If season directory (DIR_FLAG) - copy torrent files
  |       | └─ Else simple file - move torrent file
  |       └─ IS FILM   => filmProcess()
  |         └─ Check 2D or 3D
  |           ├─ If directory (DIR_FLAG) - copy torrent files
  |           └─ Else simple file - move torrent file
  └─ IS DIRECTORY (set DIR_FLAG)
    └─ Foreach directory
      └─ Repeat until we find the File in the directory (back to IS FILE processing)

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

Приложение TorrentClear

Тут произошла аналогичная история. Я решил и этот сервис переписать на NodeJS, получилось довольно гибко.

Проверка каждого торрента проводится с помощью консольной утилиты transmission-remote
Приложение перебирает все активные торренты и проверяет каждый медиа файл (mkv,mp4,avi) на соответствие рейтинга скачал/отдал >= 2 (двум, т.е. отдал в два раза больше чем скачал), либо прошло ли 7 дней с момента добавления торрента (по умолчанию). Эти параметры конечно можно менять, ratio в конфигурации самого transmission, кол-во дней в конфигурации приложения.
Если одно из условий выполнено, торрент удаляется, но при этом сам скачанный файл остается не тронутым.
Для целой папки торрент удаляется вместе с файлами т.к. в TorrentDone данные файлы просто копируются, а не переносятся.

Вот мы и закончили с автоматизацией обработки торрентов.
Теперь торренты будут удаляться автоматически и у нас не будет болеть голова об этом. Просто добавили и все.

Куда сохраняются сами файлы торрента? Нужно ли их удалять?
Торрент файлы с расширением «.torrent» сохраняются по пути:
/var/lib/transmission-daemon/.config/transmission-daemon/torrents/
и удаляются при удалении торрента из программы.
Отдельно контролировать их нет необходимости.

Ротация логов logrotate.d/transmission

Дополнительно можно автоматизировать обработку создаваемых лог файлов. Т.е. обеспечить их ротацию.
Скачиваем файл с настройками

cd /etc/logrotate.d
wget https://raw.githubusercontent.com/GregoryGost/Transmission/master/logrotate.d/transmission

logrotate будет следить за тем, чтобы лог файл не превышал размер 10 Mb. А если и превысит, то он создаст отдельный файл со старым логом.
А еще позже будет уже сжимать совсем старые логи в архивы.

Заключение

Что хотелось бы сказать в заключении — а сказать особо и нечего, я все постарался описать в самой статье.
С помощью функционала Proxmox я реализовал торрент качалку в LXC контейнере, в которую можно добавлять торренты по дороге домой с работы, чтобы вечером с женой/детьми/родственниками/друзьями сесть за хороший фильм или сериал.
Такое решение сильно упрощает управление скачиванием и сохранением медиа файлов. Она работает автоматически в том числе на распределение файлов по нужным папкам, чистит торренты, чтобы они не занимали ресурсы системы.
В общем и целом я считаю, что своей цели в этой статье я достиг. Буду ждать от вас интересных идей для развития данной системы, в особенности скриптов по автоматизации 😉

Ну и конечно делитесь своими фишками, хаками, способами использования Transmission в комментариях!

Благодарю за ваше время!
Всего хорошего на просторах Интернета 😉

UPD 29.11.2022:

Изменен раздел «Скрипты обработки торрентов для Transmission-daemon» т.к. скрипты были обновлены до состояния NodeJS приложений.

UPD 21.03.2020:

Изменен раздел «Скрипты обработки торрентов для Transmission-daemon» т.к. были обновлены скрипты.

Выразить благодарность автору
Если Вам не безразлична судьба блога или Вы просто хотите отблагодарить Автора за его труд, смело переходите на страницу Поддержки, там описана вся информация, по тому, как это сделать. Заранее благодарен вам за данную инициативу!
Хочешь получать уведомления о выходе новых статей?
Loading
GregoryGost

Мир интересен, если вы достаточно любопытны!!!

Оцените автора
GREGORY GOST
Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

  1. Денис

    Добрый день. Григорий, помогите решить проблему со скриптом torrentdone.sh. Скрипту не передаются переменные из Transmission.
    OS: Armbian (22.08.6) aarch64 Host: OrangePi 3 LTS Shell: bash 5.1.16
    Transmission-remote установлены на ноутбуке и смартфоне, работают нормально.
    Попробовал установить Transmission-remote на хост(из репозиториев). Проблема осталась. В логах пустые переменные, на и как следствие скрипту не чего обрабатывать.

    Ответить
    1. GregoryGost автор

      Добрый, возможно это вам поможет transmission/issues/1951
      transmission/pull/795
      systemd.exec.html#NoNewPrivileges=

  2. Денис

    Gregory, подскажите пожалуйста почему может не работать скрипт, который запускается после завершения скачивания Торрента?
    Скрипт не раскидывает скачанные торренты по папкам!
    Что нужно проверить вручную в первую очередь?
    ОС Debian 11, Proxmox v7.2

    Ответить
    1. GregoryGost автор

      Денис, здравствуйте
      В первую очередь, да и всегда, логи нужно смотреть

  3. Ринат

    Gregory, спасибо за интересный и полезный материал!
    Прошу прощения если задаю глупые вопросы, но вообще ничего в этом не понимаю, у меня накопитель WD my cloud home, установил на него Debian с оболочкой omv. Transmission уже установлен, работает, удаленное управление тоже работает, сортировка мне не нужна, коллекции не собираю, а вот удаление скачанных торрентов очень интересует. Настроил, чтобы торрент файлы забирались из папки и после начала скачивания удалялись, все качается, все норм, но хочется настроить автоматическое удаление раздач… уже всю голову сломал, вроде все по вашей инструкции делаю, но не работает((( один раз получилось, что раздачи остановились на рейтинге 2, но не удалились… как понять в чем проблема? Заранее огромное спасибо!!!

    Ответить
    1. GregoryGost автор

      Здравствуйте,
      Благодарю за отзыв.

      Для начала проверьте, все ли нужные папки созданы, все ли права заданы корректно.

      После этого запускайте скрипт в ручную и смотрите логи скрипта.

      Не забывайте про корректные имя пользователя и пароль, чтобы через скрипт работало управление.

      Для начала этого должно быть достаточно.

  4. Кирилл

    Тем, у кого не заработал, как у меня, Transmission через Nginx с 421 ошибкой, рекомендую еще раз проверить настройки файла settings.json. У меня оказались проблемы с доступом, хотя по IP-шнику и порту самого демона входил успешно.

    Алексей из предыдущего комментария, может поделитесь, как Вы разворачивали и настраивали свой сервер. У меня тоже HP 10го поколения. Хотелось прочитать Ваш опыт.

    Григорий, не могли бы Вы написать статью по разворачиванию NAS на своем сервере с доступом к этой самой media-библиотеки как файлом. У меня накопилось очень много старых дисков, которые перебирал на выходные. Хотелось бы перекинуть все данные на NAS. До этого разворачивал в Proxmox все контейнеры LXC и проброс диска не с первого раза, но настроил во все контейнеры. Так как шаблона нормального NAS для LXC Proxmox не предоставляет, попытался развернуть qemu-server с установочного диска openmediavault. Но пробросить диск, чтобы openmediavault увидел диск и расшарила папки у меня не удалось.
    Не могли бы Вы хотя бы для эксперимента и статьи развернуть у себя NAS и описать установку и настройку. Интересует в первую очередь легковесные NAS — системы. Например, тот же TrueNAS (бывший FreeNAS) кушает много ресурсов даже в режиме покоя, что неприменимо для сервера с раздельными ресурсами.

    Ответить
  5. Алексей

    Наткнулся на вашу статью, когда настраивал transgui.

    В целом у меня примерно такая же сеть, только в качестве медиа-центра HP Microserver Gen8. Plex развернут не контейнером, а полноценной виртуалкой.

    Хотел бы добавить, что у меня он не только как МЦ, но так же и как домашнее файловое хранилище, поэтому сделал отслеживание добавленных торрентов на определенной папке. Т.е. нашел торрент, сразу закинул на сетевой диск в папку для отслеживания, после скачки он переносится в нужную директорию, которую отслеживает Plex.

    Скрипт с разбором это хорошая штука, но, как по мне, фильмов, достойных оказаться в коллекции, немного, а онлайн кинотеатры довольно распространены и хранить на сервере все скачанные и просмотренные фильмы смысла нет.

    Ответить
    1. GregoryGost автор

      Алексей, приветствую!
      Благодарю, что делитесь своими решениями!

      Папка с отслеживанием тоже хороший вариант, у меня просто стояла другая цель ) иметь кроссплатформенное приложение для скачивания торрентов ) Я просто с мобильного мгу поставить сериал на скачивание, без закидывания торрента в папку ))

      Достойных фильмов может быть достаточно, смотря, что каждый для себя считает достойным 😉

  6. Андрей

    Почему то не заработал редирект по вашей инструкции. Сделал вот так.
    файл /etc/nginx/conf.d/transmission.conf

    server {
            listen          80;
            server_name     torrent.blablabla.ru;
    
            send_timeout    100m;
    
            gzip            on;
            gzip_vary       on;
            gzip_min_length 1000;
            gzip_proxied    any;
            gzip_types      text/plain text/css text/xml application/xml text/javascript application/x-javascript image/svg+xml;
            gzip_disable "MSIE [1-6]\.";
    
            client_max_body_size 100M;
    
            location / {
                proxy_pass http://192.168.1.56:9091/;  #IP и порт сервера где стоит Transmission
                proxy_redirect     off;
                proxy_set_header   Host             $host;
                proxy_set_header   X-Real-IP        $remote_addr;
                proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            }
    }

    Может поможет кому.

    Ответить
  7. Илья

    Григорий приветствую. В первую очередь хочу сказать спасибо за ваши подробные инструкции. Практически все по ним настроил.
    Есть проблема с настройкой Transmission daemon, а именно со скриптами сортировки и удаления торрентов. Суть проблемы: торрент скачивается, лежит в папке контейнера /mnt/data/download. Скрипт сортировки не переносит файл в конечную папку. В логах пусто. Кстати о логах. При запуске вручную скрипта — выходило сообщения о отсутствии файлов и директории для логов. Только при редактировании скрипта и раскоментировании строки greate logfile dir….. скрипт запускается но не сортирует. Также вопрос в настройках скрипта пароль 123456789, а в настройках settings.json пароль 123456. Это как то может повлиять на работу скрипта? И это же касается второго скрипта удаление торрентов.

    Ответить
    1. GregoryGost автор

      Здравствуйте, Илья!
      Благодарю за отзыв! Рад, что статьи не пропадают зря )))

      торрент скачивается, лежит в папке контейнера /mnt/data/download. Скрипт сортировки не переносит файл в конечную папку. В логах пусто

      Какое название у торрент файла? Подходит ли это название под шаблон сортировки?

      выходило сообщения о отсутствии файлов и директории для логов. Только при редактировании скрипта и раскоментировании строки greate logfile dir….. скрипт запускается но не сортирует

      Эту строку не нужно раскомментировать, эту команду необходимо один раз подать через консоль.
      Её суть в том, чтобы создать эту самую дирректорию единожды и назначить для неё права доступа.

      Также вопрос в настройках скрипта пароль 123456789, а в настройках settings.json пароль 123456. Это как то может повлиять на работу скрипта? И это же касается второго скрипта удаление торрентов.

      Везде должен быть один пароль — от transmission естественно (settings.json)
      123456 это просто числа заглушки для блога. У вас должен быть свой пароль.

  8. Александр

    Добрый день! А вы к transmission не пробовали привязать fail2ban или ещё какую-нибудь защиту, для авторизации от брутов и т.д.?

    Ответить
    1. GregoryGost автор

      Добрый!
      Нет не пробовал, у меня Firewall полностью закрыт и используется защита на базе ICMP-knocking: MikroTik : RouterOS : Стучимся к себе домой. Firewall Filter PortKnocking
      Мне не нужно делать защиту от переборов и тому подобное, я просто «стучусь к себе домой» и спокойно хожу по своим сервисам т.к. доступ разрешен только одному IP адресу на ограниченное время.

  9. Кирилл

    Добрый день, Григорий.
    Хотелось бы сначала выразить благодарность за столь обширный мануалы, где все разжевано для новичков. Прям огромный + Вам в карму.
    Касательно этой статьи. У Вас в настройках контейнера стоит unprivileged: 1, у меня из-за этого случилась проблема при создании точки монтирования в контейнере. Когда контейнер непривилегированный, то точка подключения создается, как гостевая (как я понял) и с правами nobody nogroup. И соответственно я не могу из контейнера создавать какие-либо папки/файлы в этой точке монтирования.
    На форуме proxmox пишут, что нужно заново создавать контейнер, убрав данную галочку. Простое изменение unprivileged: 1 в unprivileged: 0 в конфигурации файла контейнера не даст нужного результат, но я попробовал сначала исправить в файле конфигурации и это помогло:
    drwxr-xr-x 2 root root 4096 Aug 25 08:05 test1
    Прошу добавить в статью, чтоб другие не искали. И у меня возникает вопрос, почему тогда у Вас не возникло подобной сложности при монтировании???

    Ответить
    1. GregoryGost автор

      Добрый!
      Кирилл, благодарю за отзыв!
      Интересное замечание, но оно скорее всего связано с правами доступа и разделением самих пользователей в папках для которых нужен доступ из разных контейнеров.
      Proxmox создает «виртуальных» пользователей в хост системе для каждого пользователя в каждом контейнере и там они имеют свои UID и группу, вида 100000:100000 и т.д.
      Соответственно, чтобы в этой папке можно было, что-то создавать туда нужен доступ с нужными правами. Я для transmission и plexmediaserver создаю папки и файлы с правами 777, чтобы было меньше проблем.
      При этом если вы создаете папки и файлы из хоста в этой точке монтирования, все они будут иметь nobody:nogroup т.к. контейнер не знает пользователя и группу хоста.
      Хост является папой ))) root контейнера не равен root хоста!

  10. Артём

    Добрый день! Статья отличная, спасибо 🙂 Не думали прикрутить к transmission еще TorrentMonitor? И еще один вопрос скрипт сортировки почему то не работает с фильмами в логах пишет File(s) «Bloodshot.2020.D.AMZN.WEB-DLRip.p3rr3nt.avi» not defined as TV show or movie
    а если качать сериал он не присваивает имя папки, а создает /mnt/data/media/serials//Season_/

    Ответить
    1. GregoryGost автор

      Спасибо вам, что интересуетесь!

      1. Нет не думал т.к. у меня есть скрипты раскладывающие файлы и пока они очень специфичны. Мне приходится переименовывать сохраняемый файл фильма на «нормальный» — Фильм (год).mkv тогда и лежат они красиво с помощью скрипта и Plex обрабатывает корректно названия.
      Меня жутко бесят названия типа этого: Bloodshot.2020.D.AMZN.WEB-DLRip.p3rr3nt 🙂

      2. Скрипт с такими файлами не дружит, нужно переписывать регулярки для вычленения названия, года и т.д.
      Причем это несколько сложно т.к. у каждого релизера на торрентах свои причуды по формированию названий и единой стандартизации нет.
      Поэтому приходится перед стартом торрента его переименовывать.

      3. Какое название сериала при скачивании?

  11. Кирилл

    Сам уже понял, что нужно включить поддержку smb. Увы, но с Unix пока опыт никакой. Собственно во много по этому и установил Proxmox.

    Ответить
  12. Кирилл

    Григорий, еще вопрос. Папку подключил -заработало. Как из Mac OS достучаться до созданного RAID хранилища, на котором торренты?
    Обычно smb://ip_address работал и для Windows для Synology. Тут пишет, что сервер не существует или недоступен, когда указываю адрес контейнера, н а котором Transmission поднят. Хотя этот адрес пингуется прекрасно и виден в Микротике (статику назначил в DHCP)

    Ответить
    1. GregoryGost автор

      А вы ставили smb на хост систему или в какой-либо контейнер?
      Proxmox это не synology или qnap, где все стоит заранее или подключается отдельными модулями

  13. Кирилл

    Григорий, спасибо за пояснения.

    Ответить
  14. Кирилл

    Может стоило написать ранее — у меня система и контейнеры виртуалки на RAID1 из двух ssd диск и четыре в RAID5, куда собственно и хочу писать торренты.

    Ответить
    1. GregoryGost автор

      У меня аналогично

  15. Кирилл

    Так заметил -:) Но там описан процесс подключения папки. У меня, в этом случае, если следовать вашему мануалу из втрой части а затем — mp0: /rpoolz/data,mp=/mnt/data, контейнер не запускается. Вот если в Datacenter-storage-add выбрать NFS и в настройках контейнера добавить Mount Point, указав в качестве Storage хранилище RAID, то все ОК.
    Поясните, плиз, как с папками работать. И еще, удалось подключить удаленный диск по NFS с моего Synology. Но как его в контейнер подсунуть, чтобы виден был?

    Ответить
    1. GregoryGost автор

      Кирилл, смотрите
      Если Proxmox ставился базово на два SSD в RAID1, то они в хост системе pve1 отображаются, как пул rpool
      Если заглянуть в Datacenter -> Storage то там вы увидите два пункта local и local-zfs Они оба располагаются на RAID1 rpool

      Далее по моему мануалу создается RAID5 из 4х дисков и в хост системе он отображается, как пул rpoolz
      Через Datacenter -> Storage -> Add я создал дополнительную директорию для бекапов local-backup по пути /rpoolz/root/backup
      Сами папки root и backup я создал вручную(mkdir) по аналогии с тем, как Proxmox создал базовые в rpool

      Далее также вручную создал папки для хранения данных (/rpoolz/data /rpoolz/data/media и т.д.) с правами drwxrwxrwx (0777)
      Точку монтирования вы создаете только тогда, когда на хосте создали всю базовую иерархию в /rpoolz

  16. Кирилл

    Григорий, Вы описываете подключение массива RAID к контейнеру через точку монтирования. А разве не нужно предварительно хранилище по ZFS создать указав вновь созданный массив rpoolz (в вашем примере)?

    Ответить
    1. GregoryGost автор

      В разделе «Установка и настройка Torrent сервиса Transmission-daemon» есть сноска на статью в которой этот процесс описан, странно, что вы не заметили 🙂
      Домашний Сервер: Часть 2 – Установка системы виртуализации Proxmox
      Пункт 3.4: Подключение четырех дисков как ZFS массив RAID-5 (raidz1)