Ich habe gerade PostgreSQL 18 für eine Standardinstallation und eine dual container Umgebung ohne jegliche Probleme durchgeführt. Nochmals danke an @chrisr und das Team für die einfachen Anleitungen.
Für eine Dual-Container-Konfiguration hinter Cloudflare CDN mit R2-Uploads-/Backup-Buckets habe ich die folgenden Schritte verwendet:
Schritt 1: Datenträger bereinigen
# nuke all unused docker data
docker system prune -a -f
# clear old logs and apt cache
journalctl --vacuum-time=2d
apt-get clean
apt-get autoremove -y
# check database size
du -sh /var/discourse/shared/data/postgres_data*
# check new available free space
df -h -x tmpfs -x devtmpfs
Schritt 2: Wartung & Backup
- Bearbeiten Sie eine Cloudflare-Wartungsseite, um eine Systemwartung/Update von 15-20 Minuten anzuzeigen (es dauert vielleicht nicht so lange, aber Sicherheit geht vor!) und setzen Sie einen Neulade-Timer auf etwa 30 Sekunden. Aktivieren Sie eine Cloudflare-Worker-Route, um die Wartungsseite anzuzeigen.
- Triggeren Sie ein Backup über die Kommandozeile:
cd /var/discourse
./launcher enter web_only
discourse backup
exit
- Melden Sie sich im Cloudflare R2 Dashboard an und prüfen Sie den Backup-Ordner, um zu bestätigen, dass die Backup-Datei erfolgreich hochgeladen wurde
Schritt 3: Sicheres Herunterfahren
- Stoppen Sie zuerst den Web-Container, um aktive Verbindungen zu beenden, und dann den Datenbank-Container:
cd /var/discourse
./launcher stop web_only
./launcher stop data
- Stellen Sie sicher, dass PostgreSQL ordnungsgemäß heruntergefahren wurde:
tail -n 20 shared/data/log/var-log/postgres/current
Schritt 4: Upgrade-Rebuilds
Führen Sie die folgenden Befehle in dieser Reihenfolge aus:
./launcher rebuild data # dumps, migrate and restore postgresql 18
./launcher rebuild data # rebuilds database container
./launcher rebuild web_only # rebuilds web app
Schritt 5: Optimierung & Bereinigung
- Erstellen Sie die fehlenden pg18-Tabellenstatistiken, da das Forum sonst langsamer als üblich sein wird:
docker exec -u postgres data /usr/lib/postgresql/18/bin/vacuumdb -d discourse --analyze-in-stages
- Testen Sie das Forum, um sicherzustellen, dass alles funktioniert - die Wartungsseite sollte jetzt nicht mehr geladen werden, wenn Sie einen Neulade-Timer für sie eingestellt haben.
- Entfernen Sie die Cloudflare-Worker-Route zur Wartungsseite (wir wollen das tägliche Limit von 100.000 Anfragen nicht erreichen!)
- Löschen Sie die alten pg18-Daten, um diesen Speicherplatz wieder freizugeben:
rm -fr /var/discourse/shared/data/postgres_data_old/
Fertig!
![]()
