Skip to main content

WP Registry — installation cPanel

Cette livraison comprend le portail https://wpregistry.studiochampgauche.com, le registre https://area.wpregistry.studiochampgauche.com et le modèle du plugin WordPress, configuré avec la clé publique créée sur votre serveur.

Les deux domaines ont leur propre dossier, au même niveau dans public_html. Le portail présente l'accueil, le catalogue d'extensions et de thèmes, les fiches et le téléchargement de WP Registry. Le registre fournit l'API de mises à jour des extensions et thèmes, les archives, les comptes éditeurs et la modération. Ils utilisent la même configuration privée et la même base de données.

1. Déposer les dossiers

Téléverser wp-registry-cpanel.zip dans le dossier personnel du compte cPanel, au même niveau que public_html, puis l'extraire à cet endroit :

/home/TON_COMPTE/
├── INSTALLATION.fr.md
├── MIGRATION.fr.md
├── SHA256SUMS.txt
├── registry-private/
│ ├── .htaccess
│ └── config.example.php
├── wp-registry-server/
│ ├── cli.php
│ ├── schema.sql
│ ├── lib/
│ ├── src/
│ ├── public/ implémentations appelées par les points d'entrée
│ └── client-template/
└── public_html/
├── wpregistry.studiochampgauche.com/
│ ├── index.php portail public fourni
│ ├── .htaccess
│ ├── portal.css
│ └── favicon.svg
└── area.wpregistry.studiochampgauche.com/
├── index.php entrée de l'API et des téléchargements
├── .htaccess
├── manage/
├── publish/
└── moderate/

Le kit contient un exemple de configuration : il ne remplace pas un éventuel registry-private/config.php déjà renseigné. Pour une installation existante, conserver aussi les clés, les archives et la base ; sauvegarder avant de remplacer les fichiers applicatifs. Ne pas supprimer le contenu des autres sites de public_html.

Dans le gestionnaire de fichiers, activer l'affichage des fichiers masqués pour vérifier la présence des .htaccess.

2. Configurer les deux domaines

Créer les deux domaines dans ce même compte cPanel, sans partager leur racine web :

DomaineRacine web absolueChemin relatif au dossier du compte
wpregistry.studiochampgauche.com/home/TON_COMPTE/public_html/wpregistry.studiochampgauche.compublic_html/wpregistry.studiochampgauche.com
area.wpregistry.studiochampgauche.com/home/TON_COMPTE/public_html/area.wpregistry.studiochampgauche.compublic_html/area.wpregistry.studiochampgauche.com

Si l'écran cPanel affiche déjà le préfixe public_html/ devant le champ, saisir seulement le nom du domaine correspondant. Le résultat doit être exactement celui du tableau. Les deux dossiers sont frères ; ne pas imbriquer le dossier du registre dans celui du portail.

Le DNS des deux noms doit pointer vers le serveur. Le certificat TLS doit couvrir chacun des deux noms exacts ; un certificat générique couvrant seulement *.studiochampgauche.com ne couvre pas area.wpregistry.studiochampgauche.com. Activer et forcer HTTPS sur les deux domaines. Cette disposition reste sous public_html et ne demande pas d'autoriser une racine web extérieure dans WHM.

Les deux dossiers publics contiennent uniquement les points d'entrée et les fichiers de présentation. Le code applicatif, les templates PHP, registry-private, la configuration et les archives restent hors de public_html. Les entrées PHP utilisent des chemins fixes ; aucun paramètre envoyé par un visiteur ne choisit le fichier de configuration.

Le ZIP ne supprime aucun dossier et n'écrase pas config.php. Pour une réinstallation sur des données conservées, vérifier url et public_dir dans ce fichier ; conserver les clés existantes. Un registre ayant déjà publié des versions ou distribué des clients sous une autre origine nécessite une migration explicite avant de changer son origine.

3. Permissions et PHP

ÉlémentPermissions
registry-private/0700
Configuration et clés privées0600
Dossiers de l'application et du domaine0755
Fichiers PHP/CSS/JS de l'application et du domaine0644

Le ZIP encode ces permissions, mais les contrôler après extraction dans cPanel. Ne pas appliquer 0755 à tous les fichiers. Les archives distribuées sont stockées dans le dossier privé puis servies par l'application ; leur stockage privé n'en fait pas des téléchargements confidentiels.

Sélectionner sur les deux domaines une version PHP maintenue, avec curl, pdo_mysql, sodium, zip, mbstring et json. L'espace éditeur utilise aussi Argon2id pour les mots de passe. Le PHP de la ligne de commande doit disposer des mêmes extensions et fonctionnalités. Aucun WordPress, Node ou Composer n'est nécessaire pour héberger le portail et le registre.

4. Renseigner la configuration

Dans registry-private, copier config.example.php sous le nom config.php, puis ouvrir cette copie. Son emplacement permet de déterminer automatiquement le dossier du compte ; aucun remplacement de /home/TON_COMPTE n'est nécessaire dans ce fichier.

Créer une base dédiée et ses utilisateurs dans cPanel, puis renseigner :

  • dsn : remplacer REPLACE_DATABASE_NAME par le nom complet de la base.
  • db_user / db_password : accès API aux tables publiques uniquement, avec droits de compteur sur ur_rate.
  • db_writer / db_writer_password : accès de l'application de publication et des commandes opérateur.
  • operators : noms d'utilisateurs Directory Privacy autorisés à la modération. L'exemple utilise studio ; ce n'est pas un mot de passe.
  • publisher_mail_from : adresse d'expédition autorisée par le système de messagerie local du serveur.
  • publisher_notice_to : adresse privée à laquelle recevoir les notifications de nouvelles publications.
  • publishers : l'exemple attribue WP Registry, Universal SMTP, Universal Legal Pages et le thème ReactWP à l'utilisateur Directory Privacy studio. Adapter ces attributions exactes pour vos propres projets ; elles permettent aussi de publier dans /manage/ dès l'installation.

Ne pas transmettre les accès MySQL dans le navigateur, les fichiers publics ou un dépôt Git. La configuration privée est lue automatiquement ; UR_CONFIG reste une option pour un opérateur qui souhaite définir explicitement un autre emplacement privé.

Après création des tables, donner à l'utilisateur API SELECT sur ur_state, ur_projects, ur_packages, ur_releases, ur_translations, ur_imports et ur_publisher_project_state, puis SELECT, INSERT et UPDATE sur ur_rate. Ne lui donner aucun accès aux tables de comptes, mots de passe, sessions ou codes. Les droits par table peuvent nécessiter l'administration MySQL/WHM si l'écran cPanel ne propose que des droits sur toute la base.

L'utilisateur de publication a besoin de CREATE pour les deux commandes d'initialisation, puis de SELECT, INSERT, UPDATE et DELETE sur cette base dédiée. Ne pas lui donner accès aux bases des autres sites.

5. Initialiser

Dans le terminal du compte cPanel :

cd ~/wp-registry-server
php cli.php init
php cli.php publishers-init
php cli.php status

Si la commande php correspond à une autre version, utiliser le chemin du PHP sélectionné pour ce compte. Ces commandes initialisent la base, le stockage et les clés privées ; ces clés ne sont pas fournies dans l'archive.

6. Protéger l'administration

Les quatre espaces partagent une présentation noire et blanche. /manage/ porte le titre Publications internes : projet attribué, nouvelle version, champs regroupés par sujet, archive et historique. /publish/ est l'Espace éditeur et /moderate/ la Modération. Ces différences de présentation ne modifient pas leurs droits.

Dans Directory Privacy de cPanel, protéger les dossiers physiques public_html/area.wpregistry.studiochampgauche.com/manage et public_html/area.wpregistry.studiochampgauche.com/moderate. Créer l'utilisateur opérateur indiqué dans operators et choisir son mot de passe dans cPanel.

L'espace /publish/ est celui des éditeurs externes et possède son propre système de connexion. Il doit rester accessible pour l'inscription et la connexion. Le système exige la vérification du courriel avant publication.

L'ancien /manage/ reste disponible pour les éditeurs dont les autorisations exactes sont configurées dans publishers. La modération générale se trouve dans /moderate/.

7. Alimenter le registre

php cli.php import-catalog --type=plugin --pages=10
php cli.php import-catalog --type=theme --pages=10
php cli.php sync-packages --limit=10
php cli.php status

Répéter les commandes d'import par tâches cron selon les capacités du compte. Elles reprennent la progression. Vérifier séparément la complétude des fiches et celle des archives avant d'annoncer un miroir complet. La création publique de nouveaux projets peut être suspendue pendant le premier inventaire pour protéger les noms de projets déjà existants mais pas encore importés.

Le cœur WordPress reste mis à jour par WordPress lui-même. Le registre importe uniquement les extensions, les thèmes et leurs traductions. Les instructions détaillées figurent dans wp-registry-server/README.md.

8. Créer le plugin à distribuer

Après initialisation :

php cli.php build-client --source=client-template --output=../registry-private/wp-registry-0.3.0.zip
php cli.php publish --metadata=client-release.json --archive=../registry-private/wp-registry-0.3.0.zip

Ouvrir https://wpregistry.studiochampgauche.com/ : le bouton Télécharger WP Registry télécharge maintenant ce ZIP configuré. Le portail ne génère pas le plugin à la demande ; il sert uniquement le fichier créé par l'opérateur après vérification de son identité de registre. Une version publiée et disponible de WP Registry devient prioritaire sur ce ZIP initial. Le plugin est nommé WP Registry, version 0.3.0, dans le dossier wp-registry/, avec le fichier principal wp-registry/init.php. Installer et activer le téléchargement sur un WordPress de préproduction. Son adresse de registre et sa clé publique sont intégrées. En multisite, utiliser l'activation réseau.

Le portail affiche une page d'accueil dès le dépôt des fichiers, même avant la configuration. Le catalogue et les téléchargements signalent leur indisponibilité tant que la base, les imports ou le plugin ne sont pas prêts. Après import et publication, ses résultats proviennent de la même base que les écrans WordPress reliés au registre ; les archives absentes, les versions retirées et les projets suspendus ne deviennent pas des offres installables.

Avant l'ouverture, vérifier sur cet hébergement les courriels d'activation, la connexion, l'isolation de deux comptes éditeurs, les droits de modération, les tâches cron, puis une publication et une mise à jour sur le site de préproduction. Le dépôt de fichiers ne constitue pas à lui seul une validation du serveur réel.

Le parcours complet d'inscription, les différences entre versions, les quotas et les outils de modération sont décrits dans wp-registry-server/PUBLISHERS.fr.md, avec les réglages d'isolation du service.

9. Mettre à jour une installation existante

Le changement de nom utilise ce kit complet et les deux nouveaux domaines. Consulter le guide de migration avant de remplacer une installation existante : conserver registry-private, la base et les clés ; adapter la configuration et les tâches cron ; reconstruire le ZIP pour la nouvelle adresse ; remplacer l'ancien plugin sur les sites connectés. Ne pas utiliser une ancienne archive de mise à jour visuelle. Le kit n'effectue aucune migration ni suppression de données automatiquement.