this post was submitted on 16 Aug 2026
24 points (100.0% liked)

Selfhosted

61454 readers
508 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

Detailed Rules Post

  1. Be civil.

  2. No spam.

  3. Posts are to be related to self-hosting.

  4. Don't duplicate the full text of your blog or readme if you're providing a link.

  5. Submission headline should match the article title.

  6. No trolling.

  7. Promotion posts require active participation, with an account that is at least 30 days old. F/LOSS without a paywall has exceptions, with requirements. See the rules link for details. Tags [CBH] or [AIP] are required, see the links in Rule 8 for details.

  8. AI-related discussions and AI-involved promotional posts have additional requirements for tagging, as noted in Rule 7 and the AI & Promotional Post Expanded Rules post, and find example disclosures here.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 3 years ago
MODERATORS
 

Paperless cloud backups

https://samsm.ch/paperless-cloud-backups/

Some documentation on how I setup backing up my paperless-ngx documents to dropbox using rclone and some custom code

#homelab #selfhosted @selfhosted

you are viewing a single comment's thread
view the rest of the comments
[–] lokalhorst@feddit.org 9 points 18 hours ago (2 children)

I use restic to backup my paperless documents to a Hetzner Storage Box. The setup was easy and I am independent of US cloud hosters.

[–] mondoman712@toot.io 0 points 17 hours ago (1 children)

@lokalhorst As I mentioned in the post, this method can be used to back up to many different providers (incl. hetzner, see https://rclone.org/docs/). I assume w/ restic you're just backing up the folder where paperless stores the docs rather than the export. IMO the latter is nice because leaves you w/ something that's more useful w/o paperless.

[–] lokalhorst@feddit.org 6 points 16 hours 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