Création d’un WordPress multisite : blogues.québec.tk (CyberPanel)

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #569
    Bigue Nique
    Keymaster

    blogues.québec.tk

    Réseau WP multisite pour offrir un service d’hébergement de blogues limité mais gratuit.

    « Blogues » : http://gdt.oqlf.gouv.qc.ca/ficheOqlf.aspx?Id_Fiche=8370242


    Notes d’installation


    17:13 2021-01-26

    Nous allons effectuer le suivi scrupuleux des étapes dans la perspective de créer un tutoriel sur Méta.

    Notez que le parser Markdown de Nextcloud a l’air d’en arracher grave !

    Planification

    À faire :

    • [x] 1. Configurer les zones DNS (DigitalOcean)
    • [x] 2. Créer un site blogues.qc1.fiatlux.tk (CyberPanel/QC1) + domaines additionnels + SSL
    • [x] 3. Installer WordPress
    • [x] 4. Activer multisite
    • [x] 5. Installer Mercator (permet d’ajouter des alias de domaines)

    17:33 2021-01-26

    1. Configurer les zones DNS (DigitalOcean)

    Tout compte fait, on va déclarer blogues.qc1.fiatlux.tk (domaine de base) en interne dans CP et ajouter blogues.fiatlux.tk, blogues.québec.tk et blogues.quebec.tk en alias (domaines add-on pointant sur public_html). Ça va nous donner plus de flexibilité et de contrôle s’il fallait éventuellement déménager/sharder le service d’hébergement sur différents serveurs.

    Il faut donc configurer les zones DNS sur les 3 domaines (tous les NS sont chez DigitalOcean : c’est gratuit et très performant !).

    • *.qc1.fiatlux.tk renvoie déjà à QC1 (CNAME) (mais on va quand même créer les zones + http://www.*, que le CNAME ne couvre pas)
    • blogues.quebec.tk CNAME blogues.qc1.fiatlux.tk
    • blogues.xn--qubec-csa.tk CNAME blogues.qc1.fiatlux.tk

    J’en profite pour créer également des zones blogs.* (pendant anglophone), http://www.blogues.*, http://www.blogs.*. On redirigera si nécessaire au moment déterminant. Je met les TTL à 3600 (1 heure) pour commencer (permet de corriger rapidement une erreur) et les ferai passer à 43200 (12 heures) lorsque tout sera correctement configuré et testé.

    Accès DO/networking/domains : https://cloud.digitalocean.com/networking/domains

    On a donc ajouté les zones suivantes (TTL=3600) :

    Donc, ultimement, tous ces beaux domaines se résolveront sur qc1.fiatlux.tk (zone A ipv4=51.79.53.108/zone AAAA ipv6=2607:5300:205:200::139c) ! On est donc prêts à créer le site, les alias (add-ons) et les certificats SSL sur CyberPanel !

    2. Créer un site blogues.qc1.fiatlux.tk (CyberPanel/QC1) + domaines additionnels + SSL

    Création du site dans CyberPanel

    Création du site :

    Ajout d'un domaine « alias » (Add Domains) dans CyberPanel

    Ajout des alias (add-on domains) :

    • Manage Website
    • Pour chacun des domaines (excepté les variantes www, pris en charge automatiquement par CyberPanel) (exemple) :
      • Domains > Add Domains
      • Domain Name : blogs.qc1.fiatlux.tk
      • Path: /home/blogues.qc1.fiatlux.tk/ : public_html
      • Select PHP : PHP 7.4
      • Additional Features : SSL
      • Create Domain !
    • Et ainsi pour chacun des domaines/sous-domaines ci-haut configurés (cela prend un certain temps (ça m’aura pris ici de 18:34 à 18:47). On en profite généralement pour faire une tâche « légère » en simultané (pour ma part j’en ai profité pour peaufiner ce texte et configurer un site avec les alias de domaines dans Matomo !)
    • Ceci créera un domaine alias (même dossier racine) avec un certificat SSL distinct (domaine+www.domaine). NE PAS utiliser la fonctionalité Domains > Domain Alias de CyberPanel qui échoue fatalement à créer des certificats valides pour plus d’un alias. De plus il y a un intérêt réel à gérer des certificats SSL distincts pour chaque domaine.
      • Note : l’émission du certificat Let’s Encrypt échouera si le domaine ne résout pas sur l’IP de l’hôte CyberPanel (d’où l’importance de créer les zones avant de créer le site); dans ce cas CyberPanel générera un certificat auto-signé (self-signed) et par conséquent invalide.
      • C’est la raison pour laquelle on définit des TTL relativement courts au départ, ça nous permettra d’éviter d’avoir à attendre 12 heures avant de réémettre un certificat sur une zone mal configurée
      • Il sera possible de re-générer le certificat Let’s Encrypt plus tard (TTL secondes — TTL de la zone DNS — après le dernier essai sur celle-ci !).

    On peut tester les certificats simplement en visitant chacun des domaines (avec https://) dans le navigateur.

    Liste des domaines ajoutés dans CyberPanel

    18:51 2021-01-26


    Redirections : on veut rediriger tout ces alias sur https://blogues.québec.tk (pour l’instant; on rajustera plus tard si on fait une version anglophone sur https://blogs.québec.tk).

    Note : on a besoin de certificats SSL sur tous les domaines même si ceux-ci sont redirigés, autrement un navigateur pointant par exemple sur https://www.blogues.qc1.fiatlux.tk n’obtempèrera pas si le certificat est invalide; pire : il affichera un avertissement de sécurité qui plongera votre visiteur dans un effroi terrible !

    On redirigera toutes nos variantes à l’aide d’un simple règle RewriteRule dans .htaccess.

    Modifier .htaccess :

    `

    BN20210126 Rediriger tous les alias vers https://blogues.québec.tk


    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^((www.)?blog(ue)?s.(qc1.)?(fiatlux|quebec)|(www.blog(ue)?s|blogs).xn--qubec-csa).tk$ [NC]
    RewriteRule ^/?(.*)$ https://blogues.xn--qubec-csa.tk/$1 [R=302,L]

    `

    Note : tester d’abord les redirections avec R=302 (Redirection temporaire), puis changer pour R=301 (Redirection permanente) lorsque tout fonctionne comme prévu !

    Édition des règles .htaccess dans CyberPanel

    19:29 2021-01-26


    3. Installer WordPress

    Rien de plus simple avec CyberPanel !

    Installateur d'applications dans CyberPanel

    Détails de l'installation WordPress dans CyberPanel

    Installation WordPress réussie dans CyberPanel

    19:37 2021-01-26


    Aaaah ! Si la vie était si simple !

    J’ai plusieurs raisons d’être mécontent de l’installation automatique de WordPress par CyberPanel :

    • CP a créé une base de données avec un nom bâtard : UukrWv1Ix5Pe1O. C’est peut-être plus sécuritaire ainsi (complique la vie des hackers), mais c’est pas trop pratique quand tu gères plusieurs bases de données sur le même serveur…
    • Le mot de passe défini à la création… ne fonctionne pas !!
    • La réinitialisation de mot de passe… ne fonctionne pas !!

    Ainsi, je n’ai aucun moyen de me connecter sur l’admin de mon nouveau site, ce qui rend la chose parfaitement inutile. Comment on récupère l’affaire à partir de là ?

    Note: La raison de l’échec de connexion est probablement liée au cache du navigateur que j’utilisais, et non à un problème avec l’installateur de CyberPanel (voir plus bas). Ce programme ne surgirait probablement pas si le site était installé sur un domaine unique (sans redirections).

    • Supprimer la base de données (CyberPanel) : UukrWv1Ix5Pe1O
      • Attention : passer par CyberPanel (et non PHPMyAdmin, sinon vous devrez re-créer une BD du même nom avant de pouvoir la supprimer dans CyberPanel !)
    • Peut-on re-lancer l’installation (manuelle) de WordPress ?
    • Créer une nouvelle base de données (CyberPanel)
    • Ensuite on va aller renseigner ceci dans wp-config.php
      • On peut passer par CyberPanel (Manage Website > Files > File Manager)
      • On peut y aller par FTP ou SSH itou.
      • On en profite au passage pour générer de nouvelles clés uniques
      • https://api.wordpress.org/secret-key/1.1/salt/
      • Et pour changer le préfixe par défaut wp_ en <masqué>_ (petit gain de sécurité)
    • Relancer l’installation WordPress : https://blogues.québec.tk/wp-admin/install.php
      • N’utilisez pas de compte admin : 97% des tentatives d’intrusion utilisent ce compte !
      • Utilisez un mot de passe FORT pour le compte super-utilisateur (quitte à ne jamais le retenir vous-même et à l’enregistrer dans Nextcloud Passwords !)

    Bon ben <masqué> ça marche toujours pas.

    Solution : https://wordpress.org/support/article/login-trouble/

    En fait je catche pas grand chose… ça marche en navigation privée, mais pas dans mon navigateur habituel… Même en flushant le cache !! Pourquoi des redirections de blogues.qc1.fiatlux.tk vers blogues.québec.tk apparaissent dans Network ? Pourquoi si on est sur blogues.québec.tk, si l’installation s’est faite sur le domaine ? Où est-ce que WP va chercher ça ? Dans le cache du navigateur ? Un autre cache ? WTF mesdames et messieurs, WTF !

    J’ai fini par y arriver (sans modifications à wp-config.php) en flushant la totalité du cache et les cookies et en redémarrant le navigateur !

    21:58 2021-01-26


    22:19 2021-01-26

    4. Activer multisite

    Référence : https://www.wpbeginner.com/glossary/multisite/

    Pour commencer, on ajoute ça à wp-config.php :

    /* Multisite */
    define('WP_ALLOW_MULTISITE', true);
    <code></code>

    Ensuite :

    Création du réseau dans WordPress

    • Outils > Création du réseau
      • Adresses des sites de votre réseau : Sous-domaines
      • On veut que chaque site puisse être hébergé sur son propre domaine, on ne veut donc pas d’un sous-répertoire dans le chemin !
      • Détails du réseau
      • Titre du réseau : Québec Blogues
      • Courriel de l’administrateur du réseau : <inchangé>
      • Installer !
    • Suivre les instructions à l’écran

    On nous demande :

    • De créer un enregistrement DNS générique (joker) qui fait pointer *.blogues.xn--qubec-csa.tk vers blogues.xn--qubec.tk.

    Comme on va utiliser des domaines personnalisés pour chaque site, on ne se servira pas de cette fonctionnalité, faque tsé. Pas besoin, l’gros.

    • D’ajouter ceci à wp-config.php :

    define('MULTISITE', true);
    define('SUBDOMAIN_INSTALL', true);
    define('DOMAIN_CURRENT_SITE', 'blogues.xn--qubec-csa.tk');
    define('PATH_CURRENT_SITE', '/');
    define('SITE_ID_CURRENT_SITE', 1);
    define('BLOG_ID_CURRENT_SITE', 1);
    <code></code>

    • D’ajouter cela à .htaccess en remplacement des règles WordPress existantes :

    `
    RewriteEngine On
    RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteBase /
    RewriteRule ^index.php$ – [L]

    add a trailing slash to /wp-admin

    RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ – [L]
    RewriteRule ^(wp-(content|admin|includes).) $1 [L]
    RewriteRule ^(.
    .php)$ $1 [L]
    RewriteRule . index.php [L]
    `

    On obtempère gentiment et on se reconnecte, tel que prescrit :

    Bon. Cool. On a un réseau WordPress multisite.

    22:45 2021-01-26


    02:20 2021-01-27

    5. Installer Mercator (permet d’ajouter des alias de domaines)

    La révolution Mercator !

    Référence : https://github.com/humanmade/Mercator

    Je lisais les instructions pour installer Mercator (référence ci-haut), et je constatai avec surprise :

    If an alias of arbitrarydomain.com is set for the site network.com/subsite, the site and wp-admin interface can be accessed over either the alias or the original URL.

    En français, ça donnerait quelque chose comme :

    Si un alias de domainearbitraire.com est défini pour le site reseau.com/sous-site, le site et l’interface wp-admin peuvent être atteints via soit l’alias, soit l’URL original.

    Ça, ce que ça veut dire, c’est que le blogue de Joe pourrait être accessible via https://blogues.québec.tk/joe, et si Joe enregistre un domaine, on pourra configurer son domaine (bloguedejoe.com) avec SSL ensuite. L’avantage de cette méthode, c’est qu’on peut créer et opérer initialement le blogue de Joe sans avoir à créer un nouveau certificat SSL (puisque le blogue fonctionnera sur le certificat de blogues.québec.tk), ni à avoir à configurer un certificat wildcard (valide pour tous les sous-domaines), ce qui est compliqué et présente des risques de sécurité. On n’aura à ajouter le domaine ‘add-on’ dans CyberPanel et généner son certificat Let’s Encrypt que sur la demande expresse de Joe.

    Je reviens donc sur ma décision, faite au point 4, de configurer le réseau en mode sous-domaines plutôt que sous-répertoire. Pour y arriver, je modifierai simplement cette ligne dans wp-config.php :

    define('SUBDOMAIN_INSTALL', false);
    <code></code>

    Et j’irai ensuite consulter, dans l’admin du réseau, la section Réglages > Création du réseau pour constater les changements à faire à .htaccess (on remplace toute la section WordPress située entre <ifModule mod_rewrite.c> et </ifModule>) :

    `
    RewriteEngine On
    RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteBase /
    RewriteRule ^index.php$ – [L]

    add a trailing slash to /wp-admin

    RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ – [L]
    RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
    RewriteRule ^([_0-9a-zA-Z-]+/)?(.*.php)$ $2 [L]
    RewriteRule . index.php [L]
    `

    Note : après une modification de .htaccess, il est généralement nécessaire de redémarrer le serveur web. D’où l’intérêt de passer par CyberPanel : Manage Website > Configurations > Rewrite Rules, puisque CyberPanel se charge de redémarrer le serveur OpenLiteSpeed après toute modification de .htaccess.

    Ainsi un site test sera dorénavant accessible via :

    Avantages :

    • Pas besoin de configurer une zone DNS
    • Pas besoin d’ajouter un domaine dans CyberPanel
    • Pas besoin d’émettre un nouveau certificat SSL

    Maintenant, installons Mercator !


    02:46 2021-01-27

    Installons Mercator !

    Pour ce faire nous suivrons les instructions de Mercator (référence ci-haut).

    Mercator n’est pas une extension comme les autres : elle s’installe dans un dossier spécial mu-plugins (qu’il faudra créer au besoin, à côté du dossier plugins régulier) et doit être chargée au tout début de la séquence de chargement de WordPress (phase dite sunrise).

    D’une façon ou d’une autre (FTP ou File Manager de CyberPanel), il faut trouver le moyen de copier les fichiers de Mercator dans wp-content/mu-plugins/mercator (« il se pourrait que vous ayiez à renommer Mercator-master en mercator », nous dit-on).

    Pour ma part, je profiterai du fait que Mercator est sur GitHub pour l’installer avec git via SSH. Je commencerai par personnifier l’utilisateur du site WordPress (sur un setup CyberPanel, faites sudo ls -l /home pour afficher les noms d’utilisateurs de chaque site.

    $ sudo su <nom d'utilisateur masqué>
    $ cd ~/public_html/wp-content
    $ mkdir mu-plugins
    $ cd mu-plugins
    $ git clone https://github.com/humanmade/Mercator mercator
    <code></code>

    Note : Ensuite, faire une mise à jour de l’extension sera aussi simple que git pull (dans le dossier mercator).

    On crée ensuite un fichier ‘wp-content/sunrise.php’ dans lequel on ajoutera ce code :

    `
    <?php
    // Default mu-plugins directory if you haven’t set it
    defined( ‘WPMU_PLUGIN_DIR’ ) or define( ‘WPMU_PLUGIN_DIR’, WP_CONTENT_DIR . ‘/mu-plugins’ );

    require WPMU_PLUGIN_DIR . ‘/mercator/mercator.php’;
    `

    Il faut ensuite activer le sunrise, en ajoutant cette ligne dans wp-config.php :

    define('SUNRISE', true);
    <code></code>

    Si tout se passe bien, on pourra se rendre dans l’admin réseau de WordPress > Sites > Modifier, et un nouvel onglet Aliases sera visible !

    03:10 2021-01-27


    Essayons donc ça

    Créons un alias pour notre site test. On va utiliser test.fiatlux.tk (*.fiatlux.tk pointe déjà vers qc1.fiatlux.tk, donc pas besoin de créer de zones DNS).

    Dans CyberPanel :

    • (Manage Website) : https://qc1.fiatlux.tk:8090/websites/blogues.qc1.fiatlux.tk
      • Domains > Add Domains
      • Domain Name : test.fiatlux.tk
      • Path: /home/blogues.qc1.fiatlux.tk/ : plubic_html
      • Select PHP : PHP 7.4
      • Additional Features : SSL
      • Create Domain !
    • Dans WordPress
      • Mes sites > Admin du réseau > Sites
      • Modifier blogues.xn--qubec-csa.tk/test > Onglet Aliases
      • Cliquer sur Add New
      • Domain Name : test.fiatlux.tk
      • Active : cocher Mark alias as active
      • Add Alias !

    Good job. En théorie, on peut ouvrir un navigateur sur https://test.fiatlux.tk. ~~Whoops ! Le site est redirigé vers https://blogues.québec.tk !~~ (J’ai rien dit : j’avais juste oublié de cliquer sur le bouton Add Alias !)

    Ah ! Si la vie était si simple ! Et bien, elle l’est !

    Notes pour le futur : si jamais il y a des problèmes d’authentification, jette un coup d’oeil à sunrise.php où j’ai ajouté (forme commentée) les modifications que j’avais dû faire sur le réseau fiatlux.tk en avril 2020, et aussi du côte de COOKIE_DOMAIN dans wp-config.php, qui devra peut-être être manipulé (voir ligne commentée).

    wp-content/sunrise.php avec les lignes commentées (qui désactiveraient la SSO) :

    <?php
    // Default mu-plugins directory if you haven’t set it
    defined( ‘WPMU_PLUGIN_DIR’ ) or define( ‘WPMU_PLUGIN_DIR’, WP_CONTENT_DIR . ‘/mu-plugins’ );

    20200428 Désactive la SSO

    https://github.com/humanmade/Mercator/issues/110#issuecomment-615384899

    #add_filter( ‘mercator.sso.enabled’, ‘__return_false’ );
    #add_filter( ‘mercator.sso.multinetwork.enabled’, ‘__return_false’ );

    require WPMU_PLUGIN_DIR . ‘/mercator/mercator.php’;

    Lignes commentés dont il est question dans config.php :

    /* Force cookie domain? Super WTF to the power of 2… */
    #define(‘DOMAIN_CURRENT_SITE’, ‘blogues.xn--quebec-csa.tk’);
    #define(‘COOKIE_DOMAIN’, $_SERVER[‘HTTP_HOST’]);

    04:00 2021-01-27


    #571
    Bigue Nique
    Keymaster

    On s’excuse pour les problèmes de mise en page dans ce forum. Est-ce bbPress ou Markdown qui ajoute «http://&raquo; devant les «www» et remplace les # commentaires dans les blocs de code par des titres, tout en bousillant allègrement ces dits blocs ?

    Cet article avait initialement été rédigé en Markdown sur Nextcloud.

Viewing 2 posts - 1 through 2 (of 2 total)
  • You must be logged in to reply to this topic.