# Addons gérés : Postgres et Redis

Source: https://support.kapsulehost.com/fr-fr/site-addons

L'onglet Extensions vous permet d'associer une base de données PostgreSQL gérée ou une instance Redis gérée à un site, sans avoir à construire ni à entretenir de serveur pour cela. KapsuleHost la provisionne, vous fournit une chaîne de connexion, et la démonte proprement lorsque vous la supprimez.

## Où se trouvent les extensions

Ouvrez **Sites web**, cliquez sur le site, ouvrez le groupe **Applications** dans le menu de gauche du site, puis choisissez **Extensions**. La page s'intitule **Extensions gérées**.

Deux options figurent dans le catalogue :

| Extension | Usage typique |
|---|---|
| PostgreSQL | Le magasin de données principal pour une application qui n'est pas sur MySQL |
| Redis | Mise en cache, stockage de sessions et files d'attente de tâches en arrière-plan |

Celles-ci sont distinctes de la base de données MySQL fournie avec un site d'hébergement standard. Celle-là se trouve dans l'onglet **Base de données** et ne nécessite aucun provisionnement : voir [Se connecter à votre base de données via un tunnel SSH](https://support.kapsulehost.com/fr-fr/database-ssh-tunnel).

![Page des extensions gérées pour un site dans KPanel](https://support.kapsulehost.com/help/screenshots/site-addons.3f3b5ee3.webp)

## Demander une extension

1. Trouvez l'extension dans la section **Ajouter une base de données gérée**.
2. Cliquez sur **Ajouter au site**.

La demande est enregistrée immédiatement et l'extension apparaît dans **Vos extensions** avec un badge **PENDING** et la mention *En attente du provisionneur*. La page s'actualise automatiquement toutes les quinze secondes, vous pouvez donc la laisser ouverte.

Une tâche en arrière-plan traite les demandes en attente toutes les quelques minutes, crée une base de données dédiée et un utilisateur dédié pour votre site, puis écrit une chaîne de connexion chiffrée. Le statut passe alors à **ACTIVE**.

> **Note:** Demander ou supprimer une extension nécessite la permission **sites:write**. Les membres d'équipe en lecture seule peuvent voir quelles extensions existent ainsi que leur statut, mais les boutons sont masqués.

### Une de chaque, par site

Un site peut héberger une extension PostgreSQL et une extension Redis. Demander une deuxième extension du même type est refusé, avec un message indiquant qu'elle est déjà provisionnée, et le catalogue masque une option une fois qu'elle est installée. Lorsque les deux sont installées, la section du catalogue affiche **Toutes les extensions disponibles sont installées**.

## Lire le statut

| Statut | Signification |
|---|---|
| PENDING | Demandée, en attente dans la file du provisionneur |
| PROVISIONING | En cours de création |
| ACTIVE | Prêt à l'emploi |
| FAILED | Le provisionnement ne s'est pas terminé ; la raison est affichée sur la ligne |
| DELETED | Supprimée, n'apparaît plus dans la liste |

Une ligne **FAILED** affiche le texte d'erreur réel en dessous, plutôt qu'un message générique. Si la raison n'est pas quelque chose sur lequel vous pouvez agir, citez-la mot pour mot dans un ticket d'assistance : voir [Ouvrir un ticket d'assistance](https://support.kapsulehost.com/fr-fr/opening-a-support-ticket).

## Obtenir la chaîne de connexion

Une fois qu'une extension est **ACTIVE**, sa ligne affiche une chaîne de connexion masquée, avec le mot de passe remplacé par des points, afin que vous puissiez vérifier l'hôte et le nom de la base de données d'un coup d'œil sans exposer les identifiants.

Cliquez sur **Copier la connexion** pour placer la chaîne de connexion complète dans votre presse-papiers. Elle est déchiffrée côté serveur pour cette seule requête et n'est jamais affichée sur la page, de sorte que les partages d'écran et les captures d'écran ne la divulguent pas. Chaque révélation est consignée dans le journal d'audit du site et apparaît dans le [Journal d'activité du site](https://support.kapsulehost.com/fr-fr/site-activity-log).

La chaîne est au format URL habituel pour chaque moteur, contenant l'hôte, le port, l'utilisateur, le mot de passe et le nom de la base de données créés pour ce site.

## L'utiliser dans votre application

Collez la chaîne de connexion à l'endroit où votre application lit sa configuration. Sur un site Node.js, l'emplacement approprié est l'onglet [Secrets](https://support.kapsulehost.com/fr-fr/site-secrets), sous une clé telle que `DATABASE_URL` ou `REDIS_URL`, dans l'environnement **production**.

> **Warning:** Ne codez pas la chaîne de connexion en dur dans un fichier que vous validez (commit). Elle contient un mot de passe actif. Si elle se retrouve sur un dépôt git distant, elle doit être considérée comme compromise, et la seule véritable solution est de supprimer l'extension et d'en demander une nouvelle, car l'identifiant ne peut pas être régénéré sur place depuis le panneau.

## Supprimer une extension

Cliquez sur **Delete** sur la ligne. KPanel vous demande de confirmer et est sans équivoque sur ce qui se passe : cela supprime la base de données gérée, et les données sont irrécupérables.

La ligne est marquée comme supprimée immédiatement, et le provisionneur démonte la base de données et l'utilisateur sous-jacents lors de son prochain passage. Les connexions existantes sont alors interrompues dans le cadre de ce démontage.

> **Important:** Aucune sauvegarde n'est effectuée d'une extension gérée lors de sa suppression, et il n'y a pas d'annulation possible. S'il y a quelque chose à conserver, exportez-le d'abord avec `pg_dump` ou `redis-cli --rdb` pendant que l'extension est encore active et que la chaîne de connexion fonctionne encore.

## Choisir entre les options

**Utilisez PostgreSQL** lorsque votre application a besoin d'une base de données relationnelle et qu'elle est écrite pour Postgres : contraintes fortes, transactions, colonnes JSON et recherche en texte intégral que vous devriez sinon ajouter vous-même.

**Utilisez Redis** pour les éléments qui peuvent disparaître : fragments mis en cache, compteurs de limitation de débit, stockage de sessions et files d'attente de tâches. Considérez-le comme rapide mais volatile, pas comme un système de référence.

**Utilisez la base de données MySQL intégrée** pour WordPress et pour tout ce qui est déjà écrit pour MySQL. Ajouter une extension Postgres à un site WordPress ne sert à rien, car WordPress ne peut pas communiquer avec elle.

## Dépannage

**L'extension est en PENDING depuis longtemps.** Le provisionneur fonctionne selon un planning plutôt qu'instantanément. Laissez la page ouverte, puisqu'elle s'actualise d'elle-même, et revenez vérifier plus tard. Si rien n'a changé après plusieurs passages, ouvrez un ticket d'assistance avec le domaine du site et le type d'extension.

**Le provisionnement a échoué (FAILED).** Lisez l'erreur affichée sur la ligne. Supprimez l'extension défaillante et redemandez-la, c'est sans risque : une ligne en échec n'a jamais eu de base de données active derrière elle.

**Copier la connexion ne fait rien.** Certains navigateurs bloquent les écritures dans le presse-papiers lorsque l'onglet n'est pas actif. Cliquez d'abord sur la page, puis cliquez à nouveau sur le bouton.

**L'application ne parvient pas à se connecter.** Vérifiez trois choses dans l'ordre : que le statut de l'extension est **ACTIVE**, que vous avez copié la chaîne plutôt que de la ressaisir, et que votre application lit bien la valeur que vous avez réellement définie plutôt qu'une valeur obsolète d'un déploiement précédent. Un redémarrage est généralement nécessaire avant que la nouvelle configuration ne soit prise en compte.

**Les connexions sont refusées après un redéploiement.** Vérifiez que la chaîne de connexion dans votre configuration correspond toujours à celle de cette page. Supprimer puis redemander une extension crée un nouvel utilisateur et un nouveau mot de passe, donc une ancienne chaîne ne fonctionnera plus.

## Pour aller plus loin

- [Stocker les secrets d'application pour un site](https://support.kapsulehost.com/fr-fr/site-secrets), l'endroit approprié pour conserver la chaîne de connexion.
- [Se connecter à votre base de données via un tunnel SSH](https://support.kapsulehost.com/fr-fr/database-ssh-tunnel) pour la base de données MySQL intégrée.
- [Paramètres du site](https://support.kapsulehost.com/fr-fr/site-settings) pour le reste de la configuration au niveau du site.
