• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
QPKG con Docker de TelegramTorrent 3.3
#1
Hola

Este hilo es una vuelta de tuerca al uso de un Docker lanzado desde un QPKG.

Si has leído los hilos QPKG para autoarranque y Docker de Telegram 3.3, este hilo es un mezcla de ambos, pero con el añadido de un QPKG.

Tras escribir el hilo de Docker de Telegram 3.3 me di cuenta que para el inicio del Docker debía hacerse vía consola y no funcionaba si incluía el comando de ejecución del docker en un script.

Curiosamente si ejecutaba un script desde consola si lo hacía, pero si ese script se ejecutaba desde crontab o desde el QPKG ficticio no se iniciaba.

Estuve haciendo pruebas y no eran temas de permisos o accesos a carpetas/archivos.

Al final descubrí por prueba y error que si podía hacerse pero mediante el uso dos comandos. Uno de creación del Docker y otro de ejecución de ejecución.

Con tanta prueba, al final decidí crear un QPKG completo. 

Que sepa, es el primer QPKG que veo ejecuta un docker en el trasfondo.  Exclamation

1-Funcionamiento

Básicamente lo que hace el QPKG es:
-comprobar que tenemos Pyton y Container Station con unas versiones mínimas. Si no se cumplen , veremos el aviso en mensaje y en el log de QTS.

-que no tenemos el QPKG de TelegramTorrent. Ambos usan una misma función de python similar y entrar en conflicto. De hecho tampoco podemos tener ejecutando el mismo docker en nas distintas si ambas usan el mismo bot de Telegram. Si lo hacéis veréis que uno responde con el eco del otro y así sucesivamente  Angry

-luego se comprueba que Container Station está ejecutándose, se queda ahí hasta que lo compruebe. No tiene sentido avanzar ya que sin él, no funcionaría en docker.

-luego crear de forma manual la carpeta compartida "bottorrent" en el conjunto de almacenamiento de sistema.
Hago esto, ya que todas las NAS de QNAP lo tienen. 
Tendrán permisos SMB de acceso y escritura los del grupo administradores. 
Lo he hecho de forma manual, ya que si lo hago por comando, no me permite dar acceso a grupos.
Si se quiere modificar estos permisos lo haremos posteriormente desde QTS en la sección de carpetas compartidas.

-en esa carpeta compartida llamada "bottorrent" creo un archivo de configuración de ejemplo (config.conf) con las variables que usará en docker. Este lo debemos de editar posteriormente con nuestros datos reales relativos al bot y al Telegram de destino.

El contenido inicial del archivo config.conf será:
Code:
TG_API_ID=1234567
TG_API_HASH=cadena1234hast5678pruebas90
TG_BOT_TOKEN=1234567890:Cadena_Generada_Por_Telegram
TG_DOWNLOAD_PATH=./data/descargas
TG_DOWNLOAD_PATH_MP3=./data/descargas/mp3
TG_DOWNLOAD_PATH_PDF=./data/descargas/pdf
TG_WATCH_PATH=./data/descargas/torrent
TG_AUTHORIZED_USER_ID=1234321
PUID=1001
PGID=1001

-se crean en la carpeta dos enlaces simbólicos a las plantillas de envío de correo. Éstas son usadas para avisarnos por mail del arranque o detención del QPKG. 
Evidentemente, para que funcione, debemos tener configurada la nas previamente, si no lo está, simplemente no funcionará y no nos avisará del error.

La primera vez que instalemos en QPKG, se crearán todo lo anterior y se descargará de internet la imagen del docker.
Por lo que tardará en iniciarse un poco mas de lo habitual.

Seguidamente lo detendremos, modificamos el contenido de los archivos de la carpeta compartida "bottorrent" y nuevamente iniciamos el QPKG.

Si todo ha ido bien, recibiremos en nuestro Telegram el aviso del bot de que ha sido iniciado.

2-Instalación

Se puede hacer todo manual, pero dejo en este enlace de Mega la descarga de QPKG que lo hace todo por nosotros  Wink

Si no tenemos permitida la instalación de QPKG sin firmar, debemos activarlo previamente.
   

Durante la instalación nos saldrá el siguiente aviso, que deberemos aceptar.
   

3- Desinstalación

Para desinstalarlo, primero quitamos el QPKG desde App Station y luego eliminamos desde QTS la carpeta compartida "bottorrent" y su contenido. 
Si no la borramos y volvemos a reinstalar, la configuración será reutilizada y no debemos volver a definirla.

[url=https://mega.nz/folder/01BWCBBa#ZcMVli-XO6WNPEbCJjxYrQ][/url]
Si se quiere modificar el código, simplemente iremos a al archivo /share/conjunto_de_sistema/.qpkg/bottorrent/bottorrent.sh para ver que hace.
El contenido del bottorrent.sh es el siguiente:
Code:
#!/bin/sh
CONF=/etc/config/qpkg.conf
QPKG_NAME="bottorrent"
QPKG_ROOT=`/sbin/getcfg $QPKG_NAME Install_Path -f ${CONF}`
APACHE_ROOT=`/sbin/getcfg SHARE_DEF defWeb -d Qweb -f /etc/config/def_share.info`
export QNAP_QPKG=$QPKG_NAME
directoriox="$(dirname -- $(readlink -fn -- "$0"; echo x))"
directorio="${directoriox%x}"
#Conjunto almacenamiento de sistema
dir1=`getcfg SHARE_DEF defVolMP -f /etc/config/def_share.info`

case "$1" in
  start)
    ENABLED=$(/sbin/getcfg $QPKG_NAME Enable -u -d FALSE -f $CONF)
    if [ "$ENABLED" != "TRUE" ]; then
        echo "$QPKG_NAME está deshabilitado."
        exit 1
    fi
    : ADD START ACTIONS HERE
    #envío correo del inicio
    tmpfile=$directorio/bottorrent_on.txt
    cat $tmpfile | /usr/sbin/sendmail -t
    #compruebo si Container estation está activo cada 30 segundos y no salgo hasta que lo esté
    cstation=`ps awx | grep 'container-station/lxd' |grep -v grep|wc -l`
    while [ $cstation == 0 ] # && [ -f /share/MD0_DATA/Scripts/bottorrent.bik ]
    do
        sleep 30s
        cstation=`ps awx | grep 'container-station/lxd' |grep -v grep|wc -l`
    done
        
    #compruebo si NO existe la configuracion previa y creo carpeta, simbolico, el smb y archivo de cfg
    if [ ! -f $dir1/bottorrent/config.conf ] ; then
        #creo carpeta bottorrent en conjunto de almacenamiento de sistema y su enlace simbólico
        echo "creo ruta $dir1/bottorrent y su simbolico"
        mkdir $dir1/bottorrent
        ln -sf $dir1/bottorrent /share/
        #cuento [bottorrent] en la lista de SMB y si no esta, lo añado a smb.conf.
        cuenta=`grep -o '\[bottorrent\]' /etc/config/smb.conf| wc -l`
        if [ ! $cuenta -ge 1 ]; then
            #añadir carpeta compartida en SMB a /etc/config/smb.conf
            echo "\n">>/etc/config/smb.conf
            echo "[bottorrent]">>/etc/config/smb.conf
            echo "comment = Configuracion de bottorrent">>/etc/config/smb.conf
            echo "path = $dir1/bottorrent">>/etc/config/smb.conf
            echo "browsable = yes">>/etc/config/smb.conf
            echo "oplocks = yes">>/etc/config/smb.conf
            echo "ftp write only = no">>/etc/config/smb.conf
            echo "recycle bin = yes">>/etc/config/smb.conf
            echo "recycle bin administrators only = no">>/etc/config/smb.conf
            echo "qbox = no">>/etc/config/smb.conf
            echo "timemachine = no">>/etc/config/smb.conf
            echo "public = yes">>/etc/config/smb.conf
            echo "invalid users = \"guest\"">>/etc/config/smb.conf
            echo "read list = @\"everyone\"">>/etc/config/smb.conf
            echo "write list = \"admin\",@\"administrators\"">>/etc/config/smb.conf
            echo "valid users = \"root\",@\"everyone\",\"admin\",@\"administrators\"">>/etc/config/smb.conf
            echo "inherit permissions = yes">>/etc/config/smb.conf
            echo "smb encrypt = disabled">>/etc/config/smb.conf
            echo "mangled names = yes">>/etc/config/smb.conf
            echo "strict allocate = yes">>/etc/config/smb.conf
            echo "streams_depot:check_valid = yes">>/etc/config/smb.conf
            #recargo configuraciob SMB para que aparezca bottorrent como compartida
            /usr/local/samba/bin/smbcontrol all reload-config
            #creo enlaces simbolicos dentro de la carpeta a los archivos de correo
            ln -s $dir1/.qpkg/bottorrent/bottorrent_on.txt /share/bottorrent/
            chmod 666 $dir1/.qpkg/bottorrent/bottorrent_on.txt
            ln -s $dir1/.qpkg/bottorrent/bottorrent_off.txt /share/bottorrent/
            chmod 666 $dir1/.qpkg/bottorrent/bottorrent_off.txt
        fi
                
        #ahora creo el archivo de configuracion con ejemplo para que sea modificado por usuario
        echo "TG_API_ID=1234567">$dir1/bottorrent/config.conf
        echo "TG_API_HASH=cadena1234hast5678pruebas90">>$dir1/bottorrent/config.conf
        echo "TG_BOT_TOKEN=1234567890:Cadena_Generada_Por_Telegram">>$dir1/bottorrent/config.conf
        echo "TG_DOWNLOAD_PATH=./data/descargas">>$dir1/bottorrent/config.conf
        echo "TG_DOWNLOAD_PATH_MP3=./data/descargas/mp3">>$dir1/bottorrent/config.conf
        echo "TG_DOWNLOAD_PATH_PDF=./data/descargas/pdf">>$dir1/bottorrent/config.conf
        echo "TG_WATCH_PATH=./data/descargas/torrent">>$dir1/bottorrent/config.conf
        echo "TG_AUTHORIZED_USER_ID=1234321">>$dir1/bottorrent/config.conf
        echo "PUID=1001">>$dir1/bottorrent/config.conf
        echo "PGID=1001">>$dir1/bottorrent/config.conf
        chmod 666 $dir1/bottorrent/config.conf
        fi        
    #lanzo creacion del docker
    /$dir1/.qpkg/container-station/bin/docker create --rm -it --name BotTorrent --env-file $dir1/bottorrent/config.conf -v /share/Download:/app/data/descargas -v /share/Download/torrent:/app/data/watch 0netx/bottorrent
    sleep 5s
    #ejecuto docker
    /$dir1/.qpkg/container-station/bin/docker start BotTorrent
    
    
    ;;

  stop)
    : ADD STOP ACTIONS HERE
    #envío correo de la detencción
    tmpfile=$directorio/autoarranque_off.txt
    cat $tmpfile | /usr/sbin/sendmail -t
  
    #detengo el docker y el mismo se elimina
    /$dir1/.qpkg/container-station/bin/docker stop BotTorrent
  
    ;;

  restart)
    $0 stop
    $0 start
    ;;

  *)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
esac

exit 0
Un saludo

Agur eta ondo ibili

Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be, TR-002 y QHora-301w) Ʀɐɯ0η
  Reply




Users browsing this thread: 1 Guest(s)