Je viens d’effectuer la mise à jour vers PostgreSQL 18 pour une installation standard et une configuration à double conteneur sans aucun problème. Merci encore à @chrisr et à l’équipe pour les instructions claires.
Pour une configuration à double conteneur derrière le CDN Cloudflare avec des buckets R2 pour les téléchargements et les sauvegardes, j’ai suivi les étapes ci-dessous :
Étape 1 : nettoyage du disque
# supprimer toutes les données Docker inutilisées
docker system prune -a -f
# vider les anciens journaux et le cache apt
journalctl --vacuum-time=2d
apt-get clean
apt-get autoremove -y
# vérifier la taille de la base de données
du -sh /var/discourse/shared/data/postgres_data
# vérifier l’espace libre disponible
df -h -x tmpfs -x devtmpfs
Étape 2 : maintenance et sauvegarde
- modifier la page de maintenance Cloudflare pour indiquer une maintenance système de 15 à 20 minutes et définir un minuteur de rechargement (cela ne prendra peut-être pas si longtemps, mais mieux vaut être prudent !). Activer une route de worker Cloudflare pour afficher la page de maintenance.
- déclencher une sauvegarde via la ligne de commande :
cd /var/discourse
./launcher enter web_only
discourse backup
exit
- se connecter au tableau de bord Cloudflare R2 et vérifier le dossier de sauvegarde pour confirmer que le fichier de sauvegarde a été téléchargé avec succès
Étape 3 : arrêt sécurisé
- arrêter d’abord le conteneur web pour fermer toutes les connexions actives, puis arrêter le conteneur de base de données :
cd /var/discourse
./launcher stop web_only
./launcher stop data
- vérifier que PostgreSQL s’est arrêté correctement :
tail -n 20 shared/data/log/var-log/postgres/current
Étape 4 : reconstruction de la mise à jour
exécuter les commandes suivantes dans cet ordre :
./launcher rebuild data # exporte, migre et restaure PostgreSQL 18
./launcher rebuild data # reconstruit le conteneur de base de données
./launcher rebuild web_only # reconstruit l’application web
Étape 5 : optimisation et nettoyage
- générer les statistiques manquantes des tables pg18, sinon le forum sera plus lent que d’habitude :
docker exec -u postgres data /usr/lib/postgresql/18/bin/vacuumdb -d discourse --analyze-in-stages
- tester le forum pour s’assurer que tout fonctionne — la page de maintenance ne devrait plus s’afficher si vous avez défini un minuteur de rechargement.
- supprimer la route du worker Cloudflare vers la page de maintenance (pour ne pas atteindre la limite quotidienne de 100 000 requêtes !)
- supprimer les anciennes données pg18 pour libérer de l’espace disque :
rm -fr /var/discourse/shared/data/postgres_data_old/
C’est fait !
![]()
