# Un site et sa base de données

> Un site ou une API en Node.js, une base PostgreSQL dans le même projet, des migrations au démarrage et ton domaine en HTTPS.

Source : https://docs.arkya.gg/guides/site-web

Ce guide met en ligne une application web et sa base, reliées par le réseau privé du projet. L’exemple est en Node.js ; la démarche est la même pour PHP, Python ou Go.

## 1. Le manifeste

Depuis le dossier de ton site, crée l’application, puis déclare la base :

```bash
ark init --app boutique --project Boutique
```

```json arkya.json
{
  "app": "boutique",
  "dockerfile": "Dockerfile",
  "context": ".",
  "project": "Boutique",
  "start": "./start.sh",
  "services": {
    "db": { "type": "postgres", "size": { "cpu": 1, "ram": 1, "disk": 10 } }
  },
  "env": {}
}
```

```bash
ark plan --apply
```

La base s’appelle `boutique-db`. Note son mot de passe : `ark` l’affiche une seule fois.

## 2. Les migrations au démarrage

`start` remplace la commande de l’image par un script qui migre, puis lance le serveur :

```bash start.sh
#!/bin/sh
set -e
npx prisma migrate deploy
exec node server.js
```

Rends-le exécutable avant de construire : `chmod +x start.sh`. Le `exec` final passe le signal d’arrêt au serveur.

## 3. La connexion à la base

Dans l’espace client, onglet **Variables** de `boutique` :

```dotenv
DATABASE_URL=postgres://arkya:MOT_DE_PASSE@${boutique-db.URL}/boutique_db
```

Marque la variable comme secrète. `${boutique-db.URL}` devient l’adresse interne de la base, `hôte:port`, à chaque démarrage.

## 4. Déployer

```bash
ark deploy
```

Ton site répond sur son adresse `arkya.app`, en HTTPS.

## 5. Ton domaine

Dans l’onglet **Domaines** de `boutique`, ajoute `www.maboutique.fr`, puis pose chez ton registrar le `CNAME` affiché. Le certificat suit tout seul. Voir [Adresse et domaines](https://docs.arkya.gg/applications/domaines).

## 6. Les sauvegardes

Active les sauvegardes automatiques de `boutique-db`, dans son onglet **Sauvegardes**. Elles sont coupées par défaut. Voir [Sauvegardes d’une base](https://docs.arkya.gg/bases-de-donnees/sauvegardes).

## Les fichiers envoyés par tes visiteurs

Ton application n’a pas de disque : une image envoyée par un visiteur disparaît au prochain déploiement. Range ces fichiers dans un stockage objet externe, compatible S3, et garde leur adresse en base.
