paperless-ngx: Bare-Metal Installation aktualisieren
01| Voraussetzungen
Paperless-ngx in einem Proxmox LXC-Container als Bare-Metal-Version mit einem eigenen Python Virtual Environment (venv) und Postgres im Verzeichnis /opt/paperless
installiert.
02| Backout Vorbereitungen
Falls bei der Installation was schief geht, soll der Betrieb möglichst schnell wieder hergestellt werden können. Daher wird zunächst ein für den Proxmox-Container in dem Paperless-ngx installiert ist ein aktueller Snapshot erstellt.
Innerhalb des Containers wird zusätzlich ein Backup der paperless.conf
erstellt:
cp /opt/paperless/paperless.conf /opt/paperless/paperless.$(date +%Y%m%d).conf
03| Betriebssystem aktualisieren
apt update
apt upgrade
Falls erforderlich sollte ggf. auch ein Upgrade der Distribution durchgeführt werden. Anleitungen, wie das durchgeführt wird, finden sich im Internet.
03.1| Postgresql-Cluster aktualisieren
Sollte bei einem Upgrade der Distribution auch eine neue postgresql-Version installiert werden, so sollte der postgresql-Cluster jetzt auch direkt mit aktualisiert werden. Mit folgenden Kommandos kann beispielsweise von postgresql-13 auf postgresql-15 aktualisiert werden:
# 1. Backup der Datenbank
sudo -u postgres pg_dumpall --cluster 13/main > /tmp/dump_13_main_$(date +%Y%m%d).sql
mv /tmp/dump_13_main_*.sql /opt/paperless/
# 2. Der bei der Installation angelegte Default-Cluster muss gelöscht werden
pg_dropcluster --stop 15 main
# 3. Cluster aktualisieren
pg_upgradecluster 13 main
Wenn sicher ist, dass alles funktioniert hat können die alte Postgresql-Pakete deinstalliert werden:
apt remove postgresql-13 postgresql-client-13
04| Download des aktuellen Paperless-ngx Release
# 1. Download des aktuellen Releases von https://github.com/paperless-ngx/paperless-ngx/releases
cd /tmp
wget https://github.com/paperless-ngx/paperless-ngx/releases/download/v2.5.3/paperless-ngx-v2.5.3.tar.xz
# 2. Archiv entpacken
tar -xf paperless-ngx-v2.5.3.tar.xz
# 3. paperless.conf umbennen, um überschreiben von Konfigurationapassungen zu vermeiden
cp paperless-ngx/paperless.conf paperless-ngx/paperless.conf.release
# 4. Überprüfen ob neue Konfigurationsparameter in die Konfiguration übernommen
# werden sollten
diff /opt/paperless/paperless.conf paperless-ngx/paperless.conf.release
05| Dependencies im OS installieren
Die jeweils für das Release zu installierenden Pakete finden sich in der Installationsanleitung von Paperless-ngx.
Ggf. muss auch noch Redis aktualisiert werden. Auch hier ist in der Installationsanleitung beschrieben, welche Version benötigt wird.
06| Dienste stoppen
systemctl stop paperless-*.service
07| Neue Dateien kopieren
Damit keine "Karteileichen" im Verzeichnis über bleiben, lösche ich zunächst die alten Dateien bevor die neue Version kopiert wird:
# 1. Lösche Dateien im Installations-Verzeichnis
cd /tmp/paperless-ngx
for f in {.,}*; do
rm -r "/opt/paperless/$f"
done
# 2. Berechtigungen anpassen
chown -R paperless:paperless {.,}*
#3. Dateien an den Installationsort verschieben
mv {.,}* /opt/paperless/
# 4. clean-up
cd ..
rm -r paperless--ngx*
08| Python Requirements installieren
cd /opt/paperless
source bin/activate
sudo -Hu paperless bin/pip3 install -r requirements.txt
09| Datenbank migrieren
cd /opt/paperless/src
sudo -Hu paperless ../bin/python3 manage.py migrate
deactivate
10| Services starten
systemctl start paperless*.service
Kommentare