Welcome, Guest
You have to register before you can post on our site.

Username
  

Password
  





Search Forums



(Advanced Search)

Forum Statistics
» Members: 7.428
» Latest member: vuckaner
» Forum threads: 3.509
» Forum posts: 20.024

Full Statistics

Online Users
There are currently 438 online users.
» 0 Member(s) | 436 Guest(s)
Bing, Google

Latest Threads
Problema con Container St...
Forum: VMs & Docker Containers
Last Post: vuckaner
10 hours ago
» Replies: 0
» Views: 30
Hola a tod@s
Forum: Presentaciones
Last Post: vuckaner
11 hours ago
» Replies: 0
» Views: 29
Canal en Telegram QnapClu...
Forum: Anuncios, noticias y enlaces
Last Post: Ganekogorta
18-02-2026, 07:50 AM
» Replies: 132
» Views: 120.766
NAS muerto
Forum: Cuestiones técnicas
Last Post: yeraycito
16-02-2026, 07:56 PM
» Replies: 1
» Views: 118
Problema con HBS3
Forum: Cuestiones técnicas
Last Post: Ganekogorta
11-02-2026, 07:57 AM
» Replies: 8
» Views: 717
TS-228 .Discos duros vací...
Forum: Cuestiones técnicas
Last Post: Ganekogorta
03-02-2026, 07:53 AM
» Replies: 3
» Views: 310
Gestor de contraseñas Ali...
Forum: VMs & Docker Containers
Last Post: yeraycito
31-01-2026, 03:51 AM
» Replies: 2
» Views: 888
Presentación - Nuevo en l...
Forum: Presentaciones
Last Post: Ganekogorta
20-01-2026, 07:52 AM
» Replies: 1
» Views: 267
Buen día!
Forum: Presentaciones
Last Post: Ganekogorta
20-01-2026, 07:48 AM
» Replies: 1
» Views: 229
Docker NetAlertX control ...
Forum: VMs & Docker Containers
Last Post: yeraycito
19-01-2026, 03:18 PM
» Replies: 5
» Views: 1.699

 
  Servidor Baikal de calendarios y contactos
Posted by: Ganekogorta - 23-08-2025, 12:09 AM - Forum: VMs & Docker Containers - No Replies

Hola

En este post vamos a ver como desplegar un docker de Baikal.
Baikal es una aplicación web que permite a varios usuarios alojar sus citas e calendarios y sus contactos no dependiendo de servidores de terceros.

No es una aplicación pesada ya que en realidad en ella sólo se gestionan los datos que envíen los equipos clientes y hay una pequeña gestión web para crear usuarios.

Se que hay un qpkg para la aplicación en MyQnap.org , pero pide tiene una dependencia de Apache84. Y ese Apache84 es un paquete de pago de 16€. 

En nuestro caso no tenemos esa dependencia y el costo es 0€  Wink

Requisitos:
1-tener instalado Container Station para poder lanzar dockers
2-tener instalada y activa una BBDD MariaDB o MySQL.
3-tener una carpeta compartida o subcarpeta dentro de una compartida para dejar datos de forma persistente
3-tener acceso a la consola de comandos de la NAS.

Requisitos recomendables:
1-tener una dns publica para acceder a la nas desde el exterior.
2-tener un dominio para gestionar nuestros dns. Los hay baratos sobre los 12€ al año (si vas a adquirir revisa las renovaciones)
3-usar un proxy inverso tipo nginx para aportar un certificado http y un extra de seguridad
4-tener Cloudflare web como gestor de nuestros dns, para ocultar nuestra ip pública real

Para el punto 1, es importante no estar bajo CGNAT, ya que no podríamos acceder desde el exterior haca nuestra nas.
Para el punto 2, he preferido usar nginx proxy manager, pero podemos usar traefik o bien el integrado en la nas.

Los datos que generemos van a estar repartidos en dos ubicaciones:
-la base de datos de MariaDB
-la carpeta persistente

Lo indico ya que deberemos hacer copia de seguridad de ambos contenidos.
Siempre debemos tener copias de seguridad de nuestros datos, que luego vienen los sustos  Wink


Indice

1-Creación de la base de datos y un usuario en MariaDB
2-Creación y despliegue del docker
3-Accesos web y creación de usuarios en Baikal
4-Accesos desde el exterior
5-Configuración de clientes en móvil IOs
6-Configuración de clientes en móvil Android
7-Configuración de clientes en Thunderbird




1-Creación de la base de datos y el usuario en MariaDB

Estoy dando por supuesto que ya tenemos instalada y activa la aplicación MariaDB en nuestra nas. Pero podríamos tenerla en otra máquina distinta.

Para este ejemplo usaré MariaDB10

   

En este caso el puerto que se usa es el 3307, pero puede ser otro.

Se puede hacer la gestión de MariaDB enteramente por consola ssh, pero es mas gráfico y comprensible si lo hacemos por entorno gráfico.
Para ello usaremos la aplicación PhpMyAdmin instalabre desde nuestro App Center.

En su momento ya se describió en este otro post de creación de una BBDD en MariaDB usando PhpMyAdmin


Para este caso vamos a crear una base de datos bacía de nombre "baikal_db" y un usuario "baikal" con permisos en esa base de datos desde cualquier host (%). 
La clave será una de nuestra elección. Apuntad estos tres datos ya que posteriormente hemos de usarlos.

Pongo unas capturas del proceso

Nos logueamos en 
   

En la pantalla principal, pulso sobre el botón de agregar una nueva base de datos
   

Le doy nombre y la creo. En este caso "baikal_db"

   

Me aparecerá en la lista de la izquierda

   

Ahora crearemos un usuario para esa base de datos de nombre "baikal" y contraseña "clave_de_baikal"
Para ello selecciono la base de datos de "baikal_db" de la izquierda y después selecciono la lengüeta de privilegios.
En la parte inferior de la pantalla está la opción de "Agregar cuenta de usuario"

   

Asignamos nombre, clave y permisos

   

   

Pulsamos luego sobre continuar y ya tenemos nuestro usuario con los permisos adecuados.

   

Ya podemos cerrar PhpMyAdmin.


2-Creación y despliegue del docker

Aquí usaremos la consola de ssh para lanzar el siguiente comando de creación del docker
Code:
docker run -d --name baikal --restart unless-stopped -p 18080:80 -v /share/DockerData/baikal/data:/var/www/baikal/Specific -v /share/DockerData/baikal/config:/var/www/baikal/config ckulka/baikal:nginx

El comando usa dos carpetas persistentes que están apuntando a un carpeta compartida de nuestra nas. En el ejemplo la carpeta compartida es "DockerData".
En su interior de forma automática se creará la carpeta "baikal" y dentro de ellas las de "data" y "config"

He puesto como puerto de publicación el 18080, pero puede ser cualquiera de nuestra elección que no esté por otros servicios.

En la consola veremos la descarga, descompresión e instalación del docker

   

Tras este proceso veremos una pantalla similar a la siguiente

   

Y con esto hemos acabado de instalar el contenedor.

3-Accesos web y creación de usuarios en Baikal

Si lo hemos hecho bien, abrimos un navegador y si vamos a http://ip_nas:18080 veremos el asistente de la primera configuración:

   

Vamos rellenando los datos y los adaptamos a nuestra instalación.
Pondremos una clave de usuario administrador que debemos apuntar ya que la usaremos para crear mas usuarios de Baikal en un futuro.

   

Ahora pasamos a la base de datos, que por defecto usa sqlite.
La cambiamos a Mysql y rellenamos con los datos que pusimos en MariaDB.

   

El motivo de usar MariaDB frente a sqlite, es que su motor es mas ágil si tenemos volúmenes importantes de datos y permite una mejro gestión de copias de seguridad.

Una vez acabado el asistente, este no vuelve a estar disponible.

   

Una vez salgamos del asistente y nos identifiquemos en la web, veremos siguiente dashboard:

   

En el menú superior elegimos usuarios y recursos para agregar una nuevo

   

Para el ejemplo creo al usuario "usuario" con su clave.

   

   

Por defecto se han creado un calendario pro defecto y una agenda de direcciones por defecto.

Podremos crear nuevas desde los equipos clientes o bien crearlas desde la web

Para crear un calendario de "viajes" lo haríamos de la siguiente forma:

   

   

En el campo tokenID puedo poner cualquier cadena única en minúsculas. 
Para no complicarlo uso el nombre del calendario en minúsculas. Una vez creado NO puede ser modificado

   

He activado el uso de notas en las citas.

Y una vez creado, lo veremos en la lista

   

Podemos operar de forma similar con la agenda de contactos.
Lo normal para todos es tener una única agenda de contactos, pero puede haber usuarios que quieran tener mas de una.
Por ejemplo para tener una personal y una laboral.

Con esto ya hemos acabado con la gestión de usuarios y ya tenemos operativo nuestro servidor caldav y cardav.


4-Accesos desde el exterior

Ahora mismo nuestro servidor sólo es accesible si estamos en la misma red que la nas.

Si no tenemos un dominio propio podemos acceder a Baikal mediante una VPN (Wireguard u OpenVPN)
Es decir podríamos acceder al servidor Baikal como si estuviésemos en la red de la nas.

Si tenemos un dominio personal y tenemos nuestra gestión de dns. Podemos definir una nueva que apunte a nuestra ip publica.
Y para agregar una capa de seguridad debemos usar un proxy inverso (Nginx, Traefik, el de QTS)  que nos aporta el certificado

En función de que usemos o no los accesos desde el exterior, tendremos las siguientes direcciones para acceder a los calendarios y agendas.

Aquí tenemos las del primer calendario que es el de defecto.
http://ip_nuestra_nas:18080/dav.php/cale...o/default/
https://baikal.mi_dominio.eus/dav.php/ca...o/default/

Las direcciones del calendario de viajes son:
http://ip_nuestra_nas:18080/dav.php/cale...io/viajes/
https://baikal.mi_dominio.eus/dav.php/ca...io/viajes/

Las direcciones de la agenda de defecto son:
http://ip_nuestra_nas:18080/dav.php/addr...o/default/
http://baikal.mi_dominio.eus/dav.php/add...o/default/

y como credenciales usaremos "usuario" y la clave que definimos anteriormente.

Cuando lo configuremos en clientes de correo podemos usar las genéricas:
http://ip_nuestra_nas:18080/dav.php/addressbookst
http://baikal.mi_dominio.eus/dav.php/addressbooks

http://ip_nuestra_nas:18080/dav.php/calendars
https://baikal.mi_dominio.eus/dav.php/calendars

En esto últimos casos, la aplicación cliente nos mostrará y permitirá seleccionar que calendarios o agendas queremos agregar.




5-Configuración de clientes en móvil IOs

Para agregar los calendarios o agendas en iOS iremos a Ajustes y buscaremos "cuentas" o "cuentas de Mail" en función de la versión de iOS.

Pulsamos añadir cuentas y seleccionamos de la lista la inferior "otras".

De ahí seleccionamos "Añadir cuenta CardDav"

   

Rellenamos los datos del usuario y su clave. En la dirección del servidor pondremos
"ip_nas:18080/dav.php" donde ip_nas es la ip privada de la nas

   

Como estamos sin https, nos dará un aviso de ssl ya que internamente no está activado.

   

la cuenta será verificada

   

Y luego ya estará agregada

   

Para hacer una comprobación rápida compruebo desde el gestor web que el "usuario" NO tiene contactos

   

Ahora desde el móvil agregamos uno

   

Y si vamos de nuevo al entorno web veremos que ha aumentado el número de contactos del usuario "usuario".

   

Para los calendarios es muy simular ya que hemos de ir al mismo menú de cuentas pero hay que agregar "Añadir cuenta CalDAV"

   

Introducimos los datos de dirección ("ip_nas:18080/dav.php" donde ip_nas es la ip privada de la nas) , usuario y clave

   

Nos da el aviso para que lo intente sin ssl.

   

Se hace la comprobación

   

Nos ha activado citas y recordatorios

   

Ahora ya vemos que ha sido agregada y podemos agregar citas desde iOS
   

6-Configuración de clientes en móvil Android

Sorprendentemente Android NO integra de forma nativa los calendarios CalDAV y la libretas de direcciones CardDAV.

Pero hay programas que si lo hacen como DAVx5 (gracias pepebetis por recomendarlo Wink )  que permite sincronizar con cuentas de Google, Apple y otros CalDAV como Baikal.

Tras instalarlo comienza su asistente, donde introduciremos la dirección, el nombre de usuario, la clave.

Tendremos que dar permisos a la aplicación para que pueda acceder a calendarios y contactos.
Un resumen de capturas se ve en la siguiente secuencia de imágenes

     

(No he podido ponerlas por separado ya que el post tiene un límite de 50 imágenes)

En la captura 12 se ve que nos aparece en la aplicación de contactos el de "pruebas" que es el que teníamos previamente en Baikal

7-Configuración de clientes en Thunderbird

Thunderbird es un programa cliente de correo gratuito y en mi opinión uno de los mejores.
Soporta muchos tipos de servidores de correo, calendarios y contactos. 
Además hay una infinidad de complementos que lo potencian.
En las últimas versiones ya se incorpora de forma nativa la gestión de los estándares CalDAV y CardDAV.

7.1-Agregando calendarios
La pantalla principal donde podemos ver los calendarios es la siguiente:
En el ejemplo vemos uno local llamado Casa

   

Para agregar uno nuevo pulsamos en la parte inferior izquierda en "Nuevo calendario"

Se nos abre un asistente donde primero elegimos un calendario "En la red"

   

Después rellenamos con los datos del nombre del usuario y la dirección de calendario ( en este caso interna de nuestra red)

   

Después nos pedirá la contraseña de las anteriores credenciales

   

Tras aceptar nos presentará todos los calendarios del usuario "usuario".
Lo normal es incorporar todos, pero podemos elegir los que nos interesen.

   

Después ya podemos ver que en la lista de calendarios ya tenemos disponibles los que hemos agregados

   

7.2 Agregando la agenda de contactos

El proceso es similar al de los calendarios.
La pantalla de gestión de contactos y agendas es la siguiente:

   

Pulsamos en el botón de agregar agenda y se no presenta un desplegable de tipo. 
Elegimos "Añadir libreta de direcciones CardDAV"

   

Después empieza el asistente con la siguiente ventana, donde escribimos el nombre del usuario de la cuenta y la dirección de servidor Baikal
En este caso al ser local es http://ip_nas:18080/dav.php

   

Luego nos pide la clave del usuario "usuario"

   

A continuación se nos presenta una ventana para que seleccionemos las libretas disponibles en esa cuenta.
En nuestro caso sólo hay una.

   

Tras pulsar el botón de continuar ya veremos que hay una nueva libreta de direcciones llamada "Default Address Book".
Evidentemente podemos darle otro nombre, haciendo clic con el botón secundario, propiedades y escribir el nuevo nombre.

Tras la adicción ya vemos la nueva agenda y el único contacto de pruebas que creamos anteriormente.

   


En este post he detallado algo mas lo de los programa clientes de iOS, Android y Thunderbird.

Thunderbird al ser un programa de los mas estándar, nos permite hacer de conversor/intermediario de otros calendarios ya que con un copia pega podemos hacerlo entre calendarios/contactos.

Mi recomendación si tenéis un historial importante en otros servidores es que:
-exportéis en formato ICS desde el servidor origen
-importéis en un nuevo calendario local temporal de Thunderbird
-copiéis de ese calendario local al calendario de red (Baikal CalDAV en nuestro caso)


  Duplicación de redes bridge personalizadas tras reinicio del NAS en Container Station
Posted by: nebur - 21-08-2025, 10:16 AM - Forum: Cuestiones técnicas - Replies (1)

Contexto:
- NAS con Container Station, contenedores gestionados con archivos YML.
- Un contenedor sin red específica (bridge por defecto) funciona correctamente tras reinicio.
- Otro con red creada con docker network create (driver qnet) tampoco presenta problemas.
- Varios contenedores usan redes bridge personalizadas creadas manualmente con docker network create (driver bridge) para comunicación interna, declaradas como external: true en el YML.

Incidencia:
Tras reiniciar el NAS, las redes bridge personalizadas se duplican:
- Aparecen las redes originales (creadas manualmente) junto a redes nuevas con las mismas configuraciones de IP pero nombres autogenerados (ej: br-xxxx).
- Esta duplicación causa conflictos de routing y pérdida de comunicación entre contenedores.

Consecuencia:
Requiero eliminar manualmente contenedores, eliminar ambas redes (las originales y las autogeneradas), recrear las redes manuales y luego reinstanciar los contenedores. Esto rompe la automatización y es inviable ante reinicios no planificados.

Consulta:
¿Por qué Container Station/Docker recrea automáticamente estas redes bridge personalizadas tras el reinicio, duplicándolas y causando conflictos? ¿Es un comportamiento esperado o existe una configuración para evitarlo?


  Plantillas Tautulli
Posted by: Oroimenak - 19-08-2025, 05:35 PM - Forum: Tutoriales - Replies (1)

Hola a todos, después de que el compañero Ganekogorta hiciese un tutoría sobre Docker Tautulli, he decidido añadir un extra mas para que se nos notifique mediante Telegram tanto a nosostros como a la gente con la que compartimos nuestra videoteca de Plex unas pequeñas plantillas.
PD: No se porque los emojis cuando lo edito aparecen pero luego una vez guardado aparecen solo interrogaciones, os dejo aquí de donde he cogido todos esos emojis, simplemente seleccionar el que queremos y ponerlo en plantilla delante del nombre de la sección donde sale la "?"
https://emojicopy.com

tendría que salir de la siguiente forma:

   

Es necesario crear un bot y un grupo y añadir a la gente que queramos que sean notificados, cosa que no explicare ya que se ha explicado varias veces.

Lo que necesitaremos sera:

- Un servidor Plex
- Servidor Tautulli
- 1 Bot o 2, según cada uno, yo tengo 2 uno para que avise a la gente de los nuevos añadidos, caidas del servidor etc... y otro que me avisa de los visitados para ver si el servidor esta sufriendo o no.


Empezamos como lo tengo yo, con 2 bots

Notificaciones de nuevos añadidos y Servidor Up/Down
 
Primeros Pasos:

  1. Nos logearemos en Tautulli e iremos a configuración/Notification Agents y le daremos a: add a new Notification agent y seleccionamos Telegram

   

    2. Ahora rellenamos con nuestros datos los apartados de: Telegram Bot Token y Telegram Chat ID

   

    3.  Nos dirigidos la pestaña de Triggers y seleccionamos los que queramos, en nuestro caso:
       

   4. Una vez que tengamos todo esta seleccionados llega el momento de rellenar con estos datos las plantillas que queremos que se nos muestren en telegram, nos dirigimos entonces a Text y seleccionamos los triggger que hemos seleccionado previamente para rellenar los datos con estas plantillas, en nuestro caso han sido: Recently added, Plex server Down, Plex server back up, debemos rellenar los campos: Subject Line y Message Body.


         

Plantillas
  • Nuevo Añadido
Quote:Subject Line

Nuevo Añadido ({server_name})

Message Body

<movie>{added_date} {timestamp}
?❗ <b>NUEVA PELÍCULA</b>❗ <b>{title}</b> ({year}).
<b>? Biblioteca:</b> <i>{library_name}.</i>
<b>? Colecciones:</b> <i>{collections}.</i>
<b>? Estreno:</b> <i>{release_date}.</i>
<b>? Género:</b> <i>{genres}.</i>
<b>⏳ Duración:</b> <i>{duration} minutos.</i>
<b>? Director:</b> <i>{directors}.</i>
<b>? Actores:</b> <i>{actors:[:5]}.</i>
<b>? Productora:</b> <i>{studio}.</i>
<b>? Valoración:</b> <i>{rating}/10.</i>
<b>? Clasificación por edad:</b> <i>{content_rating}.</i>
<b>? Resolución:</b> <i>{video_resolution}p.</I>
<b>? Tamaño:</b> <i>{file_size}.</i>
<b>? Framerate:</b> <i>{video_framerate}.</i>
<b>? Bitrate:</b> <i>{bitrate} kbps.</i>
<b>? Contenedor:</b> <i>.{container}</i>
<b>? Codec de video:</b> <i>{video_codec}.</i>
<b>? Codec de audio:</b> <i>{audio_codec!u} {audio_channel_layout}.</i>
<b>? Codec de subtítulos:</b> <i>{subtitle_codec!u}.</I>
<b>? Sinopsis:</b> <i>{summary}</i>
<b>? Enlace a "The Movie Database":</b> {themoviedb_url} </movie>
<episode>{added_date} {timestamp}
?❗ <b>NUEVO EPISODIO</b>❗
<b>"Episodio {episode_num} - {episode_name}"</b> de la <i>temporada
{season_num}</i> de <b>{show_name}.</b>
<b>? Biblioteca:</b> <i>{library_name}.</i>
<b>? Emisión:</b> <i>{air_date}.</i>
<b>? Género:</b> <i>{genres}.</i>
<b>⏳ Duración:</b> <i>{duration} minutos.</i>
<b>? Director:</b> <i>{directors}.</i>
<b>? Actores:</b> <i>{actors:[:5]}.</i>
<b>? Productora:</b> <i>{studio}.</i>
<b>? Valoración:</b> <i>{rating}/10.</i>
<b>? Clasificación por edad:</b> <i>{content_rating}.</i>
<b>? Resolución:</b> <i>{video_resolution}p.</i>
<b>? Tamaño:</b> <i>{file_size}.</i>
<b>? Framerate:</b> <i>{video_framerate}.</i>
<b>? Bitrate:</b> <i>{bitrate} kbps.</i>
<b>? Contenedor:</b> <i>.{container}</i>
<b>? Codec de video:</b> <i>{video_codec}.</i>
<b>? Codec de audio:</b> <i>{audio_codec!u} {audio_channel_layout}.</i>
<b>? Codec de subtítulos:</b> <i>{subtitle_codec!u}.</I>
<b>? Sinopsis:</b> <i>{summary}</I>
<b>? Enlace a "The TV Database":</b> {thetvdb_url} </episode>
<season>{added_date} {timestamp}
?❗ <b>NUEVA TEMPORADA</b>
<b>Temporada {season_num}</b> de <b>”{show_name}”.</b>
<b>? Biblioteca:</b> <i>{library_name}.</i>
<b>? Número de episodios disponibles:</b> <i>{episode_count}</i>
<b>? Género:</b> <i>{genres}.</i>
<b>⏳ Duración por episodio:</b> <i>{duration} minutos.</i>
<b>? Actores:</b> <i>{actors:[:5]}.</i>
<b>? Productora:</b> <i>{studio}.</i>
<b>? Clasificación por edad:</b> <i>{content_rating}.</i>
<b>? Sinopsis:</b> <i>{summary}</i>
<b>? Enlace a "The TV Database":</b> {thetvdb_url} </season>
<show>{added_date} {timestamp}
?❗ <b>NUEVA SERIE</b>❗ <big><b>{show_name}</b> ({year}).</big>
<b>? Biblioteca:</b> <i>{library_name}.</i>
<b>? Primera emisión:</b> <i>{air_date}.</i>
<b>? Número de temporadas disponibles:</b> <i>{season_count}</i>
<b>? Género:</b> <i>{genres}.</i>
<b>⏳ Duración por episodio:</b> <i>{duration} minutos.</i>
<b>? Actores:</b> <i>{actors:[:5]}.</i>
<b>? Productora:</b> <i>{studio}.</i>
<b>? Valoración:</b> <i>{rating}/10.</i>
<b>? Clasificación por edad:</b> <i>{content_rating}.</i>
<b>? Sinopsis:</b> <i>{summary}</i>
<b>? Enlace a "The TV Database":</b> {thetvdb_url} </show>

  • Servidor Caído
xxxxxx Aqui devemos sustituir una dirección a una imagen que queramos ver, en mi caso he subido una a imgur.
Quote:Subject Line

❗ <b>INFORMACION</b>❗

Message Body

{datestamp} {timestamp}
<a href="xxxxxxxxxx>.</a>
El <b>Servidor Plex esta Caído</b>, sentimos las molestias.
<b>Intentaremos solucionarlo lo antes posible. </b>
Mientras tanto salga de casa y tomese una caña, <b>le avisaremos en cuanto este solucionado.</b>
Gracias

  • Servidor en Funcionamiento
Quote:Subject Line

❗ <b>INFORMACION</b>❗

Message Body

{datestamp} {timestamp}

<a href="https://i.imgur.com/vI8P5pB.jpg">.</a>.
El <b>Servidor Plex esta Operativo, sentimos las molestias.</b>
Como puede observar <b>somos muy eficientes con nuestro trabajo </b>para que usted pueda disfrutar de una agradable velada del mejor cine.

<b>Gracias</b>


Nos quedarían las notificaciones por telegram de esta forma:

               


Notificaciones de Reproduccion

        1. En este ejemplo usaremos para que notifique los visitados al Administrador del servidor Plex de tal forma que pueda ver si esta el servidor sufriendo o no y ver que se esta reproduciendo, esto es meramente informativo se puede hacer o no. 
       2. Aqui necesitaremos crear otro agente y añadir datos de otro bot y otro grupo diferente al de nuevos añadidos ya que solo seremos nosotros los Admin los que veremos dicha información. 
       3. Los pasos a seguir son los mismo que antes a diferencia de la pantillas que pondrá acontinuacion.
       
       4. En mi caso he seleccionado solamente estos trigger: 
     

Plantillas
Reproduccion
Quote:
Subject Line

❗ <b>NUEVA REPRODUCCIÓN</b>❗

Message Body

<movie>{datestamp} {timestamp}

<b>{user}</b> ha iniciado la reproducción de <b>”{title}”.</b>

<b>? Dispositivo:</b> <i>{player}.</i>
<b>? Sistema operativo:</b> <i>{platform}.</i>
<b>? Reproductor:</b> <i>{product}.</i>
<b>? Tipo de transcodificación:</b> <i>{transcode_decision}.</i>
<b>? Resolución de la reproducción:</b> <i>{stream_video_resolution}.</i>
<b>? Calidad de la reproducción:</b> <i>{quality_profile}.</i>
<b>? Bitrate:</b> <i>{bitrate} kbps.</i>
<b>⏳ Tiempo restante de reproducción:</b> <i>{remaining_duration} minutos.</i>
</movie>

<episode>{datestamp} {timestamp}

<b>{user}</b> ha iniciado la reproducción del <b>”Episodio {episode_num} -
{episode_name}”</b> de la <i>temporada {season_num}</i> de <b>{show_name}.</b>

<b>? Dispositivo:</b> <i>{player}.</i>
<b>? Sistema operativo:</b> <i>{platform}.</i>
<b>? Reproductor:</b> <i>{product}.</i>
<b>? Tipo de transcodificación:</b> <i>{transcode_decision}.</i>
<b>? Resolución de la reproducción:</b> <i>{stream_video_resolution}.</i>
<b>? Calidad de la reproducción:</b> <i>{quality_profile}.</i>
<b>? Bitrate:</b> <i>{bitrate} kbps.</i>
<b>⏳ Tiempo restante de reproducción:</b> <i>{remaining_duration} minutos.</i>
</episode>

Reproduccion detenida
Quote:Subject Line
❗ <b>REPRODUCCIÓN FINALIZADA</b>❗

Message Body
<movie>{datestamp} {timestamp}


<b>{user}</b> ha finalizado la reproducción de <b>"{title}".</b>

<b>⏳ Tiempo restante de reproducción:</b> <i>{remaining_duration} minutos.</i>
</movie>

<episode>{datestamp} {timestamp}

<b>{user}</b> ha finalizado la reproducción del <b>"Episodio {episode_num} - {episode_name}"</b> de la <i>temporada {season_num}</i> de <b>{show_name}.</ b>

<b>⏳ Tiempo restante de reproducción:</b> <i>{remaining_duration} minutos.</i>
</episode>

Reproduccion pausada
Quote:Subject Line
❗ <b>REPRODUCCIÓN PAUSADA</b>❗

Message Body

<movie>{datestamp} {timestamp}

<b>{user}</b> ha parado la reproducción de <b>"{title}".</b>

<b>⏳ Tiempo restante de reproducción:</b> <i>{remaining_duration} minutos.</i>
</movie>

<episode>{datestamp} {timestamp}

<b>{user}</b> ha parado la reproducción del <b>"Episodio {episode_num} - {episode_name}"</b> de la <i>temporada {season_num}</i> de <b>{show_name}.</b>

<b>⏳ Tiempo restante de reproducción:</b> <i>{remaining_duration} minutos.</i>
</episode>

Inicia de nuevo de la reproducción
Quote:Subject Line
❗ <b>RESUMEN DE REPRODUCCIÓN</b>❗

Message Body
<movie>{datestamp} {timestamp}

<b>{user}</b> continúa la reproducción de <b>”{title}”.</b>

<b>? Dispositivo:</b> <i>{player}.</i>
<b>? Sistema operativo:</b> <i>{platform}.</i>
<b>? Reproductor:</b> <i>{product}.</i>
<b>? Tipo de transcodificación:</b> <i>{transcode_decision}.</i>
<b>? Resolución de la reproducción:</b> <i>{stream_video_resolution}.</i>
<b>? Calidad de la reproducción:</b> <i>{quality_profile}.</i>
<b>? Bitrate:</b> <i>{bitrate} kbps.</i>
<b>⏳ Tiempo restante de reproducción:</b> <i>{remaining_duration} minutos.</i>
</movie>

<episode>{datestamp} {timestamp}



Attached Files Thumbnail(s)
                       
                   


  Backrest copia seguridad dockers
Posted by: yeraycito - 10-08-2025, 10:06 PM - Forum: VMs & Docker Containers - No Replies

Desde hace ya bastante tiempo está de moda instalar aplicaciones a través de Docker con todas las ventajas que eso implica y que no son necesarias explicarlas. En todos los programas y los dockers no son una excepción, es muy recomendable hacer copias de seguridad de sus configuraciones para que en caso de que exista algún problema al restaurarlas todo vuelva a la normalidad. Aunque muchos dockers funcionan sin necesidad de hacerlo en este apartado del foro relativo a dockers siempre se explica que es muy recomendable crear carpetas persistentes Dockerdata para que esas configuraciones de los dockers sean accesibles y se pueda hacer copia de seguridad de ellas.

A la hora de hacer copias de seguridad de las carpetas persistentes de los dockers no hay mucho donde escoger y de lo poco que hay puede que no convenga del todo según los casos...... algunos sistemas automatizados necesitan mapear por partes los dockers y otros, por el contrario, lo hacen al completo sin ninguna discriminación lo cual es un problema gordo si, por ejemplo, se tiene mapeado un volumen de Plex con 2 TB de películas sin olvidar que mayórmente los sistemas actuales de copia de seguridad de dockers funcionan a través de scripts o consola.

En este post voy a tratar de explicar como instalar y configurar un docker llamado Backrest que tiene interfaz gráfica, permite copias de seguridad de los dockers de forma programada a voluntad, restauración de esas copias si fuera necesario, notificaciones a través de distintos servicios, etc, etc.

El compose para su instalación a través de Container Station o Portainer es el siguiente:


services:
    backrest:
        image: garethgeorge/backrest:latest
        container_name: backrest
        volumes:
           - /path/to/backrest/data:/data
           - /path/to/backrest/config:/config
           - /path/to/backrest/cache:/cache
           - /path/to/backrest/tmp:/tmp
           - /path/to/backup/data:/userdata
           - /path/to/local/repos:/repos
           - /var/run/docker.sock:/var/run/docker.sock:ro
       environment:
           - BACKREST_DATA=/data
           - BACKREST_CONFIG=/config/config.json
           - XDG_CACHE_HOME=/cache
           - TMPDIR=/tmp
           - TZ=Europe/Madrid
       ports:
           - 9898:9898
       restart: always


A tener en cuenta:

 - Los directorios /path/to/backrest hacen referencia a los directorios de la configuración de Backrest que hay que adecuarlos a las carpetas compartidas del nas.

 - El directorio /path/to/backup hace referencia a la carpeta compartida del nas Dockerdata en la que se guardan las configuraciones de los dockers que tengamos. Si 
   esas configuraciones están por separado en otros directorios podemos mapear la carpeta compartida superior.

 - El directorio /path/to/local/repos hace referencia a la carpeta compartida principal del nas en la que queramos guardar las copias de seguridad de Backrest. Esa 
   carpeta puede ser del propio nas o de otro dispositivo de la red local que tengamos mapeado.

Adicionálmente a través de la interfaz de Backrest podemos configurar distintos servicios en la nube como destinos de esas copias de seguridad:

 - Backblaze B2: b2:bucket or b2:bucket/prefix

- AWS S3: s3:bucket or s3:bucket/prefix

- Google Cloud: gs:bucket:/ or gs:bucket:/prefix

- SFTP: sftp:user@host:/path/to/repo

- Rclone: rclone:remote:path (requires rclone installation)


Instalado el compose de Backrest en el nas accedemos a su interfaz mediante el navegador a través de    http://iplocaldelnas:9898

Por defecto Backrest no requiere de usuario - contraseña para acceder a su interfaz así que al hacerlo nos propone su creación voluntaria:



   



El funcionamiento principal de Backrest se basa en dos premisas:

 - Creación de lo que denominan Repos que consisten en las carpetas donde se guardarán las copias de seguridad de los dockers de Backrest

 - Creación de Planes de copia de seguridad.

Estas dos configuraciones las podemos hacer por separado para cada docker que nos interese hacer copia de seguridad. Para este tutorial paso a explicar a continuación como realizar esos procesos con un único docker.

Lo primero que tenemos que hacer a través de la interfaz de Backrest es añadir un nuevo Repo



   



 - Le ponemos el nombre que nos apetezca

 - En el compose de instalación asignamos la ruta del nas para guardar los repos /path/to/local/repos:/repos así que se la indicamos también ( esa carpeta repos nos       aparece en un desplegable clickando en el apartado correspondiente ) añadiendo la carpeta en la que queramos se guarde la copia de seguridad de ese docker en     concreto, en este caso queda así:    /repos/Homarr

 - Las copias de seguridad que se generen están encriptadas de ahí que se nos pida una contraseña.

 - Los apartados con flechas verdes Prune Policy - Check Policy se pueden dejar tal cual sabiendo que han referencia a esto:

          Política de limpieza: Programación para la limpieza de datos sin referencias

          Política de comprobación: Programación para la verificación de la integridad de las copias de seguridad

A tener en cuenta: En el apartado Repository URL podemos configurar si queremos los servicios en la nube como destino de las copias de seguridad anteriórmente citados.

Configurado todo guardamos los cambios.


Puesto en funcionamiento nuestro primer Repo pasamos a la segunda parte consistente en añadir un Plan asociado a ese Repo creado:



   



 - Le ponemos el nombre que nos apetezca.

 - Seleccionamos el Repo creado anteriórmente.

 - Similar al caso anterior, en el compose pusimos la ruta donde tenemos guardadas las configuraciones de los dockers que tengamos con el parámetro
    /path/to/backup/data:/userdata así que clickando en el apartado Patch de la interfaz nos aparecerá entre otras la carpeta userdata y dentro de ella, en 
    este caso, la carpeta de configuración de Homarr.

 - En los apartados marcados con flechas verdes podemos configurar a nuestro gusto cuando se hacen las copias de seguridad y el tiempo de retención.


 El apartado marcado con flecha azul ( Hooks ) merece una atención especial:



   



Como se puede ver tenemos varias opciones para elegir, de todas ellas escogemos Command



   



 - CONDITION_SNAPSHOT_START nos aparece si clickamos en un desplegable y hace referencia al inicio de la copia de seguridad

 - docker stop homarr lo escribimos a mano y da la orden de detener el contenedor Homarr ANTES de hacer la copia de seguridad

 - ON_ERROR_FATAL también aparece en un desplegable y obliga a detener la copia si ocurre un error grave.


En el sitio donde estamos añadimos un segundo Hook junto al anterior:



   



 - CONDITION_SNAPSHOT_END hacer referencia a la finalización de la copia de seguridad por parte de Backrest de ese contenedor Homarr

 - docker start homarr arranca el contenedor después de finalizada la copia

 - ON_ERROR_FATAL impide lo anterior si hay un error grave


Con esto configurado ya tendríamos lista la copia de seguridad automatizada del contenedor, en este caso, Homarr, si opcionálmente quisiéramos que Backrest nos notificara el inicio - finalización de la copia de seguridad, por ejemplo, a través de un bot de Telegram añadimos un tercer Hook junto a los anteriores.



   



 - Las dos condiciones que se ven son las mismas de antes y hacen referencia al inicio - finalización de la copia de seguridad

 - Las notificaciones anteriores mediante un bot de Telegram a través de Shoutrrr tienen que estar configuradas en el siguiente formato:

telegram://XXXXX@telegram?chats=YYYYYYYYYY

Las XXXX se corresponden al token del bot

Las YYYYYYY se corresponden al Chat ID



Configurado todo guardamos los cambios. De esta forma ya tenemos configurada en Backrest las copias de seguridad de un docker en concreto, lo siguiente sería repetir los mismos procesos anteriores adecuándolos a los demás dockers de los que queramos hacer copia de seguridad automatizada.

En este punto primigenio la interfaz de Backrest queda así:



   



Os pongo una imagen que no es mia para que veais como queda un sistema completo ya configurado:



   



Backrest no sólo permite hacer copias de seguridad de los dockers sino que también permite su fácil restauración ( las siguientes imágenes tampoco son mias ):



   



Proceso de restauración:



   



Hasta aquí lo principal, sin embargo Backrest permite múltiples configuraciones a través de condiciones, variables, etc que por su extensión no voy a explicar. En su lugar os dejo un enlace a la documentación del programa:


https://garethgeorge.github.io/backrest/...ng-started


  Virtualizacion station
Posted by: Ruben Rojas - 10-08-2025, 01:18 AM - Forum: VMs & Docker Containers - No Replies

Hola amigos
Tengo un TS-264 e instalé virtualizacion station y , se instala pero cuando intento acceder, queda en CARGANDO todo el tiempo y no arranca
Ayuda por favor
Gracias


  Error disco inactivo
Posted by: JoseRic - 07-08-2025, 09:36 PM - Forum: Cuestiones técnicas - Replies (5)

Hola, tengo un TS-230 con dos discos y me ha aparecido el error en uno de ellos que dice disco inactivo, ¿Es posible que el disco se haya estropeado del todo?
No se si se puede tomar alguna acción desde el propio NAS, ¿alguna recomendación?

Muchas gracias por anticipado.

Saludos,

JoseRic


  Docker de Tautulli y su QPKG
Posted by: Ganekogorta - 02-08-2025, 11:29 PM - Forum: VMs & Docker Containers - Replies (1)

Hola

El otro día un usuario de Qnap consultaba si existía una aplicación en QPKG de Tautulli.

Para el que no lo conozca Tautulli es un programa que es capaz de conectarse a nuestra cuenta del servidor Plex y obtener métricas y estadísticas de uso de Plex. Algo que puede ser útil si queremos ver como se usa en nuestra familia nuestra biblioteca de músicas, fotos y películas. 

Se que hay aplicaciones en la web de www.myqnap.org como https://www.myqnap.org/product/tautulli-apache84/ pero aunque parezca gratuita, en realidad se necesita el qpkg requerido por ella https://www.myqnap.org/product/apache84/ que si tiene un coste. 

El problema de estas aplicaciones es que no son actualizadas con frecuencia y la ventaja de este docker es que siempre que es desplegado, se despliega la última imagen disponible.


1-Requisitos
2-Despliegue del docker
3-Instalacion del pqkg


1- Requisitos
Para instalar el docker, los requisitos son sencillos:
-disponer de una cuenta Plex.
-tener instalado y activo Container Station.
-poder acceder por ssh a la nas (Panel de control, red y servicios, telnet/ssh y activar y permitir usuarios recordando el puerto)

2-Despliegue del docker
Abrimos nuestra consola de comandos por ssh.
Un programa que siempre recomiendo es Putty , pero también tenemos qpkg instalables en nuestra Qnap como "Putty HD". Hay muchos mas y la lista sería interminable ya que algunos SO los integran de serie.

Y lanzamos el siguiente comando:
Code:
docker run -d  --name=tautulli --restart=unless-stopped -v /share/DockerData/tuatulli:/config -e PUID=1000 -e PGID=100 -e TZ=Europe/Madrid -p 8181:8181 ghcr.io/tautulli/tautulli

Resumen de parámetros:
- con  "-v share/DockerData/tuatulli:/config" indicamos una la ruta persistente. En este caso uso una carpeta compartida llamada "DockerData", pero podriamos usar la carpeta "Public" y en ese caso escribiriamos "-v share/Public/tuatulli:/config"
- con "-e PUID=1000 -e PGID=100" indicamos el usuario de la nas y su grupo. Al escoger 1000, será el primero creado y 100 es el de todos. Pero si queremos usar uno distinto obtendremos los valores ejecutando el comando de consola "id usuario_deseado"
- con "-e TZ=Europe/Madrid" indicamos nuestra zona horaria
- con "-p 8181:8181" indicamos el puerto http por el que accederemos. Si queremos otro como el 7777, entonces pondremos "-p 7777:8181"

Una vez desplegado el docker, sólo hemos de ir a la web "http://ip_nas:8181" y veremos la web con el asistente inicial.
   

3- Instalación del QPKG
Digamos que parece ser lo mas cómodo pero sigue siendo obligado tener instalado y funcionando a Container Station.

El enlace de descarga del QPKG es el siguiente ubicado en Mega tautulli.qpkg

La instalación es sencilla, como en cualquier qpkg. 

   

   

   

Con la salvedad de que al no ser un paquete firmado os lanza un aviso de ello y debéis aceptarlo.
   

   

   

   

Y ya tendremos el icono de la aplicación en el appCenter

   

En realidad este qpkg hace alguna función mas ya que nos permite variar su ubicación (carpeta persistente), el puerto donde es accesible, la TZ, ... y unos pocos parámetros mas.

En su primer inicio se instala en la carpeta "tautulli" dentro de la carpeta compartida "Public".
Si quisiésemos hacer algún cambio de parámetros, debemos:
 -detener la app desde el "app Center"
 -editar el archivo oculto ".env_tautulli" ubicado en "Public/tautulli"
 - guardar los cambios
 - iniciar el qpkg desde el appCenter

Es muy importante respetar el orden de las líneas, sus saltos y no alterar su orden.
Si por lo que sea sale mal o no sabemos como estaba, podemos eliminar el archivo, que el docker al iniciarse volvería a crear el de defecto.
El archivo .env_tautulli contiene el siguiente contenido por defecto:
Code:
PUERTO=8181
CONFIG=/share/Public/tuatulli
PUID=1000
PGID=100
TZ=Europe/Madrid
LOG=TRUE


Si alteramos la ruta del parámetro CONFIG, el docker será movido de ubicación.
Así que antes de hacerlo es conveniente asegurarse que lo hacemos correctamente.
Por ejemplo podríamos enviarlo /share/CarpetaCompartida/tautulli


Una vez desplegado el docker, sólo hemos de ir a la web "http://ip_nas:8181" (o el puerto que hayamos elegido) y veremos la web con el asistente inicial.


Sobre el uso poco voy a contar ya que es sencillo de configurar y usar.
Podéis echar una ojeada aquí https://tautulli.com/#features


  Problemas con conexion SSH
Posted by: Dorkf - 01-08-2025, 08:24 PM - Forum: Cuestiones técnicas - Replies (10)

Hola, buenas  
No puedo conectarme con winscp al qnap por protocolo SSH.
Estoy en una red local, he habilitado el servicio, pero cuando voy a conectarme meda error.
¿Alguien tiene alguna idea de como hacerlo?
La ip del servidor es la misma que con la que entro al QTS panel de control, no?
He dado acceso un usuario administardor.
No se que hacer.


  Usar NAS "vieja" para backup
Posted by: freak128 - 27-07-2025, 05:10 PM - Forum: Empezando con tu NAS - Replies (4)

Hola, soy nuevo en el foro y me he unido porque tengo una duda sobre backup. Comentar que uso NAS desde hace años en un entorno doméstico para tener en red todas mis fotos, vídeos y música que reproduzco desde un reproductor Bluray Oppo y, evidentemente, también guardo archivos que consumo des de los distintos PCs de casa.

Hace unos años me compré una TS-431P en la que monté 4 discos en RAID5 y usaba las snapshots internas y de vez en cuando copiaba los datos a un disco externo manualmente. Por desgracia se me ha estropeado la bahía del 4 disco (confirmado por el SAT de QNAP) por lo que no he perdido datos pero estoy en jaque. Por eso he decidido comprarme una NAS nueva pero por motivos económicos he "bajado" a un modelo de dos bahías en el que haré un RAID1, concretamente una TS-262-4G. Cuando me llegue pasaré todos los datos a la nueva NAS que usaré de producción y estaba pensando en usar la vieja de backup. Antes volvería a incializar los discos de la TS-431P para montar un RAID0 y así tener espacio de sobras para las copias. 

Después de este rollo de introducción planteo mi pregunta. Qué método usaríais vosotros para hacer el backup de la TS-262 a la TS-431? Por un lado entiendo que lo mejor es usar alguna aplicación de QNAP o de terceros instalada en la TS-262, verdad? O sería mejor instalarla en el destino y que sea la TS-431 la que gestione las copias? Cual sería la mejor conectividad para el backup? Las conecto las dos por ethernet o las conecto por USB? Ahora tengo el router de Vodafone que tiene 4 puertos ethernet y los tengo todos ocupados. Podría poner un switch externo y así tener suficientes puertos, pero si el backup por USB me puede ir mejor entonces me lo ahorraría. Por otro lado no sé si el hecho de tener la NAS de backup sin red puede ser más seguro para evitar infecciones de virus...
Vamos que tengo unas cuantas dudas y no tengo claro por donde tirar.

Gracias!


  Docker ConvertX para convertir archivos
Posted by: yeraycito - 26-07-2025, 09:30 PM - Forum: VMs & Docker Containers - No Replies

Los desarrolladores de este docker no se han calentado mucho la cabeza para ponerle un nombre, en fin, un docker estilo caja de herramientas que sirve tanto para un roto como para un descosido, es decir, convertir entre formatos de una buena cantidad de tipos de archivos que son los siguientes:



   



El compose para su instalación a través de Container Station o Portainer es el siguiente:


services:
    convertx:
        image: ghcr.io/c4illin/convertx:latest
        container_name: convertx
        restart: unless-stopped
        ports:
            - 3522:3000
        environment:
             - JWT_SECRET=WpDPBLWrsdRyhQBRDzyDbcsTsVVhmWRviBQFwBRZipSyzXcfoxAxEPUUsliyLzfz
             - ACCOUNT_REGISTRATION=false
             - ALLOW_UNAUTHENTICATED=true
             - HTTP_ALLOWED=true
             - AUTO_DELETE_EVERY_N_HOURS=1
        volumes:
            - /your/local/path/to/data:/app/data


A tener en cuenta:

 - El compose anterior está configurado para NO utilizar usuario - contraseña para acceder a su interfaz, si queremos añadir esa capa de seguridad modificaremos los 
    dos siguientes valores dejándolos así:

               - ACCOUNT_REGISTRATION=true

               - ALLOW_UNAUTHENTICATED=false

 - El valor AUTO_DELETE_EVERY_N_HOURS hace referencia a las horas en las que el docker eliminará los archivos que le pongamos, un valor de 0 desactiva este 
    ajuste.

 - El valor /your/local/path/to lo deberemos modificar adecuándolo a la ruta del nas de la carpeta compartida en la que queramos que se guarde la configuración del 
   docker.


Instalado ConvertX accederemos a su interfaz mediante un navegador en     http://iplocaldelnas:3522



   



Lo siguiente es subir un archivo y clickar en Search for conversions



   



ConvertX ya ha detectado que tipo de archivo le hemos subido y nos propone formatos de archivo para convertir así que sólo tenemos que escoger uno de ellos.



   



Hecha la conversión muy rápidamente se nos ofrece el nuevo archivo convertido para poder descargarlo.



   



Poco más que añadir, como curiosidad diré que la gran cantidad de tipos de archivos que admite ConvertX hace que la imagen del docker sea bastante grande, en concreto 2.6 gigas.