Da ich jetzt endlich die, fĂŒr mich, perfekte und einwandfrei funktionierende Lösung fĂŒr Paperless gefunden habe, möchte ich meine Erfahrungen gerne mit euch teilen.
Ich habe mich auch von dem Video von Simon42 animieren lassen und Paperless zuerst in HA installiert. Das hatte den Vorteil, dass es sehr einfach zu installieren war, aber die Nachteile, dass es da eigentlich nichts zu suchen hat, Backups sehr groĂ wurden und dass neue Versionen von Paperless erst mal von dem Entwickler des Add-on in das Add-on integriert werden mĂŒssen, was immer eine Weile dauern kann.
Dann habe ich eine sehr gute und auch sehr gut funktionierende Anleitung fĂŒr die Installation als Docker Container auf meiner QNAP gefunden.
Die Verarbeitung der Dokumente lief aber immer sehr zÀh und trÀge ab. Ansonsten ist das aber ein sehr empfehlenswerter Weg, um Paperless zu betreiben.
Dann habe ich aber die beste Variante gefunden, Paperless zu installieren und zu betreiben.
Jetzt lÀuft Paperless als LXC Container auf Proxmox, inkl. einer tÀglichen Sicherung der Dokumente auf meinem QNAP.
Die Anleitung stammt von Tobias Lerch. Er erklĂ€rt alles perfekt Schritt fĂŒr Schritt und die Skripte funktionieren einwandfrei und fehlerfrei.
Ich habe dem LXC Container 2 CPUs, 2 GB RAM und 50 GB SSD gegeben, womit Paperless auch beim Importieren mehrerer Dokumente recht flĂŒssig lĂ€uft (wesentlich schneller als auf der QNAP).
Die Saba Shares habe ich in der Datei /etc/samba/smb.conf noch wie folgt erweitert, um alle Ordner von auĂen zu sehen:
[consume]
comment = Eingangsordner fĂŒr neue Dockumente
path = /data/paperless/consume
browsable = yes
writable = yes
guest ok = no
create mask = 0770
directory mask = 0770
valid users = paperless
[backup]
comment = Paperless Backup
path = /data/paperless/backup
browsable = yes
writable = yes
guest ok = no
create mask = 0770
directory mask = 0770
valid users = paperless
[restore]
comment = Paperless Restore
path = /data/paperless/restore
browsable = yes
writable = yes
guest ok = no
create mask = 0770
directory mask = 0770
valid users = paperless
[media]
comment = Ausgabeordner fĂŒr gespeicherte Dokumente
path = /data/paperless/media
browsable = yes
writable = yes
guest ok = no
create mask = 0770
directory mask = 0770
valid users = paperless
[data]
comment = Arbeitsdaten
path = /data/paperless/data
browsable = yes
writable = yes
guest ok = no
create mask = 0770
directory mask = 0770
valid users = paperless
[export]
comment = Daten Export
path = /data/paperless/export
browsable = yes
writable = yes
guest ok = no
create mask = 0770
directory mask = 0770
valid users = paperless
Und dann wollte ich noch, neben der tÀglichen Sicherung des Containers in Proxmox, eine tÀgliche Sicherung der Dokumente in ein Share auf meinem NAS.
Das hat mich aufgrund der EinschrÀnkungen eines unprivilegierten Containers sehr viel Zeit und Nerven gekostet. Daher möchte ich euch auch hier, meine Lösung nicht vorenthalten.
Erstellt bitte vor allen Ănderungen ein Backup!
- Auf dem Proxmox Host (z.B. PVE) ein Mount mit dem NAS-Share mit uid=100000 und gid=100000 anlegen:
Dazu ein Verzeichnis im Ordner /mnt anlegen:
mkdir /mnt/nas_paperless_backup
- Auf dem Proxmox Host (z.B. PVE) eine Credential Datei fĂŒr Username und Passwort des NAS-Share anlegen:
nano /root/.smbcredentials
username=[Benutzername]
password=[Passwort]
Dann die Datei absichern:
chmod 600 /root/.smbcredentials
- Auf dem Proxmox Host (z.B. PVE) den Mount Befehl in die fstab eintragen, damit die Verbindung nach einem Reboot wieder hergestellt wird
nano /etc/fstab
//[NAS IP-Adresse]/[Freigabename] /mnt/qnap_paperless_backup cifs credentials=root/.smbcredentials,uid=100000,gid=100000,file_mode=0775,dir_mode=0775,_netdev,nofail,x-systemd.automount 0 0
Den Eintrag prĂŒfen:
mount -a
Jetzt sollte man unter dem Ordner /mnt/qnap_paperless_backup den Inhalt der Freigabe sehen können.
Und mit
touch /mnt/qnap_paperless_backup/test.txt
kann man auch ĂŒberprĂŒfen, ob man Schreibrechte hat.
- Auf dem Proxmox Host (z.B. PVE) fĂŒr den LXC Container einen Mount mit dem eben erstellten Mount des Host herstellen
Wenn der LXC Container z.B. die CT ID 120 hat (ansonsten bitte anpassen):
nano /etc/pve/lxc/120.conf
mp0: /mnt/qnap_paperless_backup,mp=/mnt/qnap_paperless_backup
Nach dem Neustart des LXC Containers sollte man jetzt auch hier unter
/mnt/qnap_paperless_backup
den Inhalt des NAS Shares sehen können und mit
touch /mnt/qnap_paperless_backup/test1.txt
ĂŒberprĂŒfen, ob man Schreibrechte darauf hat.
- Ein Backup Skript erstellen, dass die Dokumente tÀglich auf das NAS sichert
Ich habe dazu eine Kopie des Backup-Skriptes von Tobias Lerch entsprechend angepasst:
nano /root/daily_qnap_backup.sh
#!/bin/bash
# Skript: backup.sh
# Dieses Skript fĂŒhrt ein Backup ĂŒber docker-compose aus und verschiebt anschlieĂend die Backup-Datei(en).
echo "Starte Backup: Ein Backup wird jetzt durchgefĂŒhrt..."
# Wechsel in das Verzeichnis, in dem sich die docker-compose Datei befindet
cd /home/paperless || { echo "Fehler: Verzeichnis /home/paperless nicht gefunden."; exit 1; }
# FĂŒhre den docker-compose Befehl aus
sudo docker compose exec webserver document_exporter ../export -z
# PrĂŒfe, ob der Befehl erfolgreich war
if [ $? -eq 0 ]; then
echo "Backup erfolgreich abgeschlossen."
# PrĂŒfen, ob das Quellverzeichnis existiert
if [ -d "/data/paperless/export" ]; then
# Sicherstellen, dass das Zielverzeichnis existiert (falls nicht, wird es angelegt)
# mkdir -p /data/paperless/backup
# PrĂŒfen, ob im Quellverzeichnis Dateien vorhanden sind
if compgen -G "/data/paperless/export/*" > /dev/null; then
echo "Verschiebe Backup-Datei(en) nach [NAS]/[NAS_Paperless_Backup]..."
mv /data/paperless/export/* /mnt/qnap_paperless_backup/
echo "Lösche Sicherungen, die Àlter als 7 Tage sind..."
find /mnt/qnap_paperless_backup -name 'export-*.zip' -mtime +7 -delete
if [ $? -eq 0 ]; then
echo "Datei(en) erfolgreich verschoben."
else
echo "Fehler beim Verschieben der Datei(en)."
fi
else
echo "Keine Datei(en) im Verzeichnis /data/paperless/export gefunden."
fi
else
echo "Quellverzeichnis /data/paperless/export existiert nicht."
fi
else
echo "Fehler beim Backup."
fi
Das Sktipt muss noch ausfĂŒhrbar gemacht werden:
chmod +x /root/daily_qnap_backup.sh
Mit dem folgenden Befehl kann man es mal ausprobieren:
sh /root/daily_qnap_backup.sh
Und dann muss es noch in die crontab eingetragen werden, damit es wirklich tÀglich lÀuft (bei mir 2:07 Uhr):
nano /etc/crontab
7 2 * * * root /root/daily_qnap_backup.sh
Da der Container von Haus aus mit UTC-Zeit lÀuft, sollte man auch noch die Zeitzone anpassen, damit das Skript auch wirklich zur richtigen Zeit lÀuft:
Die aktuelle Zeiteinstellung prĂŒfen:
date
Zeitzone Àndern
rm /etc/localtime
ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime
Und dann noch mal mit date prĂŒfen