Automatiza Transmission con Home Assistant + Telegram
Gestiona tus torrents desde Telegram y además recibe avisos cuando tus descargas hayan empezado y finalizado.

Regístrate en HDS+
Tutoriales y soporte sobre sistemas NAS, Redes, Docker y SelfHosting.
Sin SPAM. Es gratuito. Ten acceso a todo el contenido.
Siempre que levantamos un servicio nuevo en nuestro servidor, pensamos en la utilidad, comodidad y la posibilidad de integrarlo con otros servicios, pues el tutorial de hoy es justamente eso. Tras años utilizando Rtorrent con RuTorrent, he dado el paso a Transmission con interfaz Flood y Transmissionic.
Con la ayuda del compañero @DavidOliMar, he conseguido integrar Transmission con Home-Assistant para que nos notifique en Telegram de forma automática cuando empieza una descarga y también cuando la finaliza, con todo lujo de detalles.
No solamente eso, sino que también os explicaré cómo instalar y configurar un Bot para gestionar los torrents desde Telegram, sin tener ni que abrir Transmission. Todo esto vamos a verlo a continuación, así que empezamos.

Instalación de los paquetes mediante Docker-Compose
Lo primero que tendremos que hacer es instalar Home-Assistant y Transmissi0n en nuestro NAS mediante Docker-Compose.
Como siempre, antes de ejecutar un Stack, deberemos de crear las carpetas correspondientes. Para ello nos vamos a 'File Station ➝ docker' y creamos las carpetas "homeassistant" y "transmission". Después ya podemos ejecutar los 2 stacks que muestro a continuación:
Home-Assistant
version: '3.3'
services:
home-assistant:
container_name: home_assistant
environment:
- TZ=Europe/Madrid
volumes:
- '/volume1/docker/homeassistant:/config'
network_mode: host
restart: always
image: 'homeassistant/home-assistant:latest'
Transmission
version: "3.7"
services:
transmission:
image: lscr.io/linuxserver/transmission
container_name: transmission
environment:
- PUID=❗1000
- PGID=❗1000
- TZ=Europe/Madrid
volumes:
- /volume1/docker/transmission:/config
- ❗/volume1/descargas:/download
ports:
- 9091:9091
- 51413:51413
- 51413:51413/udp
restart: unless-stopped

Instalación de los paquetes en unRAID
El proceso de instalación en unRAID más fácil no podría ser gracias a la utilización de las plantillas.


Nos vamos a Apps y buscamos "Home Assistant" e instalamos la imagen de Balloob's que es la oficial. Después buscamos "Transmission" e instalamos la de linuxserver.
En la plantilla de Home Assistant no tenemos que tocar absolutamente nada. En el caso de Transmission deberemos de especificar la ruta donde queremos que nos guarde las descargas y en que directorio queremos mapear la carpeta Watch.
Por último, tendremos que especificar un usuario y contraseña para permitirnos acceder a la GUI, así como también el puerto de escucha para los Peers.


Configuración de las plantillas de Home Assistant y Transmission.
Automatizando Transmission con Home-Assistant
Una vez tenemos ya los contenedores correctamente instalados y corriendo, accederemos a Home-Assistant mediante: http://IPNAS:8123
o el subdominio asignado mediante Proxy Inverso.

Lo primero que tendremos que hacer es dirigirnos a Ajustes ➝ Dispositivos y Servicios y añadir la integración Transmission. Rellenaremos los campos con los datos que hayamos especificado a la hora de levantar el contenedor.
Seguidamente pulsamos en Configuración y cambiaremos el valor de Frecuencia de actualización a 5.

Después nos iremos a la ruta local donde está instalado Transmission y buscamos el archivo : configuration.yaml
y tendremos que añadir lo siguiente:
telegram_bot:
- platform: polling
api_key: ❗xxxxxxxx:xxxxxxxxxxx
allowed_chat_ids:
- ❗4455643
notify:
- platform: telegram
name: notificacion-telegram
chat_id: ❗4455643
Una vez modificado el archivo, lo guardamos y lo subimos al servidor reemplazando el anterior. Tras reiniciar el Docker de Home-Assistant ya podremos continuar.
Después seguiremos los pasos descritos en las imágenes inferiores. Nos iremos a Ajustes ➝ Automatizaciones y Escenas y crearemos dos nuevas automatizaciones con la Plantilla YAML para que nos notifique por Telegram cuando una descarga ha empezado y ha finalizado.



En la primera automatización pegaremos el siguiente código y guardamos:
alias: Empezar descarga
trigger:
- platform: event
event_type: transmission_started_torrent
action:
- service: telegram_bot.send_message
data:
message: "La descarga del Torrent: *{{trigger.event.data.name}}* 🏴☠️ ha comenzado. Te aviso cuando termine ⏳."
title: >-
*Notificación Descargas 🔽* #Fecha{{ now().strftime('%d%m%Y') }}
En la segunda automatización pegaremos el siguiente código y guardamos:
alias: Completado
description: ""
trigger:
- platform: event
event_type: transmission_downloaded_torrent
condition: []
action:
- service: telegram_bot.send_message
data:
title: >-
*Notificación Descargas 🔽* #Fecha{{ now().strftime('%d%m%Y') }}
message: "La descarga del Torrent: *{{trigger.event.data.name}}* 🏴☠️ se ha completado con éxito ✅."
mode: single
Una vez llegados a este punto, si probamos a descargar un Torrent en Transmission, veremos como nos lo notifica en el Bot que hemos creado en Telegram resaltando el nombre del archivo y con un aspecto visual agradable.

Gestionando los Torrent desde Telegram directamente
Para finalizar os traigo la guinda del pastel, y es que con el siguiente script no tendremos que entrar ni en nuestro cliente Transmission para gestionar y conocer el estado de los Torrent. Podremos hacer absolutamente todo a través de Telegram.

- Nos dirigimos al repositorio GitHub del desarrollador y nos descargamos la versión compatible con nuestro sistema. En el caso de unRAID o un Synology con CPU Intel elegiríamos el siguiente fichero.
- Una vez descargada, lo descomprimimos en nuestro Mac/PC y tendremos un único fichero con el nombre
transmission-telegram
. - Copiaremos y subiremos el fichero a nuestro servidor o NAS en la ruta que queramos. En mi caso, en el Synology lo subiré dentro de:
/volume1/docker/
y en mi unRAID dentro de/mnt/user/appdata/transmission
. - Para finalizar, entramos vía SSH a nuestro NAS / unRAID y nos dirigimos a la ruta donde hemos guardado el archivo previamente y ejecutamos el siguiente comando:
chmod +x transmission-telegram
.
En Synology
En el caso de Synology, nos iremos a Panel de Control → Programador de Tareas → Crear Tareas programadas → Script definido por el usuario.

En la pestaña del Script copiamos el siguiente comando:
/volume1/docker/transmission/transmission-telegram -token=xxxxxxxxx:xxxxxxxxxxxx -master=pepito -url=https://xx.midominio.com/transmission/rpc -username=pepito -password=pepito
Una vez creado el Script, seleccionamos que lo ejecute como Root, y cuando queremos que lo ejecute y aplicamos. Una vez hecho esto, ejecutamos la tarea por primera vez para que entre en funcionamiento.
En unRAID
En el caso de unRAID nos iremos a Ajustes ➝ User Scripts y crearemos uno nuevo con el siguiente contenido:
./mnt/user/appdata/transmission/transmission-telegram -token=xxxxxxxxx:xxxxxxxxxxxx -master=pepito -url=https://xx.midominio.com/transmission/rpc -username=pepito -password=pepito
- -token: Especificamos la API de nuestro Bot de Telegram.
- -master: Especificaremos nuestro usuario de Telegram (no el valor númerico).
- -url: Especificamos la IP local o URL donde se ejecuta Transmission seguido de :
/transmission/rpc
. - -username: Especificaremos el usuario que hemos elegido al levantar el contenedor de Transmission.
- -password: Especificaremos la contraseña que hemos elegido al levantar el contenedor de Transmission.
Una vez guardado el script, pulsamos que lo ejecuta en segundo plano y que lo active cuando arranquemos el Array.

Para comprobar que funciona correctamente, nos vamos al Bot que hemos creado en Telegram e introduciremos el comando que queramos. En el repositorio oficial tenéis la lista completa.
