> For the complete documentation index, see [llms.txt](https://docs.kiloiot.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kiloiot.io/kilo-docs-fr/kilo-center/kilo-mioty-service-center/getting-started/installation-docker-compose.md).

# Installation : Docker Compose

Installez KiloCenter avec Docker Compose — démarrez la pile MIOTY à quatre services, y compris KC-Web, sans chaîne d’outils hôte.

### Objectif

Démarrez une pile locale de travail à l'aide de Docker Compose. La pile complète — y compris KC-Web — s'exécute entièrement dans des conteneurs. Aucun outil Go hôte ni runtime Bun n'est requis.

### Étape 1 : Configurer l'environnement

Depuis `kilocenter-modules/`:

```bash
cp .env.example .env
```

Modifier `.env` si vous souhaitez modifier les identifiants de la base de données ou le niveau de journalisation. Les valeurs par défaut conviennent pour une évaluation locale.

### Étape 2 : Générer les certificats TLS

KC-Core nécessite des certificats TLS pour BSSCI et SCACI. Générez-les à l'aide du `certgen` service intégré à l'image KC-Core :

```bash
docker compose run --rm certgen
```

> **Propriété des fichiers (Linux) :** Si les fichiers générés appartiennent à root, relancez avec `UID=$(id -u) GID=$(id -g)` préfixé.

Cela crée quatre fichiers dans `KC-Core/certificates/`:

| Fichier      | Objectif                                                                                  |
| ------------ | ----------------------------------------------------------------------------------------- |
| `ca.crt`     | Certificat CA (à distribuer aux stations de base)                                         |
| `ca.key`     | Clé privée de l'AC (à conserver en sécurité, utilisée pour signer les certificats client) |
| `server.crt` | Certificat serveur (utilisé par les écouteurs TLS BSSCI/SCACI de KC-Core)                 |
| `server.key` | Clé privée du serveur                                                                     |

Pour un FQDN de production, transmettez `-server`:

```bash
docker compose run --rm certgen -dir /app/certificates -days 365 -server bssci.example.com
```

> **Important :** KC-Core ne parviendra pas à démarrer sans ces certificats. Consultez la page Sécurité pour la référence complète des options certgen, le renouvellement des certificats et la génération des certificats client.

### Étape 3 : Démarrer tous les services

```bash
docker compose up --build -d
```

Cela construit et démarre les sept services d'exécution. Les démarrages suivants après une reconstruction utilisent les couches mises en cache lorsque c'est possible.

### Étape 4 : Valider le démarrage

```bash
# Vérifier que tous les services sont opérationnels
docker compose ps

# Santé de KC-Core
curl -s http://localhost:8086/health

# Santé de KC-Gateway
curl -s http://localhost:8087/health

# Vérifier le proxy gRPC-web nginx (200/401/403 = OK ; 502/404 = proxy défaillant)
curl -s -o /dev/null -w "%{http_code}" \
  -X POST \
  -H "Content-Type: application/grpc-web+proto" \
  -H "X-Grpc-Web: 1" \
  --data-binary $'\x00\x00\x00\x00\x00' \
  http://localhost/kilocenter.api.v1.KiloCenterService/GetSystemStatus
```

Puis ouvrez KC-Web dans votre navigateur :

* <http://localhost/>

> **Remarque :** L'intégration MQTT est désactivée par défaut. Le broker Mosquitto s'exécute dans Docker, mais KC-Core ne s'y connecte pas tant que vous n'activez pas MQTT dans `config/config.docker.yaml`. Consultez Premiers pas MQTT lorsque vous serez prêt à configurer MQTT.

### Arrêter tous les services

```bash
docker compose down
```

Pour supprimer également les volumes de données persistantes :

```bash
docker compose down -v
```

***

### Mode de développement à partir des sources

Pour les contributeurs qui souhaitent exécuter KC-Core, KC-Gateway et KC-Web à partir des sources :

#### Étape 1 : Démarrer les conteneurs d'infrastructure

```bash
docker compose up -d postgres redis mosquitto
```

Cela démarre PostgreSQL (mappé sur le port hôte 5433), Redis (6379) et Mosquitto (1883).

#### Étape 2 : Générer les certificats TLS

Identique à ci-dessus — utilisez le `certgen` service compose :

```bash
docker compose run --rm certgen
```

#### Étape 3 : Installer les dépendances de KC-Web

Depuis `kilocenter-modules/KC-Web/`:

```bash
bun install
```

#### Étape 4 : Démarrer tous les services depuis les sources

Depuis `kilocenter-modules/`:

```bash
./start-dev.sh
```

Cela construit et démarre KC-Core, KC-Gateway et KC-Web. Les journaux sont écrits dans `logs/runtime/`. KC-Web est disponible à `http://localhost:5173`.

#### Arrêter les services depuis les sources

```bash
./stop-all-services.sh

# Arrêter les conteneurs d'infrastructure
docker compose stop postgres redis mosquitto
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.kiloiot.io/kilo-docs-fr/kilo-center/kilo-mioty-service-center/getting-started/installation-docker-compose.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
