18-02-2023, 02:23 PM
(This post was last modified: 18-02-2023, 03:17 PM by Ganekogorta.)
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.
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
-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á:
-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
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:
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.
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
-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
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η
Agur eta ondo ibili
Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be, TR-002 y QHora-301w) Ʀɐɯ0η