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 installare Borg su Synology NAS

Installare Borg su Synology NAS è cosa molto semplice da realizzare in quanto è possibile farlo mediante il package rilasciato da SynoCommunity. Vediamo in questa

Come ottenere l’URL corrente in Jinja2

Stiamo sviluppando una applicazione con Flask che usa Jinja2 come template engine. All’interno del template html che stiamo sviluppando abbiamo bisogno di ottenere l’URL corrente

Partners