En mi travesía de pasar a ser un usuarios mas de PROXMOX, me tocó realizar un backup de todos los servicios que tenia corriendo en mi PC Linux para posterior restaurar en un contenedor LXC (docker) de proxmox. Uno de estos servicios era Nextcloud que tenia corriendo bajo docker y hoy les quiero compartir.

Backup

1.- Realizar backup de la BD

Ubicamos la imagen de la BD docker y ejecutamos el siguiente comando:

docker exec my-mysql-bd-nextcloud sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /path-backup/backup-nextcloud.sql
  • docker exec:
    • docker exec se utiliza para ejecutar un comando en un contenedor Docker que ya está en ejecución.
    • my-mysql-bd-nextcloud es el nombre del contenedor en el que deseas ejecutar el comando. Este contenedor debe estar corriendo.
  • sh -c: Aquí se utiliza el shell (sh) para ejecutar el comando mysqldump dentro del contenedor. La opción -c indica que el siguiente argumento es un comando completo que debe ejecutarse.
  • /path-backup/backup-nextcloud.sql: Este es el archivo en el sistema de archivos del host donde se guardará la copia de seguridad de las bases de datos. Aquí, debes reemplazar /path-backup/ con la ruta en tu sistema donde quieras almacenar el archivo backup-nextcloud.sql

2.- Realizar backup del sistema de archivos

tar -czpvf backup.tar.gz nextcloud/
  • -c: Crea un nuevo archivo tar.
  • -z: Comprime usando gzip.
  • -p: Preserva los permisos.
  • -v: Muestra detalles de los archivos que se están empaquetando.
  • -f: Especifica el nombre del archivo de salida (backup.tar.gz).

Guardamos estos 2 backups en un lugar seguro y estamos listos para realizar un restore.

Restore

1.- Restore de la BD

Copiamos nuestro backup-nextcloud.sql al host nuevo en el path donde tenemos nuestro docker-compose.yaml

Debemos modificar nuestro docker-compose.yaml para indicar al servicio de BD que emplee nuestro backup-nextcloud.sql al iniciar por primera vez .

db:
    image: mysql:8.0
    volumes:
      - db_data:/var/lib/mysql
      - ./nextcloud-backup.sql:/docker-entrypoint-initdb.d/nextcloud-backup.sql

2.- Restore del sistema de archivos

Copiamos nuestro backup.tar.gz al host nuevo en el path donde tenemos nuestro docker-compose.yaml y procedemos a descomprimir:

tar -xzpvf backup.tar.gz

-x: Extrae los archivos del archivo comprimido.

3.- Ejecutar nuestro docker compose

docker compose up -d

Ejemplo de docker compose nextcloud

services:
  db:
    image: mysql:8.0
    volumes:
      - db_data:/var/lib/mysql
      - ./nextcloud-backup.sql:/docker-entrypoint-initdb.d/nextcloud-backup.sql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: admin
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: admin

  redis-nextcloud:
    image: redis:alpine
    restart: always

  app:
    image: nextcloud:26.0.1
    ports:
      - "80:80"
    volumes:
      - ./nextcloud:/var/www/html
    restart: always
    links:
      - db
    depends_on:
      - redis-nextcloud
    environment:
      MYSQL_HOST: db
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: admin
      REDIS_HOST: redis-nextcloud
      #NEXTCLOUD_TRUSTED_DOMAINS: midominio.com
      #TRUSTED_PROXIES: proxy ejm ip nginx-proxy
      #APACHE_DISABLE_REWRITE_IP: 1 #si se tiene un proxy nginx

volumes:
  db_data:

Espero les sea de utilidad esta guia, saludos.

Entradas relacionadas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *