Tout ce qu’il faut pour démarrer
Connectez un site en moins d’une minute et configurez votre stockage de sauvegarde en 10 minutes environ. Vous trouverez aussi comment afficher vos valeurs, restaurer un site, utiliser l’API et résoudre les problèmes courants.
Connecter un site
Trois étapes, aucune configuration serveur.
- 01
Créez le site dans le Hub
Sites → Connecter un site. Renseignez l’URL, le Hub génère un code d’installation à usage unique.
- 02
Installez l’extension
Téléchargez l’archive, puis Extensions → Ajouter → Téléverser dans votre WordPress. Activez-la.
- 03
Collez le code
Réglages → WP Control Hub, collez le code, validez. Le Hub détecte la connexion automatiquement.
Avec WP-CLI
Si vous gérez vos sites en ligne de commande, une seule commande suffit :
wp wpch connect WPCH-7K2P-9QX4Hub auto-hébergé
L’extension pointe par défaut vers le service hébergé. Pour un autre Hub, définissez la constante dans wp-config.php :
define( 'WPCH_HUB_URL', 'https://hub.mondomaine.fr' );Afficher une valeur
Quatre méthodes selon votre éditeur ou votre thème. Toutes utilisent le même cache local, sans requête réseau au chargement d’une page.
Shortcode
Dans un article, une page, un widget ou un constructeur de pages.
[wpch_value key="company.phone"]PHP
Dans un gabarit de thème. Renvoie la chaîne déjà formatée et échappée.
<?php echo wpch_get_value( 'company.phone' ); ?>Bloc Gutenberg
Ajoutez le bloc « Valeur WP Control Hub » et choisissez la clé dans la liste.
Elementor
Dans n’importe quel champ texte, cliquez sur l’icône de contenu dynamique et choisissez « Valeur WP Control Hub ».
Attributs et options
default: Texte affiché si la valeur est vide.format: raw (défaut), html, ou link. Le format link produit un lien tel:, mailto: ou href selon le type.
[wpch_value key="company.email" format="link" default="-"]Valeur brute
Pour les types structurés (adresse, horaires, liste, JSON), récupérez la donnée plutôt que son rendu :
<?php $hours = wpch_get_raw( 'company.opening_hours' ); ?>Héritage des valeurs
Une valeur peut être définie à trois niveaux. La plus spécifique est prioritaire.
- Valeur propre au site
- Valeur du groupe le plus prioritaire
- Valeur de l’organisation
- Valeur par défaut de la variable
Si un site appartient à plusieurs groupes, celui dont la priorité est la plus élevée l’emporte. À priorité égale, le groupe le plus ancien est retenu. La résolution est déterministe : le même déploiement produit toujours le même résultat.
Vide volontaire
Effacer une valeur la fait hériter du niveau supérieur. Pour dire « ce site n’a pas de numéro », marquez-la comme volontairement vide : la chaîne d’héritage s’arrête là.
Sauvegardes et restauration
Chaque nuit, chaque site chiffre sa base de données et son wp-content, puis les dépose dans un espace de stockage qui vous appartient. Le hub programme, vérifie et restaure ; il ne détient jamais les archives.
Où sont stockées les archives ?
Les archives sont envoyées directement de vos sites vers votre stockage, sans transiter par nos serveurs. Aucune offre ni option ne comprend de stockage hébergé par WP Control Hub.
Ce que le hub conserve
- L’inventaire : quel site, quelle date, complète ou incrémentale, et de quelle chaîne l’archive fait partie.
- La taille de chaque morceau et son empreinte SHA-256, relevées avant l’envoi puis comparées à ce que le stockage annonce.
- L’emplacement exact des objets dans votre stockage, pour les retrouver lors d’une restauration.
- Les identifiants de la destination, chiffrés au repos. Le hub les utilise pour signer chaque envoi, avec une validité de cinq minutes limitée à un seul objet. Ils ne sont jamais stockés sur un site WordPress. Vous pouvez les révoquer chez votre fournisseur à tout moment.
- Le journal d’activité : qui a lancé, annulé, supprimé ou restauré, et depuis quelle adresse.
Ce que le hub ne conserve jamais
- Les archives elles-mêmes. Elles sont envoyées directement de votre site vers votre stockage, sans transiter par nos serveurs. Nous ne les téléchargeons pas.
- Le contenu de vos bases de données, donc les données personnelles de vos visiteurs et les empreintes de mots de passe de vos utilisateurs.
- wp-config.php, qui n’est pas sauvegardé du tout : seules les constantes utiles sont relevées une par une, pour ne pas déposer un mot de passe de base dans un bucket.
- Une destination hébergée par WP Control Hub. Chaque destination appartient à une organisation cliente.
Gestion de la clé de chiffrement
Par défaut, le hub conserve la clé de votre organisation, chiffrée au repos, pour restaurer une sauvegarde sans vous demander de clé. Il détient alors la clé de déchiffrement, mais pas les archives. En mode phrase secrète, la clé est dérivée d’un secret auquel nous n’avons jamais accès. Si vous perdez cette phrase, vos archives deviennent illisibles. L’interface indique toujours le mode utilisé.
Choisir une destination
Deux destinations sont possibles, avec des protections différentes. Chaque politique de sauvegarde définit sa destination. Vous pouvez utiliser les deux : le disque du site pour annuler une mise à jour défaillante et votre stockage externe pour les autres sauvegardes.
Votre stockage externe
L’archive est stockée hors de l’hébergement du site. Le hub vérifie chaque morceau auprès du fournisseur, y compris sa taille et son empreinte. Ce contrôle permet d’afficher « Vérifiée par le hub ». Comptez 10 minutes de configuration et quelques euros par mois.
Le disque du site lui-même
Aucun compte de stockage ni paiement supplémentaire : la première sauvegarde peut être lancée tout de suite. L’archive reste chiffrée sur l’hébergement du site. Avant chaque sauvegarde, le site vérifie que le dossier des archives n’est pas accessible depuis Internet.
Les limites du stockage sur le site
- En cas de panne du serveur, les sauvegardes sont touchées comme le reste du site.
- Si l’hébergeur suspend le compte, les archives ne sont plus accessibles non plus.
- En cas d’intrusion, les sauvegardes se trouvent sur le même serveur et peuvent être supprimées.
- La sauvegarde de sécurité prise avant une restauration est stockée sur ce même serveur, avec les mêmes limites.
Comment les sauvegardes sont vérifiées
Le hub vérifie la présence des sauvegardes directement auprès de votre fournisseur de stockage. Il ne peut pas accéder au disque du site, protégé par un pare-feu. Une sauvegarde stockée sur le site porte donc la mention « Déclarée intacte par le site », jamais « Vérifiée par le hub ». Le hub demande au site de relire une partie précise de l’archive, puis compare l’empreinte renvoyée à celle enregistrée au moment de la sauvegarde. Ce contrôle détecte les archives supprimées, incomplètes ou abîmées, mais ne protège pas contre un site dont quelqu’un d’autre aurait pris le contrôle. La réponse est datée et expire après deux cycles ; l’interface indique alors que l’état est inconnu.
Blocage si les archives sont accessibles
Avant chaque sauvegarde locale, le site écrit un fichier témoin dans le répertoire des archives et tente de le récupérer par HTTP. Si le fichier est accessible ou si le test ne permet pas de conclure, la sauvegarde est bloquée et aucune archive n’est écrite. Une archive téléchargeable exposerait wp-config.php et la base complète du site. Ce contrôle est obligatoire. Le chiffrement reste actif et ne peut pas être désactivé pour cette destination.
Surveiller l’espace disque
Les archives locales occupent le quota d’hébergement de votre client. L’onglet Sauvegardes de chaque site affiche ce qu’elles occupent aujourd’hui, ce que la conservation prévue occupera, et l’espace libre annoncé par l’hébergement. Le tableau de bord du parc compte, lui, les sites qui n’ont aucune copie hors site.
Configurer un bucket
Un site ne peut pas sauvegarder tant que son organisation n’a pas de destination validée. Comptez dix minutes la première fois.
- 01
Créez un bucket privé
Chez Backblaze B2, Scaleway, Wasabi, OVH, Amazon S3 ou votre propre MinIO, dans la région de votre choix. Aucun accès public, et de préférence un bucket dédié aux sauvegardes.
- 02
Créez une clé d’accès restreinte
Restreinte à ce seul bucket, avec quatre droits : PutObject, GetObject, ListBucket et DeleteObject. Rien d’autre n’est nécessaire.
- 03
Déclarez la destination
Sauvegardes → Destinations → Ajouter. Fournisseur, région, nom du bucket, préfixe facultatif, identifiant et secret. Le secret est chiffré à l’enregistrement.
- 04
Testez la connexion
Il écrit un objet, le relit, le supprime, et affiche le résultat. Une destination qui n’a pas passé ce test ne peut pas être rattachée à une politique.
Droits minimum de la clé
La politique ci-dessous suffit. Remplacez le nom du bucket et, si vous en utilisez un, le préfixe.
{
"Version": "2012-10-17",
"Statement": [
{ "Effect": "Allow",
"Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"],
"Resource": "arn:aws:s3:::mon-bucket/wpch/*" },
{ "Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": "arn:aws:s3:::mon-bucket" }
]
}Activez le versioning
Sur un bucket sans versioning, un effacement ou une réécriture est définitif. C’est la meilleure protection contre un rançongiciel qui atteindrait aussi vos sauvegardes. Le hub détecte l’état du versioning et affiche un avertissement quand il est désactivé.
Ce qui se passe chaque nuit
Le site exécute la sauvegarde ; le hub autorise les envois et vérifie les résultats. Le processus est conçu pour reprendre après l’interruption d’une requête PHP.
- Une politique s’applique à une organisation, un groupe ou un site, comme une valeur de contenu. Elle définit le créneau, la fréquence, la durée de conservation et la destination. Un site ajouté au groupe bénéficie de cette politique le soir même.
- Le site découpe, compresse et chiffre sa base et son wp-content en morceaux, et les envoie un par un avec des URL signées par le hub pour cinq minutes. Chaque étape enregistre sa progression avant de rendre la main, et reprend là où elle s’était arrêtée.
- À la fin, le hub vérifie auprès du stockage la présence, la taille et l’empreinte de chaque objet. La sauvegarde est marquée comme vérifiée uniquement après ce contrôle, indépendamment du résultat annoncé par le site.
- Un contrôle indépendant du processus de sauvegarde signale sous vingt-quatre heures les sites qui ne sauvegardent plus. Il détecte aussi les sauvegardes qui n’ont jamais démarré.
Ce que fait une restauration
Restaurer réécrit des fichiers et des tables sur un site en production. La capacité est réservée aux administrateurs, et chaque étape est annoncée avant d’être exécutée.
- L’écran annonce ce qui sera écrasé, et attend une confirmation explicite.
- Une sauvegarde de sécurité de la base est prise avant la première écriture, et verrouillée contre la suppression.
- Chaque étape destructrice écrit son intention dans un journal avant d’agir, ce qui rend le retour en arrière possible même après une interruption.
- Trois résultats possibles : restauration terminée, retour à l’état précédent ou « à vérifier », avec la liste des fichiers et des tables concernés. Seule une restauration terminée est indiquée comme réussie.
- Le contenu géré par le hub se resynchronise ensuite : vous ne restaurez pas le numéro de téléphone du mois dernier avec le site.
Limites des sauvegardes
Ces limites sont liées à la conception du système. Elles ne correspondent pas à des correctifs en attente.
Pas de cohérence à l’instant près
Une sauvegarde de 2 Go sur un hébergement mutualisé s’étale sur des heures. Le manifeste indique l’heure de début et de fin de chaque table, et l’interface affiche la durée réelle. Un fichier téléversé entre le parcours des fichiers et l’export de la base peut être référencé dans un article sans figurer dans l’archive.
Ni le cœur de WordPress, ni wp-config.php
Le cœur de WordPress peut être téléchargé à nouveau ; sa version exacte figure dans le manifeste. Pour éviter de conserver les identifiants de wp-config.php, seules les constantes utiles sont relevées : préfixe de tables, constantes multisite, chemins et mémoire. Le fichier lui-même est exclu.
Pas de restauration d’un article isolé
L’extracteur n’interprète pas le SQL et ne peut donc pas isoler une ligne. Il faut restaurer la table sous un préfixe temporaire, puis recopier la ligne souhaitée. La commande est documentée.
Votre stockage reste sous votre contrôle
Une règle de cycle de vie, une politique trop stricte ou une clé supprimée peuvent rendre des archives indisponibles. La vérification nocturne détecte ces changements sous vingt-quatre heures, sans détection immédiate.
Modifications non sauvegardées
Une restauration ne récupère pas les données créées ou modifiées entre la dernière sauvegarde réussie et l’incident.
API
L’API REST utilise une clé d’authentification, à créer dans Paramètres → Clés API. Les autorisations de chaque clé sont définies explicitement.
Authentification
curl -H "Authorization: Bearer wpch_live_…" \
https://wpcontrolhub.app/api/v1/sitesPoints d’entrée
| GET /api/v1/sites | Liste des sites |
| GET /api/v1/sites/:id | Détail d’un site |
| GET /api/v1/variables | Liste des variables |
| GET /api/v1/values?siteId=… | Valeurs résolues pour un site |
| POST /api/v1/values | Modifier une valeur (crée un déploiement) |
| GET /api/v1/deployments | Liste des déploiements |
| POST /api/v1/deployments/:id/rollback | Annuler un déploiement |
Webhooks
Chaque livraison est signée en HMAC-SHA256. Vérifiez l’en-tête avant de traiter le corps :
const expected = crypto
.createHmac('sha256', secret)
.update(`${timestamp}.${rawBody}`)
.digest('hex');
// compare with the x-wpch-signature header (sha256=…)Résoudre un problème
Retrouvez les causes les plus fréquentes et les actions à effectuer. La page Santé de chaque site affiche le diagnostic correspondant.
Le site est joignable mais le Hub reçoit un 403
Un pare-feu applicatif (Wordfence, Sucuri, Cloudflare, ModSecurity) bloque les appels entrants vers l’API REST. Autorisez la route /wp-json/wpch/v1/ ou l’adresse IP du Hub. Ce n’est pas bloquant : le site continue de récupérer ses valeurs par lui-même à chaque cycle.
Signature refusée
Les requêtes sont signées avec un horodatage toléré à 5 minutes. Si l’horloge du serveur WordPress dérive au-delà, toutes les signatures sont rejetées. Vérifiez la synchronisation NTP du serveur.
Extension introuvable (404)
L’API REST du site répond mais la route n’existe pas : l’extension est désactivée, supprimée, ou l’API REST est bloquée par un plugin de sécurité.
La valeur a changé dans le Hub mais pas sur la page
Un cache de page (WP Rocket, LiteSpeed, W3 Total Cache, Cloudflare) sert encore l’ancienne version. Videz le cache du site. La page Santé indique la version réellement appliquée par l’extension.
Le Hub est indisponible
Les valeurs déjà reçues restent stockées dans WordPress et continuent de s’afficher. Aucune page ne se vide, aucun contenu ne disparaît. Les modifications en attente reprennent dès le retour du service.
Prêt à connecter votre premier site ?
Gratuit, sans carte bancaire, jusqu’à 1 000 sites.