Интеграция torrent клиента transmission с Home Assistant

В данной короткой заметке рассмотрим процесс установки клиента transmission в свой собственный docker контейнер и интеграции его с Home Assistant (бывший Hass.io). Интеграция позволит отображать состояние загрузки торрентов, а также управлять клиентом.

Найдём один из подходящих контейнеров с transmission. Не мудрствуя лукаво выберем первый из поисковой выдачи гугла: https://hub.docker.com/r/linuxserver/transmission/ Согласно гайду, создать контейнер можно двумя способами - одной длинной командой докера, либо созданием файла docker-compose.

Воспользуемся первым способом, только команду запуска контейнера поместим в файл шелл-скрипта для удобного редактирования и повторного использования.

Надо сказать, что Home Assistant (бывший Hass.io) у меня установлен в уже существующий дистрибутив Ubuntu Linux, поэтому я имею полный доступ к командной строке операционной системы. Создадим папку для конфигурации transmission

mkdir -p ~/docker/transmission/config/watch
nano ~docker/transmission/start.sh

Cкопируем туда команду для создания докер-контейнера:

docker create \
  --name=transmission \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Europe/Moscow \
  -p 9091:9091 \
  -p 51413:51413 \
  -p 51413:51413/udp \
  -v /home/user/docker/transmission/config:/config \
  -v /mnt/torrents:/downloads \
  -v /home/user/docker/transmission/config/watch:/watch \
  --restart unless-stopped \
  linuxserver/transmission

Путь /home/user/docker/transmission/config указывает на папку config в домашней директории вашего пользователя. Папку /nfs/torrents нужно заменить на полный путь к папке, в которую клиент будет скачивать файлы. У меня эта папка является примонтированным сетевым диском NAS.

Разбираемся с правами

Чтобы избежать проблем с правами доступа, желательно чтобы владельцем папки /nfs/torrents был тот же пользователь, идентификаторы которого (PUID и PGID) указаны в параметрах запуска контейнера. Узнать PUID/PGID пользователя можно с помощью команды id имя пользователя. Узнать имя владельца папки можно с помощью команды ls -l.

Запускаем контейнер

Создадим контейнер командой sh start.sh. Если ошибок нет, запустим его командой docker start transmission и тут же проверим логи на предмет ошибок docker logs transmission. Если все прошло нормально, по адресу http://хх.хх.хх.хх:9091 доступен веб-интерфейс transmission

Настраиваем интеграцию с Home Assistant

Для этого добавим в файл конфигурации Home Assistant:

transmission:
  host: xx.xx.xx.xx

xx.xx.xx.xx нужно заменить на адрес машины, на которой крутится контейнер transmission. После перезагрузки HA в списке сенсоров добавятся новые значения:

image-20200203231305588