Files

61 lines
2.2 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/sh
#
# upgrade-paperless-postgres.sh
# Ablauf: Paperless -> Postgres -> Paperless (im BastilleBSD-Jail)
#
set -e # bei Fehler abbrechen
JAIL="paperless"
DB_NAME="paperless"
DB_USER="paperless"
OLD_PG_VER="16"
NEW_PG_VER="17"
BACKUP_DIR="/root/pg_backup"
DUMPFILE="$BACKUP_DIR/paperless_$(date +%Y%m%d_%H%M%S).sql"
echo ">>> Schritt 1: Paperless-Services im Jail stoppen"
bastille cmd $JAIL service paperless stop || true
bastille cmd $JAIL service redis stop || true
echo ">>> Schritt 2: Postgres-Dump ziehen"
bastille cmd $JAIL mkdir -p "$BACKUP_DIR"
bastille cmd $JAIL su - postgres -c "\"pg_dump -U $DB_USER $DB_NAME > $DUMPFILE\""
echo "Backup gespeichert unter: $DUMPFILE"
echo ">>> Schritt 3: Alte Postgres-Instanz im Jail stoppen"
bastille cmd $JAIL service postgresql stop || true
echo ">>> Schritt 4: Neue Postgres-Version installieren"
bastille cmd $JAIL pkg install -y postgresql${NEW_PG_VER}-server postgresql${NEW_PG_VER}-client
echo ">>> Schritt 5: Neues Datenverzeichnis initialisieren"
bastille cmd $JAIL mv /var/db/postgres/data${OLD_PG_VER} /var/db/postgres/data${OLD_PG_VER}.old.$(date +%s) || true
bastille cmd $JAIL sysrc postgresql_enable="YES"
bastille cmd $JAIL service postgresql initdb
bastille cmd $JAIL service postgresql start
echo ">>> Schritt 6: Backup einspielen"
bastille cmd $JAIL su - postgres -c "\"psql -U $DB_USER -d $DB_NAME -f $DUMPFILE\""
echo ">>> Schritt 7: Paperless-Upgrade (auto erkennen)"
if bastille cmd $JAIL pkg info paperless-ngx >/dev/null 2>&1; then
echo ">>> Paperless via pkg erkannt Upgrade mit pkg"
bastille cmd $JAIL pkg upgrade -y paperless-ngx
elif bastille cmd $JAIL pip show paperless-ngx >/dev/null 2>&1; then
echo ">>> Paperless via pip erkannt Upgrade mit pip"
bastille cmd $JAIL pip install -U paperless-ngx
else
echo ">>> WARNUNG: Paperless-Installation nicht gefunden!"
exit 1
fi
echo ">>> Schritt 8: Datenbankmigration Paperless"
bastille cmd $JAIL sh -c "cd /usr/local/lib/python3.11/site-packages/paperless && python3.11 manage.py migrate"
echo ">>> Schritt 9: Dienste starten"
bastille cmd $JAIL service redis start
bastille cmd $JAIL service paperless start
echo ">>> Upgrade abgeschlossen ✅"