Skip to content

Commit 601c3aa

Browse files
committed
Update README.md to enhance project documentation and clarify daemon functionality
1 parent fb8a171 commit 601c3aa

1 file changed

Lines changed: 119 additions & 50 deletions

File tree

README.md

Lines changed: 119 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -2,66 +2,135 @@
22
<a href="https://libertech-fr.github.io/sesame-daemon" target="blank"><img src="./static/sesame-logo.svg" width="200" alt="Sesame Logo" /></a>
33
</p>
44
<p align="center">Sésame daemon - Synchronisation d'Identités Multi-sources</p>
5-
<p align="center">
6-
<img alt="GitHub all releases" src="https://img.shields.io/github/downloads/libertech-fr/sesame-daemon/total">
7-
<img alt="GitHub" src="https://img.shields.io/github/license/libertech-fr/sesame-daemon">
8-
<img alt="GitHub contributors" src="https://img.shields.io/github/contributors/libertech-fr/sesame-daemon">
9-
<a href="https://github.com/Libertech-Fr/sesame-daemon/actions/workflows/release.yml?event=workflow_dispatch"><img alt="GitHub contributors" src="https://github.com/Libertech-Fr/sesame-daemon/actions/workflows/release.yml/badge.svg"></a>
10-
</p>
115
<br>
126

13-
# Sesame - Un outil de synchronisation des comptes utilisateur
147
## Description
158

16-
Daemon pour Sesame. Le demon est chargé d'executer les backends sur les ordres de l'orchestrator
17-
18-
## Architecture du projet
19-
[Figma](https://www.figma.com/file/OplQ0tHFHS5rFz5K6OCgEd/Sesame?type=whiteboard&node-id=0%3A1&t=ZiPEDwJPp0id8frN-1)
20-
21-
## Installation developpement
22-
un environnement de developpement est donné en docker
23-
24-
Copiez le dossier ./backends.example dans ./backends et ajouter vos backends dans ce dossier
25-
26-
### Docker
27-
#### contruisez l'image :
28-
dans ./docker
29-
````bash
30-
docker-compose build
31-
````
32-
Puis lancer le
33-
````bash
34-
docker-compose up -d
35-
````
36-
#### Installation
37-
````bash
38-
docker exec sesame-daemon yarn
39-
````
40-
#### Lancez l'application en mode dev ou debug
41-
copier .env.example en .env
42-
editer et regler les variable d'environnements
9+
Le **Sesame daemon** est le worker d’exécution de Sésame. Il se connecte à **Redis** et écoute une **queue BullMQ** (par défaut `sesame`). Lorsqu’un job arrive, il exécute l’action demandée via un **backend** (script/exécutable) présent dans un répertoire de backends.
10+
11+
## Architecture (vue rapide)
12+
13+
- **Daemon**: application NestJS lancée en *application context* (pas d’API HTTP), qui démarre un `Worker` BullMQ.
14+
- **Redis**: broker BullMQ (obligatoire).
15+
- **Backends**: dossiers contenant un `config.yml` décrivant le backend + les exécutables associés.
16+
17+
Ressource: [Figma](https://www.figma.com/file/OplQ0tHFHS5rFz5K6OCgEd/Sesame?type=whiteboard&node-id=0%3A1&t=ZiPEDwJPp0id8frN-1)
18+
19+
## Prérequis
20+
21+
- **Node.js** (CI en Node 18)
22+
- **Yarn** (le repo est en Yarn v1)
23+
- **Redis** accessible depuis le daemon
24+
25+
## Configuration (variables d’environnement)
26+
27+
Les variables effectivement utilisées par le daemon sont dans `src/config.ts`.
28+
29+
- **`SESAME_REDIS_URI`**: URI Redis (défaut `redis://localhost:6379/0`)
30+
- **`SESAME_NAME_QUEUE`**: nom de la queue BullMQ (défaut `sesame`)
31+
- **`SESAME_BACKENDS_PATH`**: chemin vers le répertoire des backends (défaut `./backends` à côté du code)
32+
- **`SESAME_LOG_LEVEL`**: niveau de logs (défaut `info`)
33+
- **`SESAME_BACKENDS_EXECUTOR_SHELL`**: configuration “shell” d’exécution (défaut: `true`)
34+
35+
Exemple minimal (copie de `.env.example`) :
36+
37+
```bash
38+
SESAME_REDIS_URI=redis://localhost:6379/0
39+
```
40+
41+
## Backends
42+
43+
### Structure attendue
44+
45+
Le daemon **scanne récursivement** `SESAME_BACKENDS_PATH` et charge **uniquement** les fichiers `config.yml`.
46+
47+
Règles de chargement:
48+
- le YAML doit contenir au minimum **`_version`** et **`name`**
49+
- si `path` n’est pas défini, il est automatiquement fixé au **dossier du `config.yml`**
50+
- si une config est invalide, le daemon **s’arrête** (exit 1)
51+
52+
### Exemple de backends
53+
54+
Le dépôt fournit des exemples dans `backends.example/`.
55+
56+
Pour démarrer rapidement:
57+
58+
```bash
59+
cp -R ./backends.example ./backends
60+
```
61+
62+
Puis ajoutez vos backends dans `./backends` (ou pointez `SESAME_BACKENDS_PATH` ailleurs).
63+
64+
## Démarrage en développement (local)
65+
66+
1) Installer:
67+
68+
```bash
69+
yarn install
70+
```
71+
72+
2) Démarrer Redis (ex: en local sur `6379`) puis lancer le daemon:
73+
74+
```bash
75+
export SESAME_REDIS_URI="redis://localhost:6379/0"
76+
yarn start:dev
77+
```
78+
79+
## Environnement de dev via Docker (Makefile)
80+
81+
Le dépôt contient un `Makefile` qui fournit un parcours “container + network dev”.
82+
83+
- **Démarrer Redis + Mongo (si besoin)**:
84+
85+
```bash
86+
make dbs
87+
```
88+
89+
- **Construire l’image**:
90+
91+
```bash
92+
make build
93+
```
94+
95+
- **Installer les dépendances dans le container**:
96+
97+
```bash
98+
make install
4399
```
44-
# Host Redis (defaut "redis://localhost:6379/0")
45-
REDIS_URL=redis://localhost:6379/0
46100

47-
# Chemin des backends par defaut le repertoire backends du projet
48-
#BACKENDS_PATH=
101+
- **Lancer le daemon en watch mode**:
102+
103+
```bash
104+
make dev
105+
```
49106

50-
# nom de la queue bullMQ (defaut: 'backend')
51-
#NAME_QUEUE=
107+
## Tests
52108

53-
# Nom ou chemin du binaire d'exécution du shell (defaut: true)
54-
#BACKENDS_EXECUTOR_SHELL=
109+
```bash
110+
yarn test
55111
```
56-
Vous etes pret
57-
````bash
58-
docker exec sesame-daemon yarn start:dev
59-
````
60112

61-
### complation du daemon en un executable
62-
Générer une nouvelle release : [ici](https://github.com/Libertech-Fr/sesame-daemon/actions/workflows/release.yml?event=workflow_dispatch)
63-
- via le bouton run workflow
113+
## Build / packaging
64114

65-
## License
115+
Le workflow de release génère un binaire via `pkg` (ex: `sesame-daemon-linux`) et des paquets `.deb` / `.rpm`.
116+
117+
- **Release GitHub (binaire + paquets)**: déclencher le workflow “Release” via GitHub Actions:
118+
- `https://github.com/Libertech-Fr/sesame-daemon/actions/workflows/release.yml?event=workflow_dispatch`
119+
120+
### Service systemd (paquets)
121+
122+
Les paquets installent un service systemd `sesame-daemon` qui exécute `/usr/bin/sesame-daemon` avec:
123+
- `WorkingDirectory=/var/lib/sesame-daemon`
124+
- un fichier d’environnement optionnel: `/etc/default/sesame-daemon`
125+
126+
Exemple de variables (fichier `/etc/default/sesame-daemon`) :
127+
128+
```bash
129+
SESAME_LOG_LEVEL=INFO
130+
SESAME_REDIS_URI=redis://localhost:6379/0
131+
SESAME_BACKENDS_PATH=/var/lib/sesame-daemon/backends
132+
```
66133

134+
## Licence
67135

136+
Voir `LICENSE`.

0 commit comments

Comments
 (0)