61 lines
2.2 KiB
Bash
61 lines
2.2 KiB
Bash
#!/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 ✅"
|