data backup cleanup

This commit is contained in:
2026-01-11 03:20:35 +01:00
parent 9b1a819cd1
commit 4e5914eb1e
14 changed files with 72 additions and 2 deletions

View File

@@ -23,9 +23,21 @@ RUN apk add --no-cache \
# Set environment variable for Puppeteer to find Chromium
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
RUN npm install puppeteer
# Install restic and rclone for backups
RUN apk add --no-cache \
restic \
curl \
unzip
# Download and install rclone
RUN curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip \
&& unzip rclone-current-linux-amd64.zip \
&& cd rclone-*-linux-amd64 \
&& cp rclone /usr/local/bin/ \
&& chmod 755 /usr/local/bin/rclone \
&& cd .. && rm -rf rclone-*-linux-amd64*
# Revert back to non-root (default n8n user)
USER node

View File

@@ -15,6 +15,7 @@ services:
- N8N_BLOCK_ENV_ACCESS_IN_NODE=false
- MAM_USERNAME=${N8N_MAM_USERNAME}
- MAM_PASSWORD=${N8N_MAM_PASSWORD}
- RESTIC_PASSWORD=${N8N_RESTIC_PASSWORD}
- NODES_EXCLUDE=[]
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
@@ -25,6 +26,10 @@ services:
- DB_POSTGRESDB_SCHEMA=public
volumes:
- ${SERVICE_PATH}/n8n/data:/home/node/.n8n
- ${SERVICE_PATH}/n8n/data/rclone.conf:/home/node/.config/rclone/rclone.conf
- ${PWD}/scripts:/home/node/.n8n/external-scripts
- ${DB_PATH}/postgres/data/backup:/home/node/.n8n/database
- ${EXTERNAL_STORAGE}/:/home/node/.n8n/data
labels:
# Traefik
- "traefik.enable=true"

View File

@@ -0,0 +1,17 @@
Inspired by the [blog](https://www.ericbette.com/configuring-a-remote-backup-solution-using-restic-and-rclone)
# List of commands:
## Installation
- Install restic and rclone baremetal
## Setting up rclone:
- run: rclone config or follow the instructions on the provider (infomaniak in my case)
- run: rclone listremotes to confirm the server link creation
## Setting up backup repository with restic
- Save password in env variable, by running: echo export RESTIC_PASSWORD=my_password >> ~/.zshrc
- Initialize repository: restic -r rclone:example-remote:example-repo init
- Run the backup: restic -r rclone:example-remote:example-repo --verbose backup /path/to/backup
- List the snapshots: restic -r rclone:example-remote:example-repo snapshots
- Restore the backup: restic -r rclone:example-remote:example-repo restore latest --target /target --path "/target"

View File

@@ -0,0 +1,5 @@
LOG_FILE="/home/node/.n8n/external-scripts/data-backup/logs/log.log"
echo "------------------------------------------------------------------------" >> "$LOG_FILE"
echo "$(date) - Script for calendars-contact started" >> "$LOG_FILE"
restic -r rclone:sb_project_SBI-CW231949:calendars-contacts backup /home/node/.n8n/data/calendars-contacts >> "$LOG_FILE"
restic -r rclone:sb_project_SBI-CW231949:calendars-contacts forget --keep-last 3 --prune >> "$LOG_FILE"

View File

@@ -0,0 +1,5 @@
LOG_FILE="/home/node/.n8n/external-scripts/data-backup/logs/log.log"
echo "------------------------------------------------------------------------" >> "$LOG_FILE"
echo "$(date) - Script for databases started" >> "$LOG_FILE"
restic -r rclone:sb_project_SBI-CW231949:databases backup /home/node/.n8n/database >> "$LOG_FILE"
restic -r rclone:sb_project_SBI-CW231949:databases forget --keep-last 3 --prune >> "$LOG_FILE"

View File

@@ -0,0 +1,6 @@
LOG_FILE="/home/node/.n8n/external-scripts/data-backup/logs/log.log"
echo "------------------------------------------------------------------------" >> "$LOG_FILE"
echo "$(date) - Script for documents started" >> "$LOG_FILE"
restic -r rclone:sb_project_SBI-CW231949:documents backup /home/node/.n8n/data/documents >> "$LOG_FILE"
restic -r rclone:sb_project_SBI-CW231949:documents forget --keep-last 3 --prune >> "$LOG_FILE"

View File

@@ -0,0 +1,5 @@
LOG_FILE="/home/node/.n8n/external-scripts/data-backup/logs/log.log"
echo "------------------------------------------------------------------------" >> "$LOG_FILE"
echo "$(date) - Script for music started" >> "$LOG_FILE"
restic -r rclone:sb_project_SBI-CW231949:music backup /home/node/.n8n/data/media/music >> "$LOG_FILE"
restic -r rclone:sb_project_SBI-CW231949:music forget --keep-last 3 --prune >> "$LOG_FILE"

View File

@@ -0,0 +1,5 @@
LOG_FILE="/home/node/.n8n/external-scripts/data-backup/logs/log.log"
echo "------------------------------------------------------------------------" >> "$LOG_FILE"
echo "$(date) - Script for notes started" >> "$LOG_FILE"
restic -r rclone:sb_project_SBI-CW231949:notes backup /home/node/.n8n/data/notes >> "$LOG_FILE"
restic -r rclone:sb_project_SBI-CW231949:notes forget --keep-last 3 --prune >> "$LOG_FILE"

View File

@@ -0,0 +1,5 @@
LOG_FILE="/home/node/.n8n/external-scripts/data-backup/logs/log.log"
echo "------------------------------------------------------------------------" >> "$LOG_FILE"
echo "$(date) - Script for passwords started" >> "$LOG_FILE"
restic -r rclone:sb_project_SBI-CW231949:passwords backup /home/node/.n8n/data/passwords >> "$LOG_FILE"
restic -r rclone:sb_project_SBI-CW231949:passwords forget --keep-last 3 --prune >> "$LOG_FILE"

View File

@@ -0,0 +1,5 @@
LOG_FILE="/home/node/.n8n/external-scripts/data-backup/logs/log.log"
echo "------------------------------------------------------------------------" >> "$LOG_FILE"
echo "$(date) - Script for pictures started" >> "$LOG_FILE"
restic -r rclone:sb_project_SBI-CW231949:pictures backup /home/node/.n8n/data/media/pictures >> "$LOG_FILE"
restic -r rclone:sb_project_SBI-CW231949:pictures forget --keep-last 3 --prune >> "$LOG_FILE"