Changer le nom de domaine ou l'adresse de mon Discourse

Ce tutoriel s’adresse à ceux qui ont un forum Discourse et qui veulent modifier l’adresse web ou le nom de domaine de ce dernier.

Par exemple, vous pourriez avoir envie de changer anciendomaine.com pour nouveaudomaine.com, ou même utiliser un nouveau sous-domaine comme exemple.nouveaudomaine.com, ou bien changer l’extension de votre domaine.

Préparer le changement de nom de domaine

TTL de l’ancien domaine

Commencez par paramétrer le TTL (Time To Live) des zones DNS de votre ancienne adresse au minimum. Cela vous permettra le moment venu de faire pointer l’ancien domaine vers une page qui gérera les redirections vers le nouveau. Cette opération n’est pas indispensable, mais peut améliorer l’expérience de vos utilisateurs, surtout si votre forum Discourse est très fréquenté.

Gestion des redirections 301 de votre ancien Discourse

Il est important que les URL de l’ancien domaine de votre Discourse pointent vers celles du nouveau. Cela permet à vos utilisateurs d’être automatiquement redirigés vers la nouvelle page et aux moteurs de recherche de comprendre que vous avez déménagé votre installation Discourse.

Pour cela deux options, soit vous utilisez un hébergement web dans lequel vous placez un fichier .htaccess correctement configuré, soit vous créez une règle de redirection permanente si vous utilisez un service comme Cloudflare. Les deux solutions sont bonnes, cela dépend de vos ressources, et nous allons voir comment faire dans les deux cas.

Voici le fichier .htaccess à placer à la racine du dossier public de votre hébergement web :

RewriteEngine on
RewriteCond %{HTTP_HOST} ^anciendomaine.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.anciendomaine.com [NC]
RewriteRule ^(.*)$ https://nouveaudomaine.com/$1 [L,R=301,NC]

Si vous utilisez Discourse, voici la règle (Page Rule) à créer :

Remarquez bien l’utilisation de $1 à la fin de la nouvelle URL. Attention laissez cette règle désactiver jusqu’à ce que vous ayez terminé les manipulations dans Discourse, et que le nouveau domaine y sera bien paramétré.

Préparation de la nouvelle URL du CDN

Si vous utilisez un CDN (Content Delivery Network) S3, et si vous voulez changer son URL pour un sous-domaine du nouveau domaine (recommandé), alors il vous faut aussi préparer cela au préalable. Pour rappel, vous pouvez vérifier si vous utilisez un CDN S3 en allant dans l’administration de votre Discourse > Fichiers > s3 cdn url comme illustré ci-dessous :

Commencez par demander un certificat pour le nouveau sous-domaine (par exemple : cdn.nouveaudomaine.com). Pour cela, dans votre console AWS, allez dans « Certificate Manager » et cliquez que « Demander un certificat ». Suivez les étapes jusqu’à la fin pour valider le sous-domaine.

Il ne vous reste plus qu’à modifier la distribution Cloudfront tel qu’indiqué dans l’image suivante :

Attention, pensez aussi à configurer des redirections 301 pour les URL du CDN de la même manière que nous l’avons fait ci-dessous, soit en utilisant le fichier .htaccess, soit un service comme Cloudflare.

Configuration du serveur SMTP

Il faut penser à configurer le serveur SMTP du nouveau domaine pour pouvoir envoyer les emails Discourse avec la nouvelle adresse. N’oubliez pas que les emails sont une composante essentielle dans le fonctionnement de votre forum. Notez et mettez de côté les nouveaux paramètres de connexion SMTP le cas échéant, il faudra les mettre à jour dans Discourse à la fin du changement de nom.

Manipulation dans Discourse

Bien passons à l’action. Les manipulations suivantes vont rendre indisponible votre forum Discourse. Choisissez donc un moment de la semaine avec peu de fréquentation et, sans vous précipiter, ne traîner pas dans la procédure.

Vérification des occurrences dans la configuration

Dans l’administration de votre forum Discourse > Paramètres, vérifier et modifier toutes les occurrences de l’ancien domaine. Tout doit bien être corrigé : adresses email, URL de contact, etc.

Corriger les connexions par service tiers

Si vous avez activé la connexion en utilisant des services tiers comme Facebook, Twitter, etc. Il vous faut penser à modifier leurs paramétrages pour prendre en compte le nouveau domaine.

Mode maintenance de Discourse

Commencez par mettre votre Discourse en mode « maintenance » pour empêcher les visiteurs de publier des messages. Pour cela, allez dans l’administration > Sauvegardes > cliquez sur « Activer la lecture seule » comme indiqué ci-dessous :

Modification du fichier app.yml

Accédez au serveur qui héberge votre Discourse en SSH et modifier le fichier app.yml à la ligne :

## The domain name this Discourse instance will respond to
DISCOURSE_HOSTNAME: 'nouveaudomaine.com'

Si vous utilisez un CDN, désactivez le en commande la ligne correspondante dans ce fichier. Vous pourrez le réactiver après.

Après cela, lancer la reconstruction de votre Discourse :

./launcher rebuild app

Si vous ne voulez pas éditer le fichier app.yml, vous pouvez à la place relancer la procédure d’installation avec la commande :
./discourse-setup

Discourse devrait maintenant normalement fonctionner avec la nouvelle adresse.

Si vous obtenez une erreur « 502 Bad Gateway », redémarrez simplement votre serveur.

Redirection de l’ancien domaine

Il est temps de faire pointer l’ancien nom de domaine vers l’hébergement web qui contient le fichier de redirection .htaccess ou d’activer la règle dans Cloudflare pour le forwarding d’URL, tel que nous l’avons préparé au début.

Manipulations post-opératoires

Il reste encore une étape : remplacer toutes les occurrences de l’ancien domaine par le nouveau dans tous les messages de votre forum Discourse.

Pour cela, tapez les commandes suivantes :

./launcher enter app
discourse remap anciendomaine.com nouveaudomaine.com

Répondez aux questions, et terminez par :

rake posts:rebake

Pensez à réactiver le CDN si vous l’aviez désactiver, mettez à jour la distribution Cloudfront. Enlevez le mode maintenance. Contrôlez attentivement votre Discourse. Et ça devrait être bon !