# Brancher une application sur sa base

> Le cas le plus courant, de la création à la première requête.

Une application et sa base de données, dans le même projet, sans jamais ouvrir la base sur
Internet. C'est le scénario que le canevas a été dessiné pour rendre évident.

```mermaid
flowchart LR
  I["Internet"] -. bloqué .-x DB
  I --> APP
  subgraph P["Projet — réseau privé"]
    APP["crm<br/>application"] -->|"${crm-db.URL}"| DB[("crm-db.arkya.internal<br/>PostgreSQL")]
  end
```

## 1. Pose la base

<Steps>
  <Step title="Ajoute un service">
    Sur le canevas du projet, **Ajouter un service**, puis **Base de données**. Choisis le
    moteur — PostgreSQL, MySQL ou Redis.
  </Step>
  <Step title="Nomme-la pour ce qu'elle sert">
    `crm-db` plutôt que `postgres1` : ce nom **devient son adresse interne** —
    `crm-db.arkya.internal` — et c'est lui que tu écriras dans l'application.
  </Step>
  <Step title="Valide">
    Le mot de passe est généré et affiché une fois. Tu n'as pas besoin de le noter : la
    suite s'en passe.
  </Step>
</Steps>

La base apparaît sur le canevas, **fermée sur Internet**. C'est voulu : personne d'autre
que ses voisins de projet ne la joint.

## 2. Branche l'application

Ouvre l'application, onglet **Variables**, et écris la référence plutôt que l'adresse :

```
DATABASE_URL = ${crm-db.URL}
```

<Warning>
Ne copie pas la chaîne de connexion à la main. Elle contient le mot de passe, elle finira
dans un dépôt Git, et elle deviendra fausse le jour où le port change. La référence, elle,
suit.
</Warning>

Enregistre, puis **redémarre l'application** : un processus déjà lancé ne relit pas son
environnement.

## 3. Vérifie

Trois signes, dans cet ordre :

1. **Une flèche apparaît sur le canevas**, de l'application vers la base, étiquetée
   `DATABASE_URL`. Si elle n'apparaît pas, la référence est mal écrite.
2. **Les journaux de l'application** ne parlent plus de connexion refusée.
3. **L'onglet Données de la base** montre les tables que ton application vient de créer.

## 4. Travaille dans la base

L'onglet **Données** de la base ouvre les tables et une console SQL, sans client à
installer et sans rien ouvrir. C'est là que tu regardes une ligne, corriges une valeur,
ajoutes un index.

<Tip>
Garde la base fermée. Si tu as vraiment besoin d'un client sur ton poste — un outil de
migration, par exemple — ouvre le réseau le temps de l'opération et
[referme](/espace-client/cas/fermer-sur-internet) ensuite.
</Tip>
