| Welcome, Guest |
You have to register before you can post on our site.
|
| Online Users |
There are currently 122 online users. » 1 Member(s) | 117 Guest(s) Bing, Facebook, Google, Twitter, Gwaihir
|
| Latest Threads |
Consulta RAM
Forum: Cuestiones técnicas
Last Post: Gwaihir
8 minutes ago
» Replies: 0
» Views: 2
|
Trasladando docker de Jop...
Forum: VMs & Docker Containers
Last Post: Ganekogorta
05-04-2026, 01:07 PM
» Replies: 0
» Views: 43
|
Traslado de un docker Ngi...
Forum: VMs & Docker Containers
Last Post: Ganekogorta
29-03-2026, 10:53 PM
» Replies: 0
» Views: 117
|
Optimizar DB de QuMagie (...
Forum: Cuestiones técnicas
Last Post: Inkisidor2
25-03-2026, 05:33 PM
» Replies: 1
» Views: 278
|
Servidor de libros con Bo...
Forum: VMs & Docker Containers
Last Post: Ganekogorta
23-03-2026, 07:57 AM
» Replies: 7
» Views: 2.637
|
Received control message:...
Forum: Cuestiones técnicas
Last Post: dcmedecom
18-03-2026, 01:30 PM
» Replies: 3
» Views: 349
|
buenos dias
Forum: Presentaciones
Last Post: Ganekogorta
18-03-2026, 07:48 AM
» Replies: 1
» Views: 211
|
Limitar samba
Forum: Networking
Last Post: Ganekogorta
15-03-2026, 10:30 AM
» Replies: 1
» Views: 851
|
Fichero de Configuración ...
Forum: Cuestiones técnicas
Last Post: Ganekogorta
10-03-2026, 07:46 AM
» Replies: 1
» Views: 230
|
Jellyfin mfa
Forum: Firmware, Aplicaciones y Tutoriales
Last Post: George0505
25-02-2026, 01:28 PM
» Replies: 2
» Views: 429
|
|
|
| BORRADO CARPETA |
|
Posted by: antardi - 01-12-2021, 11:36 PM - Forum: Cuestiones técnicas
- Replies (1)
|
 |
Señores buenas tardes hoy en qnap TVS-463 con 4 bahías e borrado una carpeta compartida que apuntaba a la carpeta multimedia, la cuestión es que me a desaparecido todo lo que había en ella, no tengo copia ni instantáneas, ¿alguien me puede ayudar para intentar recuperarla?
|
|
|
|
| Mover de NAS un docker de NextCloud + MariaDB |
|
Posted by: Ganekogorta - 01-12-2021, 10:00 PM - Forum: Firmware, Aplicaciones y Tutoriales
- No Replies
|
 |
Hola
Vamos a ver como hacer copias de seguridad de la combinación de los contenedores NextCloud y su base de datos MariaDB.
Y que luego podremos restaurar o mover a otra nas.
En ambos caso tenemos definidas rutas persistentes, que es lo habitual para hacer copia de seguridad de estas carpetas.
Así en caso de desastre, sólo hemos de recuperar estas carpetas y reinstalar el contenedor para que encuentra la cfg y datos anteriores.
Pero en este caso la cosa se complica a que hay una interacción entre NextCloud que guarda/gestiona archivos y la base de datos que registra los archivos y operaciones.
Y es que podríamos tener una descoordinación entre ambos contenedores y eso haría que la restauración no funcionase.
Y a colación de esto, salió el tema de trasladarlo a una nas secundaria, es decir, hacer una restauración en otra máquina con alguna particularidad final de adaptación.
Lo que vamos a ver son las dos cosas, hacer copias de seguridad y como restaurarlas en otra nas.
En el caso que pongo estoy suponiendo que las imágenes de los contenedores que usamos son iguales en ambas nas.
Si esto no es así, podríamos tener pequeñas diferencias de definición y funcionamiento entre los contenedores y nos puede ocurrir que no funcionen los datos del contenedor original.
Es decir, si las arquitecturas de los paquetes de contendores no son la misma, es posible que no podamos hacer el traslado
El guion básico es:
- recopilamos las cadenas de comandos de creación de los contenedores iniciales que hicimos en la consola.
- puesta en mantenimiento de NextCloud para que no siga habiendo cambios.
- copia de seguridad de la base de datos de NextCloud del contenedor de la BBDD.
- copia de seguridad de la carpeta persistente de NextCloud.
- creación en la nas destino del contenedor de la base de datos (hemos de hacerlo con la misma versión que el original).
- creación en la nas destino del contenedor de NextCloud (hemos de hacerlo con la misma versión que el original).
- restauramos la copia de seguridad de la base de datos mariaDB de NextCloud en la BBDD de la máquina destino.
- recuperación de los datos persistentes de NextCloud en la nas destino.
- editamos los archivos de configuración de Nextcloud para salir del mantenimiento y para ajustar las direcciones ip permitidas.
Yo voy a explicarlo ahora con NextCloud y con MariaDB. Con MySQL es igual
Trabajamos en la nas origen
1- Recopilamos las cadenas de comandos de creación de los contenedores iniciales que hicimos en la consola.
En nuestro caso las cadenas de creación de los docker iniciales fueron las siguientes:
Para MariaDB
Code: docker run -d -p 3307:3306 --restart always --name="mariadb-server" --network=misdockers -v /share/DockerData/mariadb:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=CLAVEROOT -e MYSQL_USER=nextcloud -e MYSQL_PASSWORD=CLAVE -e MYSQL_DATABASE=nextcloud_db mariadb:10.5.11
En la definición vemos que internamente se usa el puerto 3306 y que externamente es el 3307.
En este caso para simplificar, obligamos en su momento a la versión del contenedor 10.5.11, pero podía haber sido un latest.
Si hubiese sido "latest" estamos obligados a saber que versión se ha instalado. Esto es así, para que la nas destino vaya a tener la misma versión o una compatible a nivel de copia/restauración.
Para NextCloud se usó la siguiente en la que nos evitamos tener que dar datos en el primer inicio
Code: docker run -d -p ip_nas:7080:80 -p ip_nas:7443:443 --restart always --network=misdockers --name="nextcloud-mariadb" --link mariadb-server:mysql -v /share/DockerData/nextcloud-mariadb/html:/var/www/html -v /share/DockerData/nextcloud-mariadb/apps:/var/www/html/custom_apps -v /share/DockerData/nextcloud-mariadb/config:/var/www/html/config -v /share/DockerData/nextcloud-mariadb/data:/var/www/html/data -v /share/DockerData/nextcloud-mariadb/theme:/var/www/html/themes -e MYSQL_HOST=mariadb-server:3306 -e MYSQL_DATABASE=nextcloud_db -e MYSQL_USER=nextcloud -e MYSQL_PASSWORD=CLAVE -e NEXTCLOUD_ADMIN_USER=admin -e NEXTCLOUD_ADMIN_PASSWORD=CLAVEROOT -e NEXTCLOUD_TRUSTED_DOMAINS="ip_nas:7080 ip_nas:7443" nextcloud:22.2.0
En la definición vemos que internamente se usan el puertos 443 y 80 y que externamente son 7443 y 7080 respectivamente.
En este caso para simplificar, obligamos en su momento a la versión del contenedor 22.2.0
De nuevo, si colocamos "latest" en vez de una versión concreta, se colocará la última publicada. Y debemos tenerlo en cuenta en casos de traslado, para repetir la misma o colocar una compatible.
2-puesta en mantenimiento de NextCloud para que no siga habiendo cambios.
Para ello editamos el archivo /share/DockerData/nextcloud/config/config.php
Podemos hacerlo por consola con "vi" o con el mas amigable WinSCP.
Buscamos la línea donde pone 'maintenance' => false, y la cambiamos por 'maintenance' => true,
Si no existe la esa línea debemos añadirla nosotros mismos.
La colocamos por ejemplo debajo de la línea que comienza por 'version' y escribimos
Code: 'maintenance' => true,
Al guardarlo ya está activo ese modo, como podemos comprobar según la imagen siguiente
A partir de ese momento, NextCloud ya no permite el acceso a clientes.
Prefiero tenerlo asó no vaya a ser que un cliente móvil o alguno que no tengamos controlado, nos haga cambios no deseados.
Hay que recordar esto ya que la final de todo debemos salir de este modo si queremos que vuelva a estar operativo.
3-copia de seguridad de la base de datos PotgreSQL de NextCloud del contenedor de la BBDD de la NAS origen
Aquí vamos a hacerlo por consola todo.
primero accedemos a la ruta de la carpeta compartida DockerData que es la persistente donde tenemos las carpetas de los contenedores.
Code: cd /share/DockerData
Es en esta ruta anterior ejecutaremos todos los comandos que siguen, tanto en la de origen como en la destino.
En el destino crearemos la carpeta compartida DockerData si es que no existe.
Para hacer la copia de seguridad de la base de datos, hemos de usar comandos que NO están dentro del contenedor.
Por ello hemos de lanzar un comando desde fuera que acceda al contenido del contenedor.
El comando sería:
Code: /usr/local/mariadb/bin/mysqldump --user=nextcloud --password=CLAVE --lock-tables --host=ip_nas --port=3307 --databases nextcloud_db > nextcloud_db.sql
Al ser un comando externo al contenedor, hemos de acceder a su interior usando el puerto 3307 o el que hayamos definido en la creación del contenedor.
Con esto hemos obtenido el archivo de la copia de nombre nextcloud_db.sql en la carpeta /share/DockerData.
4-copia de seguridad de los datos NextCloud de la NAS origen (la carpeta persistente)
Simplemente vamos a comprimir la carpeta persistente de NextCloud, lo hacemos ejecutando los siguientes comando estando en la carpeta /share/DockerData
Code: docker stop nextcloud-mariadb
tar -zvcf nextcloud.tar.gz nextcloud-mariadb
docker start nextcloud-mariadb
en el segundo comando estamos indicando que se comprime la carpeta "nextcloud-mariadb" . Carpeta que está en /share/DockerData, si es otro nombre lo podemos ver en el comando de creación del contenedor.
Con ello obtenemos el archivo nextcloud.tar.gz y también tenemos el nextcloud_db.sql obtenido en el paso del punto anterior.
Con ello ya tenemos los archivos de datos necesarios para guardar y/o restaurar mas adelante ambos contenedores.
Estos dos archivos hemos de copiarlos a la otra nas.
Podemos hacerlo de varias formas. La mas fácil es usar WinSCP estando conectado a ambas nas y haciendo un copia pega.
Pero si ya nos sentimos cómodos con la consola y podemos hacerlo por comandos:
Code: scp -P 22 /share/DockerData/nextcloud_db.sql user_remoto@ip_nas_remota:/share/DockerData/nextcloud_db.sql
scp -P 22 /share/DockerData/nextcloud.tar.gz user_remoto@ip_nas_remota:/share/DockerData/nextcloud.tar.gz
En este comando anterior lo que hago es copiar por ssh usando el puerto 22 (hemos de cambiarlo si la nas remota usa otro).
Si no ponemos "-P 22" también funciona ya que es el puerto que se toma por defecto.
Al ejecutarlo y ser nuestra primera vez entre nas, nos pedirá la aceptación como de confianza de la otra nas al visionar su huella y luego que escribamos la clave del usuario user_remoto de la nas remota (no se ve al escribirla).
Estos mismos comandos lo podemos hacer desde la nas destino, cambiando los orígenes y destinos
PHP Code: <?php
scp -P 22 user_remoto@ip_nas_remota:/share/DockerData/nextcloud_db.sql /share/DockerData/nextcloud_db.sql
scp -P 22 user_remoto@ip_nas_remota:/share/DockerData/nextcloud.tar.gz /share/DockerData/nextcloud.tar.gz
Trabajamos en la nas destino
Creamos la red de dockers si es que no la tenemos definida.
Daré el mismo nombre que en el original. Si se asigna otro, distinto recordadlo a la hora de crear los nuevos contenedores.
Code: docker network create misdockers
5-creación en la nas destino del contenedor de la base de datos (hemos de hacerlo con la misma versión que el original).
Esto es importante ya que en determinados casos no es posible restaurar la copia en el nuevo docker.
Eso deberemos hacerlo siempre que en la creación del contenedor no obliguemos a una versión y usemos "latest".
Para ver la versión he usado el contenedor Portainer que es un indispensable en nuestros dockers.
Con el puedes ver variables, versiones,...y muchas cosas mas.
Es decir hemos de instalar un docker de MariaDB que lo haga con esa versión o una que sea compatible con los datos exportados anteriormente.
Usamos el comando de creación en la nas destino. Podríamos cambiar el puerto exterior del contendor por ejemplo
Code: docker run -d -p 3307:3306 --restart always --name="mariadb-server" --network=misdockers -v /share/DockerData/mariadb:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=CLAVEROOT -e MYSQL_USER=nextcloud -e MYSQL_PASSWORD=CLAVE -e MYSQL_DATABASE=nextcloud_db mariadb:10.5.11
6-creación en la nas destino del contenedor de NextCloud (hemos de hacerlo con la misma versión que el original).
Ejecutamos la instalación limpia de Nextcloud enlazado con la mariaDB anterior
La cadena quedaría así
Code: docker run -d -p ip_nas:7080:80 -p ip_nas:7443:443 --restart always --network=misdockers --name="nextcloud-mariadb" --link mariadb-server:mysql -v /share/DockerData/nextcloud-mariadb/html:/var/www/html -v /share/DockerData/nextcloud-mariadb/apps:/var/www/html/custom_apps -v /share/DockerData/nextcloud-mariadb/config:/var/www/html/config -v /share/DockerData/nextcloud-mariadb/data:/var/www/html/data -v /share/DockerData/nextcloud-mariadb/theme:/var/www/html/themes -e MYSQL_HOST=mariadb-server:3306 -e MYSQL_DATABASE=nextcloud_db -e MYSQL_USER=nextcloud -e MYSQL_PASSWORD=CLAVE -e NEXTCLOUD_ADMIN_USER=admin -e NEXTCLOUD_ADMIN_PASSWORD=CLAVEROOT -e NEXTCLOUD_TRUSTED_DOMAINS="ip_nas:7080 ip_nas:7443" nextcloud:22.2.0
Los parámetros son los mismos que usamos en nuestro NextCloud de la nas origen. Incluso las direcciones de las rutas persistentes.
Pero ip_nas hemos de cambiarla a la ip local de la nas destino.
Le damos unos instantes a que se termine de configurar internamente y si vamos desde un navegador web a la dirección http://ip_de_la_nas:7080 nos saldrá la web con un NextCloud. Un Nextcloud limpio y si datos, excepto el usuario administrador de NextCloud.
Ahora detenemos el docker de Nextcloud con el comando (o bien usando Portatiner)
Code: docker stop nextcloud-mariadb
7-restauramos la copia de seguridad de la base de datos mariaDB de NextCloud en la BBDD de la máquina destino.
Una vez operativo el docker ya podemos restaurar la base de datos nextcloud_db
Como ya tenemos los archivos de la copia en esa nas en la ruta /share/DockerData, ejecutaremos el comando de restauración
Code: /usr/local/mariadb/bin/mysql --user root --password --host=ip_nas --port=3307 < nextcloud_db.sql
El comando nos pedirá la clave del usuario "root" que según la definición del contenedor es "CLAVEROOT".
No veremos en pantalla la clave al escribirla.
Es un comando que ejecutado desde la consola de la nas, introduce datos en el contenedor vía el puerto externo del mismo, el 3307 y no el 3306 interno.
En este punto ya tenemos la base PostgreSQL con los datos de la otra nas (sólo los relativos a NextCloud)
8-recuperación de los datos persistentes de NextCloud en la nas destino.
Para recuperarlo, detenemos el docker de NextCloud y eliminamos el contenido de la carpeta /share/DockerData de la nas destino.
Code: docker stop nextcloud-postgresql
rm -Rf /share/DockerData/nextcloud-mariadb
Ahora descomprimiremos el archivo nextcloud.tar.gz que nos copiamos desde la otra nas
Code: cd /share/DockerData
tar -xzvf nextcloud.tar.gz
He agregado el primer cd para asegurarme que estamos en la ruta adecuada.
Evidentemente todas las operaciones anteriores han de hacerse con un usuario con privilegios elevados (por ejemplo el denostado admin) para que restaure los archivos con los permisos iniciales.
9-editamos los archivos de configuración de Nextcloud para salir del mantenimiento y para ajustar las direcciones ip permitidas.
Ahora editamos el archivo /share/DockerData/nextcloud-mariadb/config/config.php para poner fuera de mantenimiento el contenedor y para actualizar las ips permitidas. Ya que se supone que la nas destino tienen una ip distinta de la original (si están en redes distintas puede ser que sean coincidentes)
Antes del cambio tendremos en ambas nas
En la origen cambiamos el valor del estado de mantenimiento y en la de destino cambiaremos además los valores de la ip de las direcciones de confianza.
Tras el cambio sería algo similar a
Ahora arrancamos el docker con el comando
Code: docker start nextcloud-mariadb
Y si todo ha ido bien ya podemos tenemos nuestro NextCloud con MariaDB operativo en otra nas.
Recordad que nos quedaría pendiente el eliminar los archivos .tar y tar.gz (los podemos usar de copia de seguridad).
En otro hilo cuento como hacerlo con base de datos PostgreSQL, donde veremos que los pasos serán muy similares.
P.D. si veis cualquier errata o error, comentadlo por privado para corregirlo.
Si vais a hacer pruebas, cambiad las clave de las definiciones y no uséis CLAVE y CLAVEROOT
|
|
|
|
| Carpeta cifrada con contraseña |
|
Posted by: Hojadelata - 01-12-2021, 08:26 PM - Forum: Empezando con tu NAS
- Replies (1)
|
 |
Buenas tardes:
Quiero crear una carpeta protegida con una constraseña, pero me sale una adevertencia al final el proceso que dice lo siguietne:
"Las carpetas compartidas cifradas no son compatibles con las siguientes características: NFS, restaurar archivos y carpetas individuales desde una instantánea de la carperta"
Aunque os parezca una obviedad, ¿qué son las características NFS? ¿A qué se refiere?
Y en segundo lugar, ¿quiere decirse que no es posible hacer instantáneas de una carpeta cifrada porque no se puede restaurar después? No acabo de entender.
Gracias de antemano a quien se digne a contestar.
|
|
|
|
| No puedo subir carpeta a través de enlace |
|
Posted by: rayaca - 01-12-2021, 05:25 PM - Forum: Empezando con tu NAS
- Replies (2)
|
 |
Hola a todos,
A lo mejor es una duda muy tonta, pero por más que miro y busco no veo cómo hacerlo. El tema es que he compartido una carpeta del NAS con un amigo para que acceda desde su casa y me deje una serie de archivos que me tiene que pasar, y que son bastante pesados. El tema es que cuando le da a subir archivos le permite solo seleccionar archivos (uno o varios) pero no puede seleccionar una o varias carpetas. Cuando selecciona una carpeta en el explorador se le abre el contenido, pero no hay forma de poder seleccionar para que se suba la carpeta completa.
¿Hay alguna forma de hacer esto? Por cierto, uso QTS 5.0
Gracias anticipadas.
|
|
|
|
| Problema espacio conjunto de almacenamiento |
|
Posted by: Rigodoncito - 01-12-2021, 03:15 AM - Forum: Cuestiones técnicas
- Replies (4)
|
 |
Buenas.
A ver si alguien puede ayudarme, porque instalé de cero la versión 5 y es la segunda vez que me pasa (la primera tuve que crear el conjunto de almacenamiento de nuevo, y quiero evitar tener que hacerlo de nuevo.
El tema es que el NAS me dice que no hay espacio suficiente. Me marca como espacio sin asignar una gran cantidad (casi 16Tb) cuando no es no es así.
Dejo un enlace a Drive con 6 capturas, a ver si con eso es suficiente para que alguien me ayude.
https://drive.google.com/drive/folders/1...sp=sharing
Comentar que borré las 2 instantáneas que se habían creado y se solucionó el problema (Capturas 1 y 2). En las capturas 3 a 6 pueden ver diferentes datos estando el problema.
Muchas gracias!
|
|
|
|
| WireGuard perfecto pero no conecto a Qnap mediante ip local |
|
Posted by: Eratostenes - 01-12-2021, 12:52 AM - Forum: Cuestiones técnicas
- Replies (3)
|
 |
Buenas a todos;
Hago esta consulta después de pelearme un par de días con esto.
Veamos, tanto con Iphone como con ordenador con Windows 11, he configurado una conexión de WireGuard. Conectan perfectamente y puedo trabajar con un pc con Windows 10 de la oficina; pero ocurre que NO puedo conectar al Qnap que me proporciona la VPN.
Quiero decir; no puedo entrar en él para ver carpetas, ni desde xxxx.myqnapcloud.com, ni desde ip local, ni Qfinder Pro lo detecta, mientras esté la conexión WireGuard Activa.
Desde el PC de la oficina donde estoy conectado por escritorio remoto, si que puedo usar carpetas compartidas, entrar por ip local, Qfinder lo detecta; Vamos lo normal.
Me pasa tanto en el iPhone como el ocho remoto; ¿tengo mal configurado algo en la conexión WireGuard? O ¿es que esto funciona así normalmente?
Gracias
|
|
|
|
| Raid5 degradado |
|
Posted by: mediajucu - 29-11-2021, 01:34 PM - Forum: Cuestiones técnicas
- Replies (8)
|
 |
Hola,
tengo el NAS 873A con un RAID5 con 4 discos,
hace unos días amplié a 5 discos, todo fue bien, pero a partir de las 24 horas, el nuevo disco empezó a mostrar fallos de sectores pendientes, el caso que a los dos días aumentaban los sectores y decidí, cambiarlo temporalmente por otro disco que tenía hasta recibir uno nuevo.
Cuando empezó a regenerar con el nuevo disco (este era ya usado pero funcionaba bien) dio error de disco y se paró.
Ahora el raid5 ya no es accesible y parece que no es recuperable, si sustituyo ese 5º disco por uno nuevo se puede regenerar (estoy esperando un nuevo discos para ponerlo)
¿Tengo que tener algo en consideración?
Tengo copia de los datos, pero las aplicaciones estaban instaladas sobre el raid y de eso no tengo copia, aunque no es tan crítico es más laborioso.
Saludos
|
|
|
|
| Copia y restauración de un Docker |
|
Posted by: Ganekogorta - 28-11-2021, 10:58 AM - Forum: Firmware, Aplicaciones y Tutoriales
- No Replies
|
 |
Hola
Vamos a ver como hacer copias de seguridad de un docker para poder restaurarlo o bien valen para trasladarlo a otra nas (depende de la versión del paquete del docker).
Estamos suponiendo que en la definición del docker tenemos carpetas persistentes que van a una carpeta compartida de la nas.
Como vamos a hacer todas las operaciones en ella, vamos a la consola y nos situamos en la carpeta compartida que contiene las persistentes de nuestros contenedores.
Code: cd /share/DockerData
Para hacer copia de un docker, primero hemos de pararlo para que no haya archivos usándose.
Code: docker stop mi_contenedor
Ahora hacemos una compresión de la carpeta persistente del contenedor (que no tiene porqué coincidir con el nombre del contenedor)
Code: tar -zvcf nombre_contenedor.tar.ga nombre_carpeta_persistente
Con esto se nos generará un archivo comprimido con los datos de la carpeta persistente en la carpeta compartida /share/DockerData
Ese archivo es nuestra copia de seguridad que podemos guardar en otra ubicación segura. Si vamos a ir manteniendo mas de uno, recomiendo poner en el nombre la fecha de la copia.
Ahora arrancaremos de nuevo el contenedor para dejarlo tal cual estaba antes de la copia.
Code: docker start mi_contenedor
Restauración
Ahora vamos a ver los pasos para restaurar el contenedor completo.
Digo completo ya que en los contenedores de base de datos, puede ser que no nos interese hacerlo así.
Me explico, una base de datos puede atender a varios servicios simultaneamente.
Por ejemplo a un NextCloud, a un OwnCloud, a una galería de fotos Coppermine, a un SeaFile, a....
Si restauramos TODO el contenedora de la BBDD, afectamos a todo los servicios que la usan.
Por eso en otro hilo expliqué como hacerlo con una pareja de contenedores relacionados entre ellos, una base de datos PostgreSQL y un NextCloud.
En ese hilo a nivel de base de datos, sólo trabajo con lo que afecta a NextCloud y no a otros servicios que pudiesen estar en la BBDD.
En nuestra caso vamos a restaurarlo completo necesitamos tener el contenedor y su carpeta persistente operativos.
Si fuese el caso de la nas no lo tiene, deberemos crear el contenedor con los mismos parámetros que lo hicimos en su día. Esto se hace para evitar el tema de posibles problemas con los versionados del contenedor que pueden afectar a su estructura.
Lo primero que haremos es ir a la carpeta compartida donde están nuestros datos persistentes (DockerData en el caso del ejemplo)
Code: cd /share/DockerData
ahora detenemos el contenedor
Code: docker stop mi_contenedor
Ahora borramos el contenido de la carpeta persistente de ese contenedor.
No tiene porqué coincidir con el nombre de nuestro contenedor. Lo podemos ver fácilmente en la cadena de definición del contenedor o incluso usando Portatiner para ver la propiedades del contendor que vamos a resturar.
Code: rm -Rf /share/DockerData/nombre_carpeta_persistente
Ahora descomprimimos el archivo de copia de seguridad que hemos dejado previamente en /share/DockerData
Code: tar -xzvf nombre_contenedor.tar.gz
A ahora simplemente arrancamos el contenedor
Code: docker start mi_contenedor
Y con eso ya hemos recuperado y activado el contenedor.
|
|
|
|
| Mover de NAS un docker de NextCloud + PostgreSQL |
|
Posted by: Ganekogorta - 28-11-2021, 01:36 AM - Forum: Firmware, Aplicaciones y Tutoriales
- No Replies
|
 |
Hola
Me plantearon el problema de las copias de seguridad de la combinación de los contenedores NextCloud y el contenedor de su base de datos.
En ambos caso tenemos definidas rutas persistentes, que es lo habitual para hacer copia de seguridad de estas carpetas.
Así en caso de desastre, sólo hemos de recuperar estas carpetas y reinstalar el contenedor para que encuentra la cfg y datos anteriores.
Pero en este caso la cosa se complica a que hay una interacción entre NextCloud que guarda/gestiona archivos y la base de datos que registra los archivos y operaciones.
Ya que podríamos tener una descoordinación entre ambos contenedores y eso haría que la restauración no funcionase.
Y a colación de esto, salió el tema de trasladarlo a una nas secundaria, es decir, hacer una restauración en otra máquina con alguna particularidad final de adaptación.
Lo que vamos a ver son las dos cosas, hacer copias de seguridad y como restaurarlas en otra nas.
En el caso que pongo estoy suponiendo que las imágenes de los contenedores que usamos son iguales en ambas nas.
Si esto no es así, podríamos tener pequeñas diferencias de definición y funcionamiento entre los contenedores y nos puede ocurrir que no funcionen los datos del contenedor original.
Es decir, si las arquitecturas de los paquetes de contendores no son la misma, es posible que no podamos hacer el traslado
El guion básico es:
- recopilamos las cadenas de comandos de creación de los contenedores iniciales que hicimos en la consola.
- puesta en mantenimiento de NextCloud para que no siga habiendo cambios.
- copia de seguridad de la base de datos de NextCloud del contenedor de la BBDD.
- copia de seguridad de la carpeta persistente de NextCloud.
- creación en la nas destino del contenedor de la base de datos (hemos de hacerlo con la misma versión que el original).
- creación en la nas destino del contenedor de NextCloud (hemos de hacerlo con la misma versión que el original).
- restauramos la copia de seguridad de la base de datos de NextCloud en la BBDD de la máquina destino.
- recuperación de los datos persistentes de NextCloud en la nas destino.
- editamos los archivos de configuración de Nextcloud para salir del mantenimiento y para ajustar las direcciones ip permitidas.
Yo voy a explicarlo ahora con NextCloud y PostgreSQL. Con MariaDB/MySQL es muy similar.
Trabajamos en la nas origen
1- Recopilamos las cadenas de comandos de creación de los contenedores iniciales que hicimos en la consola.
En nuestro caso las cadenas de creación de los docker iniciales fueron las siguientes:
Para PostgreSQL
Code: docker run -d --name="postgresql" --restart always --network=misdockers -e POSTGRES_USER=nextcloud -e POSTGRES_PASSWORD=CLAVE -e POSTGRES_DB=nextcloud_db -v /share/DockerData/postgresql:/var/lib/postgresql/data postgres
Para NextCloud se usó la siguiente en la que nos evitamos tener que dar datos en el primer inicio
Code: docker run -d -p ip_de_la_nas:1080:80 -p ip_de_la_nas:1443:443 --restart always --network=misdockers --name="nextcloud-potgresql" -v /share/DockerData/nextcloud/html:/var/www/html -v /share/DockerData/nextcloud/apps:/var/www/html/custom_apps -v /share/DockerData/nextcloud/config:/var/www/html/config -v /share/DockerData/nextcloud/data:/var/www/html/data -v /share/DockerData/nextcloud/theme:/var/www/html/themes -e POSTGRES_HOST=postgresql -e POSTGRES_DB=nextcloud_db -e POSTGRES_USER=nextcloud -e POSTGRES_PASSWORD=CLAVE -e NEXTCLOUD_ADMIN_USER=ADMIN_NEXT -e NEXTCLOUD_ADMIN_PASSWORD=CLAVENEXT -e VIRTUAL_HOST=nextcloud.thebest.com -e LETSENCRYPT_EMAIL=userqnap@thebest.com -e NEXTCLOUD_TRUSTED_DOMAINS="ip_de_la_nas:1080 ip_de_la_nas:1443" nextcloud:latest
2-puesta en mantenimiento de NextCloud para que no siga habiendo cambios.
Para ello editamos el archivo /share/DockerData/nextcloud/config/config.php
Podemos hacerlo por consola con "vi" o con el mas amigable WinSCP.
Buscamos la línea donde pone 'maintenance' => false, y la cambiamos por 'maintenance' => true,
Al guardarlo ya está activo ese modo, como podemos comprobar según la imagen siguiente
A partir de ese momento, NextCloud ya no recibe
Hay que recordar esto ya que la final de todo debemos salir de este modo si queremos que vuelva a estar operativo.
De todas formas también podemos evitar la edición anterior si hacemos una parada del contenedor con
Code: docker stop nextcloud-postgresql
3-copia de seguridad de la base de datos PotgreSQL de NextCloud del contenedor de la BBDD de la NAS origen
Aquí vamos a hacerlo por consola todo. 
Primero accedemos a la ruta de la carpeta compartida DockerData que es la persistente donde tenemos las carpetas de los contenedores.
Code: cd /share/DockerData
Es en esta ruta anterior ejecutaremos todos los comandos que siguen, tanto en la de origen como en la destino.
En el destino crearemos la carpeta compartida DockerData
luego accedemos al interior del contenedor mediante
Code: docker exec -it postgresql /bin/bash
Una vez dentro del contenedor hacemos la copia de la base de datos con el comando
Code: pg_dump -U nextcloud -W -F t nextcloud_db > nextcloud_db.tar
Este comando nos pide la clave de la base de datos. Según la cadena del ejemplo era "CLAVE"
Y nos generará un archivo llamado nextcloud_db.tar que está en el interior del docker.
Para sacarlo y tenerlo en la carpeta compartida escribimos los siguientes comandos
Code: exit
docker cp postgresql:/nextcloud_db.tar ./nextcloud_db.tar
la primera línea es para salir del contenedor y la segunda para copiar el archivo de copia TAR a la carpeta compartida de la nas
4-copia de seguridad de los datos NextCloud de la NAS origen (la carpeta persistente)
Simplemente vamos a comprimir la carpeta persistente de NextCloud, lo hacemos ejecutando los siguientes comando estando en la carpeta /share/DockerData
Code: docker stop nextcloud-postgresql
tar -zvcf nextcloud.tar.gz nextcloud
docker start nextcloud-postgresql
Con ello obtenemos el archivo nextcloud.tar.gz y también tenemos el nextcloud_db.tar. Con ello ya tenemos los archivos necesarios para guardar y/o restaurar mas adelante.
Estos dos archivos hemos de copiarlos a la otra nas.
Podemos hacerlo de varias formas. La mas fácil es usar WinSCP estando conectado a ambas nas y haciendo un copia pega.
Pero si ya nos sentimos cómodos con la consola y podemos hacerlo por comandos:
Code: scp -P 22 /share/DockerData/nextcloud_db.tar user_remoto@ip_nas_remota:/share/DockerData/nextcloud_db.tar
scp -P 22 /share/DockerData/nextcloud.tar.gz user_remoto@ip_nas_remota:/share/DockerData/nextcloud.tar.gz
En este comando anterior lo que hago es copiar por ssh usando el puerto 22 (hemos de cambiarlo si la nas remota usa otro)
Al ejecutarlo y ser nuestra primera vez entre nas, nos pedirá la aceptación como de confianza de la otra nas al visionar su huella y luego que escribamos la clave del usuario user_remoto de la nas remota.
Estos mismos comandos lo podemos hacer desde la nas destino, cambiando los orígenes y destinos
PHP Code: <?php
scp -P 22 user_remoto@ip_nas_remota:/share/DockerData/nextcloud_db.tar /share/DockerData/nextcloud_db.tar
scp -P 22 user_remoto@ip_nas_remota:/share/DockerData/nextcloud.tar.gz /share/DockerData/nextcloud.tar.gz
Trabajamos en la nas destino
Creamos la red de dockers, yo daré el mismo nombre que en el original
Code: docker network create misdockers
5-creación en la nas destino del contenedor de la base de datos (hemos de hacerlo con la misma versión que el original).
Esto es importante ya que en determinados casos no es posible restaurar la copia en el nuevo docker.
Eso deberemos hacerlo siempre que en la creación del contenedor no obliguemos a una versión y usemos "latest".
Por ejemplo en PostgreSQL directamente te da el aviso y no lo realiza.
Para ver la versión he usado el contenedor Portainer que es un indispensable en nuestros dockers.
Con el puedes ver variables, versiones,...y muchas cosas mas.
Ponga una captura de ello donde se ve que es una versión 13, concretamente la 13.1
Es decir hemos de instalar un docker de PostgreSQL que lo haga con esa versión.
Vamos a la web de dockers para ver que parámetro de etiqueta que hemos poner en nuestra cadena de creación.
Vamos a tag y filtramos por 13.1
Aquí vemos que hay dos posibles docker, usaremos el de tag "postgres:13.1"
Con ello lo que tendríamos que hacer es ejecutar en la nas destino el comando siguiente para crear un docker compatible con los datos que tenemos en el backup.
Code: docker run -d --name="postgresql" --network=misdockers --restart always -e POSTGRES_USER=nextcloud -e POSTGRES_PASSWORD=CLAVE -e POSTGRES_DB=nextcloud_db -v /share/DockerData/postgresql:/var/lib/postgresql/data postgres:13.1
6-creación en la nas destino del contenedor de NextCloud (hemos de hacerlo con la misma versión que el original).
Nuevamente hemos de ver que versión tenemos de NextCloud en el docker.
Vamos de nuevo a Portatiner y comprobamos que tenemos la versión 21.0.2
Luego vamos al hub de dockers para ver que tag hemos de usar en la creación del docker.
Con esto la cadena quedaría así
Code: docker run -d -p ip_de_la_nas:1080:80 -p ip_de_la_nas:1443:443 --restart always --network=misdockers --name="nextcloud-potgresql" -v /share/DockerData/nextcloud/html:/var/www/html -v /share/DockerData/nextcloud/apps:/var/www/html/custom_apps -v /share/DockerData/nextcloud/config:/var/www/html/config -v /share/DockerData/nextcloud/data:/var/www/html/data -v /share/DockerData/nextcloud/theme:/var/www/html/themes -e POSTGRES_HOST=postgresql -e POSTGRES_DB=nextcloud_db -e POSTGRES_USER=nextcloud -e POSTGRES_PASSWORD=CLAVE -e NEXTCLOUD_ADMIN_USER=ADMIN_NEXT -e NEXTCLOUD_ADMIN_PASSWORD=CLAVENEXT -e VIRTUAL_HOST=nextcloud.thebest.com -e LETSENCRYPT_EMAIL=userqnap@thebest.com -e NEXTCLOUD_TRUSTED_DOMAINS="ip_de_la_nas:1080 ip_de_la_nas:1443" nextcloud:21.0.2
Los parámetros son los mismos que usamos en nuestro NextCloud de la nas origen. Incluso las direcciones de las rutas persistentes.
Le damos unos momentos y si vamos a la web ip_de_la_nas:1080 nos saldrá la web
Ahora detenemos el docker de Nextcloud con el comando (o bien usando Portatiner)
Code: docker stop nextcloud-postgresql
7-restauramos la copia de seguridad de la base de datos de NextCloud en la BBDD de la máquina destino.
Una vez operativo el docker ya podemos restaurar el contenedor.
Como ya tenemos el archivo de la copia en esa nas en la ruta /share/DockerData, hemos de introducirlo en el docker y borrarlo de la carpeta origen.
Code: docker cp /share/DockerData/nextcloud_db.tar postgresql:/nextcloud_db.tar
rm /share/DockerData/nextcloud_db.tar
ahora nos metemos dentro del docker
Code: docker exec -it postgresql /bin/bash
y ejecutamos el comando de restauración
Code: pg_restore --dbname=nextcloud_db -U nextcloud -W --create nextcloud_db.tar
rm nextcloud_db.tar
exit
En este punto ya tenemos la base PostgreSQL con los datos de la otra nas (sólo los relativos a NextCloud)
8-recuperación de los datos persistentes de NextCloud en la nas destino.
Para recuperarlo, detenemos el docker de NextCloud y eliminamos el contenido de la carpeta /share/DockerData de la nas destino.
Code: docker stop nextcloud-postgresql
rm -Rf /share/DockerData/nextcloud
Ahora descomprimiremos el archivo nextcloud.tar.gz que nos trajimos desde la otra nas
Code: tar -xzvf nextcloud.tar.gz
9-editamos los archivos de configuración de Nextcloud para salir del mantenimiento y para ajustar las direcciones ip permitidas.
Ahora editamos el archivo /share/DaockerData/nextcloud/config/config.php para poner fuera de mantenimiento el contenedor y para actualizar las ips permitidas. Ya que se supone que la nas destino tienen una ip distinta de la original (si están en redes distintas puede ser que sean coincidentes)
Ahora arrancamos el docker con el comando
Code: docker start nextcloud-postgresql
Y si todo ha ido bien ya podemos tenemos nuestro NextCloud operativo en otra nas.
Recordad que nos quedaría pendiente el eliminar los archivos .tar y tar.gz (los podemos usar de copia de seguridad) y tenemos que editar el archivo de cfg del NextCloud de la nas origen y cambiar maintenance true a false, si es que no lo hicimos antes.
En otro hilo se describire como hacerlo si nuestra base de datos es MariaDB/mySQL y veremos que los pasos serán muy similares.
|
|
|
|
|