Ich habe gerade PostgreSQL 18 für eine Standardinstallation und eine Dual-Container-Konfiguration durchgeführt, und zwar ohne jegliche Probleme. Nochmal vielen Dank an @chrisr und das Team für die einfachen Anleitungen.
Für eine Dual-Container-Konfiguration hinter dem Cloudflare CDN mit R2-Upload-/Backup-Buckets waren die von mir verwendeten Schritte wie folgt:
Schritt 1: Festplatte bereinigen
# Alle ungenutzten Docker-Daten löschen
docker system prune -a -f
# Alte Logs und Apt-Cache löschen
journalctl --vacuum-time=2d
apt-get clean
apt-get autoremove -y
# Datenbankgröße prüfen
du -sh /var/discourse/shared/data/postgres_data
# Verfügbaren freien Speicherplatz prüfen
df -h -x tmpfs -x devtmpfs
Schritt 2: Wartung & Backup
- Bearbeite eine Cloudflare-Wartungsseite, sodass dort „Systemwartung/Aktualisierung, 15–20 Minuten“ steht, und setze einen Neuladungstimer (es wird vielleicht nicht so lange dauern, aber besser sicher als leid!). Aktiviere eine Cloudflare-Worker-Route, um die Wartungsseite anzuzeigen.
- Lege ein Backup über die Kommandozeile an:
cd /var/discourse
./launcher enter web_only
discourse backup
exit
- Melde dich im Cloudflare R2-Dashboard an und überprüfe den Backup-Ordner, um sicherzustellen, dass die Backup-Datei erfolgreich hochgeladen wurde.
Schritt 3: Sicherer Shutdown
- Stoppe zuerst den Web-Container, um alle aktiven Verbindungen zu beenden, und stoppe dann den Datenbank-Container:
cd /var/discourse
./launcher stop web_only
./launcher stop data
- Überprüfe, ob PostgreSQL ordnungsgemäß heruntergefahren wurde:
tail -n 20 shared/data/log/var-log/postgres/current
Schritt 4: Upgrade-Rebuilds
Führe die folgenden Befehle in dieser Reihenfolge aus:
./launcher rebuild data # PostgreSQL 18 dumpen, migrieren und wiederherstellen
./launcher rebuild data # Datenbank-Container neu aufbauen
./launcher rebuild web_only # Web-App neu aufbauen
Schritt 5: Optimierung & Bereinigung
- Generiere die fehlenden pg18-Tabellenstatistiken, da das Forum sonst langsamer als normal sein wird:
docker exec -u postgres data /usr/lib/postgresql/18/bin/vacuumdb -d discourse --analyze-in-stages
- Teste das Forum, um sicherzustellen, dass alles funktioniert – die Wartungsseite sollte jetzt nicht mehr geladen werden, falls du einen Neuladungstimer dafür eingestellt hast.
- Entferne die Cloudflare-Worker-Route zur Wartungsseite (wir wollen das Limit von 100.000 Aufrufen pro Tag nicht erreichen!).
- Lösche die alten pg18-Daten, um diesen Speicherplatz wieder freizugeben:
rm -fr /var/discourse/shared/data/postgres_data_old/
Fertig!
![]()
