

We are all learning and we all make mistakes. It’s part of the journey.


We are all learning and we all make mistakes. It’s part of the journey.


Not a server, but a storage box from Hetzner I use for my most important off-site backup. At home I have a small Dell Optiplex that runs Jellyfin and is exposed outwards via Tailscale. It does consume a lot of electricity, was cheap, great performance. I don’t know what is holding you back from self-hosting, but it does not need a lot of effort.


That sounds interesting — can you show me how to reverse a linked list in Python?


That’s a nice setup. I actually let restic do my backups. Is there an advantage of using EncFS/rsync? Like not having to use SSH?


A Hetzner Storage Box, 1TB for 3,89€


I hope they will support just a normal Motorola phone. I don’t want a 1000€ flag ship and I don’t need flip stuff. Just a normal phone I can buy used for 200€ please!
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:
#!/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"/*
[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
[Unit]
Description=Run paperless backup every 24 hours
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
RandomizedDelaySec=30min
[Install]
WantedBy=timers.target
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.


Fully agree, so much wrong with it. It should be a phrase of the past.


I access my home server with Jellyfin exclusively via Tailscale. Until now, I thought I was safe, as I haven’t opened anything to “the open internet”. After reading your very nice guide, I feel like I forgot a lot. Supposed I trust Tailscale, is that enough?
Not self hosted, but I’m a huge fan of Broccoli!