Comment on Paperless cloud backups https:// samsm.ch/paperless-cloud-backu ps/

<- View Parent
lokalhorst@feddit.org ⁨2⁩ ⁨weeks⁩ ago

I actually use the document_exporter of paperless-ngx. I have a small bash script backup-paperless.sh that runs the paperless-ngx document_exporter and also makes a database dump using pg_dump. It sets up the restic backups logic with daily, weekly and monthly backups. I run that bash script using a systemd service paperless-backup.service. This service is run daily with the timer paperless-backup.timer, randomly at 3 am ±30 minutes. restic is smart, so it does only backup if there are changes. The incremental backups are great, in case the database corrupts without me noticing. I’ll share the scripts in case you are interested in how it works:

backup-paperless.sh

#!/bin/bash
set -euo pipefail

COMPOSE_DIR="/home/user/paperless-ngx/"
DUMP_DIR="$COMPOSE_DIR/sqldump"
EXPORT_DIR="/usr/src/paperless/export"

export RESTIC_REPOSITORY="sftp:abc123@abc123.your-storagebox.de:/backup/restic"
export RESTIC_PASSWORD_FILE="/home/user/.config/restic/password"

mkdir -p "$DUMP_DIR"

cd "$COMPOSE_DIR"
docker compose exec -T webserver document_exporter "$EXPORT_DIR" -p
docker compose exec -T db pg_dump -U paperless paperless > "$DUMP_DIR/dump.sql"



restic backup "$DUMP_DIR" "$COMPOSE_DIR/export"

restic forget \
	--keep-daily 7 \
	--keep-weekly 4 \
	--keep-monthly 6 \
	--prune

rm -rf "$COMPOSE_DIR/export"/*
rm -rf "$DUMP_DIR"/*

paperless-backup.service

[Unit]
Description=Paperless-ngx Restic Backup
Wants=network-online.target
After=network-online.target docker.service

[Service]
Type=oneshot
User=user
WorkingDirectory=/home/user/paperless-ngx
ExecStart=/home/user/paperless-ngx/backup-paperless.sh

paperless-backup.timer

[Unit]
Description=Run paperless backup every 24 hours

[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
RandomizedDelaySec=30min

[Install]
WantedBy=timers.target

original
Sort:hotnewtop