Automatiza Transmission con Home Assistant + Telegram

Gestiona tus torrents desde Telegram y además recibe avisos cuando tus descargas hayan empezado y finalizado.

Automatiza Transmission con Home Assistant + Telegram
Regístrate en HDS+
Es gratuito. Ten acceso a todo el contenido.
🔓
Dificultad del tutorial: Medio

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.

😀
Si has seguido el tutorial de Integrar Transmission con Flood y Transmissionic, solamente te quedará por instalar el contenedor de Home-Assistant.

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
⚠️
Los parámetros en ❗deberéis de modificarlos por los vuestros. 

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.


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.

Cómo instalar y configurar Nginx Proxy Manager en tu NAS o servidor unRAID
Guía detallada sobre cómo instalar tu Proxy Inverso en un NAS - unRAID con certificado Let’s Encrypt.
👁️
¡OJO! Si no tienes usuario y contraseña para acceder a Transmission, deja esos dos campos en blanco (Punto 2 y 3 de la imagen).

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:

⚠️
Si no disponias de un Bot de notificaciones de tu NAS previamente, primero, tendrás que crear un nuevo Bot en Telegram con @BotFather. Para conocer nuestro ID de Telegram invocaremos a @get_id_bot
telegram_bot:
  - platform: polling
    api_key: ❗xxxxxxxx:xxxxxxxxxxx
    allowed_chat_ids:
      - ❗4455643 

notify:
  - platform: telegram
    name: notificacion-telegram
    chat_id: ❗4455643
⚠️
Tendremos que sustituir los ❗ por nuestros valores. En api_key especificaremos nuestro Bot de Telegram y en chat_id nuestra ID de usuario.

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.

Ejemplo de la notificación que nos llegará a Telegram.

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.

  1. 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.
  2. Una vez descargada, lo descomprimimos en nuestro Mac/PC y tendremos un único fichero con el nombre transmission-telegram.
  3. 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.
  4. 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.
⚠️
Tendremos que crear otro nuevo Bot en Telegram con @BotFather. Para conocer nuestro ID de Telegram invocaremos a @get_id_bot

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
Tendréis que sustituir los valores por los vuestros. Más abajo especifico que significa cada variable. ¡OJO! Si no tienes usuario y contraseña para acceder a Transmission, eliminad las variables -username y -password del Script.

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:

👁️
¡OJO! Si no tienes usuario y contraseña para acceder a Transmission, eliminad las variables -username y -password del Script.
./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.

Listado completo de comandos disponibles para el Bot

Invítame a un café



Más artículos

Cómo instalar y configurar WireGuard en tu Router Asus e integrarlo con Pi-Hole

Cómo instalar y configurar WireGuard en tu Router Asus e integrarlo con Pi-Hole

Aprende a configurar la VPN más rápida y segura en tu Asus. Además intégralo con Pi-Hole.

Por Joan
Cómo instalar FreshRSS en tu NAS o servidor unRAID

Cómo instalar FreshRSS en tu NAS o servidor unRAID

Instala tu servidor Self-Hosted de agregador de noticias. Configuración y primeros pasos explicados.

Por Joan