Come eseguire backup di mailcow con docker-borgmatic salvando i dati direttamente su NAS

Cerca

In questo scenario vogliamo eseguire il backup di un mail server basato su mailcow-dockerized, un mail server diffuso specialmente per la sua semplicità di installazione e configurazione. Attraverso questa guida vedremo come utilizzare Borgbackup unitamente a Borgmatic per per eseguire il backup dei dati di mailcow direttamente in una shared folder del nostro NAS.

Installazione di docker-borgmatic

Il primo passo fondamentale è ottenere l’immagine di docker-borgmatic ed istanziarne un container. Nei punti seguenti si ipotizza che il percorso di mailcow-dockerized sia quello di default. Per creare il primo file necessario docker-compose.override.yml seguiamo quindi questi passaggi:

				
					cd /opt/mailcow-dockerized
vi docker-compose.override.yml
				
			
Incolliamo il seguente contenuto personalizzando il percorso di mount della propria cartella del NAS (/mnt/nas-folder in questo esempio) e la variabile d’ambiente BORG_PASSPHRASE
				
					version: '2.1'
services:
  borgmatic-mailcow:
    image: ghcr.io/borgmatic-collective/borgmatic
    hostname: mailcow
    restart: always
    dns: ${IPV4_NETWORK:-172.22.1}.254
    volumes:
      - vmail-vol-1:/mnt/source/vmail:ro
      - crypt-vol-1:/mnt/source/crypt:ro
      - redis-vol-1:/mnt/source/redis:ro
      - rspamd-vol-1:/mnt/source/rspamd:ro
      - postfix-vol-1:/mnt/source/postfix:ro
      - mysql-socket-vol-1:/var/run/mysqld/
      - borg-config-vol-1:/root/.config/borg
      - borg-cache-vol-1:/root/.cache/borg
      - ./data/conf/borgmatic/etc:/etc/borgmatic.d:Z
      - ./data/conf/borgmatic/ssh:/root/.ssh:Z
      
      # Personalizzare con il percorso di mount della cartella del NAS /mnt/nas-folder
      - /mnt/nas-folder:/mnt/source/borgfiles
    environment:
      - TZ=${TZ}
      
      # Personalizzare con una propria passphrase
      - BORG_PASSPHRASE=YouBetterPutSomethingRealGoodHere
    networks:
      mailcow-network:
        aliases:
          - borgmatic
volumes:
  borg-cache-vol-1:
  borg-config-vol-1:
				
			

Creiamo ora il file di configurazione di borgmatic. Seguiamo questi passaggi per crearlo automaticamente (minimizzando così il rischio di errore). Carichiamo il file mailcow.conf

				
					source mailcow.conf
				
			

E ora generiamo il file di configurazione di borgmatic

				
					cat <<EOF > data/conf/borgmatic/etc/config.yaml
source_directories:
    - /mnt/source/vmail
    - /mnt/source/crypt
    - /mnt/source/redis
    - /mnt/source/rspamd
    - /mnt/source/postfix
repositories:
    - path: ssh://user@rsync.net:22/./mailcow
      label: rsync
exclude_patterns:
    - '/mnt/source/postfix/public/'
    - '/mnt/source/postfix/private/'
    - '/mnt/source/rspamd/rspamd.sock'
keep_hourly: 24
keep_daily: 7
keep_weekly: 4
keep_monthly: 6
mysql_databases:
    - name: ${DBNAME}
      username: ${DBUSER}
      password: ${DBPASS}
      options: --default-character-set=utf8mb4
EOF
				
			

Creiamo ora il file data/conf/borgmatic/etc/crontab.txt

				
					vi data/conf/borgmatic/etc/crontab.txt
				
			

Ed inseriamo al suo interno lo scheduling che vogliamo che il backup segua (in questo esempio lo eseguiamo ogni giorno alle 15:30

				
					30 15 * * * PATH=$PATH:/usr/local/bin /usr/local/bin/borgmatic --stats -v 0 2>&1
				
			

Istanziamento del container docker-borgmatic

Siamo ora pronti per istanziare il container di docker-borgmatic. Lanciamo il seguente comando:

				
					docker compose up -d
				
			

Inizializzazione del repository

Possiamo finalmente inizializzare il repository di Borg. Lanciamo quindi il seguente comando:

				
					docker compose exec borgmatic-mailcow borgmatic init --encryption repokey-blake2
				
			
Il repository verrà inizializzato con la passphrase che abbiamo impostato nella variabile d’ambiente BORG_PASSPHRASE.

Operazioni aggiuntive

Al fine di mantenere il nostro nuovo Borg repository che contiene i dati di backup, possiamo fare riferimento a una serie di utili comandi.

Esecuzione manuale del task di backup

Nei passaggi precedenti abbiamo impostato una crontab affinché il backup avvenga automaticamente, ma è comunque possibile eseguire manualmente il task di backup lanciando il seguente comando:

				
					docker compose exec borgmatic-mailcow borgmatic -v 2
				
			
Elenco dei backup contenuti nel repository

Nei passaggi precedenti abbiamo impostato una crontab affinché il backup avvenga automaticamente, ma è comunque possibile eseguire manualmente il task di backup lanciando il seguente comando:

				
					docker compose exec borgmatic-mailcow borgmatic list
				
			

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

Most Recent

Come aggiornare mailcow

In questo scenario viene illustrato come eseguire l’aggiornamento di un’istanza di mailcow dockerized utilizzando i tools in esso integrati. Aggiornamento automatico Nella directory di mailcow-dockerized

Partners