align for IA
This commit is contained in:
parent
e9d8f826d9
commit
243118aa8c
8
.gitmodules
vendored
8
.gitmodules
vendored
@ -6,10 +6,10 @@
|
|||||||
path = sdk_relay
|
path = sdk_relay
|
||||||
url = git@git.4nkweb.com:4nk/sdk_relay.git
|
url = git@git.4nkweb.com:4nk/sdk_relay.git
|
||||||
branch = ext
|
branch = ext
|
||||||
[submodule "sdk_signer"]
|
# [submodule "sdk_signer"]
|
||||||
path = sdk_signer
|
# path = sdk_signer
|
||||||
url = git@git.4nkweb.com:4nk/sdk_signer.git
|
# url = git@git.4nkweb.com:4nk/sdk_signer.git
|
||||||
branch = ext
|
# branch = ext
|
||||||
[submodule "sdk_storage"]
|
[submodule "sdk_storage"]
|
||||||
path = sdk_storage
|
path = sdk_storage
|
||||||
url = git@git.4nkweb.com:4nk/sdk_storage.git
|
url = git@git.4nkweb.com:4nk/sdk_storage.git
|
||||||
|
10
CHANGELOG.md
Normal file
10
CHANGELOG.md
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- lecoffre-front (docker-compose): switch to local build using repository Dockerfile for durable deployment of IdNot state-based flow.
|
||||||
|
- Ensure NEXT_PUBLIC variables are injected via env_file (.env.master) rather than relying on image defaults.
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- docs/idnot-front-agnostic.md describing the front-agnostic IdNot flow, envs, Nginx, and operations.
|
||||||
|
- lecoffre_node/ENV_EXAMPLE.md documenting example .env.master contents for the frontend.
|
||||||
|
|
@ -23,7 +23,6 @@ Ce document explique comment déclencher les CI pour tous les projets du LeCoffr
|
|||||||
|--------|----------|--------------|--------|
|
|--------|----------|--------------|--------|
|
||||||
| `sdk_relay` | `.gitea/workflows/build-ext.yml` | `git.4nkweb.com/4nk/sdk_relay:ext` | ✅ CI configurée |
|
| `sdk_relay` | `.gitea/workflows/build-ext.yml` | `git.4nkweb.com/4nk/sdk_relay:ext` | ✅ CI configurée |
|
||||||
| `sdk_storage` | `.gitea/workflows/build-ext.yml` | `git.4nkweb.com/4nk/sdk_storage:ext` | ✅ CI configurée |
|
| `sdk_storage` | `.gitea/workflows/build-ext.yml` | `git.4nkweb.com/4nk/sdk_storage:ext` | ✅ CI configurée |
|
||||||
| `sdk_signer` | `.gitea/workflows/build-ext.yml` | `git.4nkweb.com/4nk/sdk_signer:ext` | ✅ CI configurée |
|
|
||||||
| `ihm_client` | `.gitea/workflows/docker-ext.yml` | `git.4nkweb.com/4nk/ihm_client:ext` | ✅ CI configurée |
|
| `ihm_client` | `.gitea/workflows/docker-ext.yml` | `git.4nkweb.com/4nk/ihm_client:ext` | ✅ CI configurée |
|
||||||
| `lecoffre-front` | `.gitea/workflows/build-ext.yml` | `git.4nkweb.com/4nk/lecoffre-front:ext` | ✅ CI configurée |
|
| `lecoffre-front` | `.gitea/workflows/build-ext.yml` | `git.4nkweb.com/4nk/lecoffre-front:ext` | ✅ CI configurée |
|
||||||
|
|
||||||
@ -59,16 +58,6 @@ git push origin refs/tags/ext
|
|||||||
- **Image Docker**: `git.4nkweb.com/4nk/sdk_storage:ext`
|
- **Image Docker**: `git.4nkweb.com/4nk/sdk_storage:ext`
|
||||||
- **Tags existants**: `ext`
|
- **Tags existants**: `ext`
|
||||||
|
|
||||||
#### 3. sdk_signer
|
|
||||||
```bash
|
|
||||||
cd /home/debian/4NK_env/sdk_signer
|
|
||||||
git tag -a ext -m "ci: docker_tag=ext - Trigger CI build for sdk_signer"
|
|
||||||
git push origin refs/tags/ext
|
|
||||||
```
|
|
||||||
- **Workflow**: `.gitea/workflows/build-ext.yml`
|
|
||||||
- **Image Docker**: `git.4nkweb.com/4nk/sdk_signer:ext`
|
|
||||||
- **Tags existants**: `ext`
|
|
||||||
|
|
||||||
#### 4. ihm_client
|
#### 4. ihm_client
|
||||||
```bash
|
```bash
|
||||||
cd /home/debian/4NK_env/ihm_client
|
cd /home/debian/4NK_env/ihm_client
|
||||||
@ -93,7 +82,7 @@ git push origin refs/tags/ext
|
|||||||
### Pour tous les projets
|
### Pour tous les projets
|
||||||
```bash
|
```bash
|
||||||
cd /home/debian/4NK_env
|
cd /home/debian/4NK_env
|
||||||
for project in sdk_relay sdk_storage sdk_signer ihm_client lecoffre-front; do
|
for project in sdk_relay sdk_storageihm_client lecoffre-front; do
|
||||||
echo "=== Déclenchement CI pour $project ==="
|
echo "=== Déclenchement CI pour $project ==="
|
||||||
cd $project
|
cd $project
|
||||||
git tag -a ext -m "ci: docker_tag=ext - Trigger CI build for $project"
|
git tag -a ext -m "ci: docker_tag=ext - Trigger CI build for $project"
|
||||||
@ -126,7 +115,7 @@ ci: docker_tag=ext - Add new features for relay service
|
|||||||
### Types de workflows
|
### Types de workflows
|
||||||
|
|
||||||
#### Workflow build-ext.yml (standard)
|
#### Workflow build-ext.yml (standard)
|
||||||
- **Projets**: sdk_relay, sdk_storage, sdk_signer, lecoffre-front
|
- **Projets**: sdk_relay, sdk_storage, lecoffre-front
|
||||||
- **Caractéristiques**:
|
- **Caractéristiques**:
|
||||||
- Utilise Docker BuildKit
|
- Utilise Docker BuildKit
|
||||||
- Support SSH pour les clonages Git
|
- Support SSH pour les clonages Git
|
||||||
@ -177,10 +166,8 @@ Les CI sont visibles sur `git.4nkweb.com` dans l'interface web de chaque projet.
|
|||||||
|------|--------|-----|--------|--------|-------|
|
|------|--------|-----|--------|--------|-------|
|
||||||
| 2025-09-21 | sdk_relay | ext | 0180d32 | ✅ CI déclenchée | Fix config file reading logic |
|
| 2025-09-21 | sdk_relay | ext | 0180d32 | ✅ CI déclenchée | Fix config file reading logic |
|
||||||
| 2025-09-21 | sdk_storage | ext | - | ✅ CI déclenchée | Tag créé et poussé |
|
| 2025-09-21 | sdk_storage | ext | - | ✅ CI déclenchée | Tag créé et poussé |
|
||||||
| 2025-09-21 | sdk_signer | ext | - | ✅ CI déclenchée | Tag créé et poussé |
|
|
||||||
| 2025-09-21 | ihm_client | ext | - | ✅ CI déclenchée | Tag créé et poussé |
|
| 2025-09-21 | ihm_client | ext | - | ✅ CI déclenchée | Tag créé et poussé |
|
||||||
| 2025-09-21 | lecoffre-front | ext | - | ✅ CI déclenchée | Tag créé et poussé |
|
| 2025-09-21 | lecoffre-front | ext | - | ✅ CI déclenchée | Tag créé et poussé |
|
||||||
| 2025-09-21 | lecoffre-back-mini | ext | - | ✅ CI déclenchée | Tag créé et poussé |
|
|
||||||
|
|
||||||
### Détails des projets vérifiés
|
### Détails des projets vérifiés
|
||||||
|
|
||||||
@ -188,7 +175,6 @@ Les CI sont visibles sur `git.4nkweb.com` dans l'interface web de chaque projet.
|
|||||||
|--------|---------|----------------|----------|------------|--------|
|
|--------|---------|----------------|----------|------------|--------|
|
||||||
| sdk_relay | ext | ci-trigger-ext, ext | build-ext.yml | ✅ | ✅ Configuré |
|
| sdk_relay | ext | ci-trigger-ext, ext | build-ext.yml | ✅ | ✅ Configuré |
|
||||||
| sdk_storage | ext | ext | build-ext.yml | ✅ | ✅ Configuré |
|
| sdk_storage | ext | ext | build-ext.yml | ✅ | ✅ Configuré |
|
||||||
| sdk_signer | ext | ext | build-ext.yml | ✅ | ✅ Configuré |
|
|
||||||
| ihm_client | ext | ext | docker-ext.yml | ✅ | ✅ Configuré |
|
| ihm_client | ext | ext | docker-ext.yml | ✅ | ✅ Configuré |
|
||||||
| lecoffre-front | ext | ext | build-ext.yml | ✅ | ✅ Configuré |
|
| lecoffre-front | ext | ext | build-ext.yml | ✅ | ✅ Configuré |
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ Les services sont organisés en **5 phases** pour optimiser le démarrage et év
|
|||||||
### **Ordre par Phases**
|
### **Ordre par Phases**
|
||||||
```
|
```
|
||||||
Phase 1: Services de Base (Parallèle)
|
Phase 1: Services de Base (Parallèle)
|
||||||
├── tor, sdk_storage, sdk_signer, status-api
|
├── tor, sdk_storage, status-api
|
||||||
|
|
||||||
Phase 2: Services Blockchain (Séquentiel)
|
Phase 2: Services Blockchain (Séquentiel)
|
||||||
├── bitcoin → blindbit → sdk_relay
|
├── bitcoin → blindbit → sdk_relay
|
||||||
|
@ -56,7 +56,7 @@ Services Applicatifs ←→ Services de Monitoring
|
|||||||
#### **Phase 1: Services de Base (Parallèle)**
|
#### **Phase 1: Services de Base (Parallèle)**
|
||||||
```bash
|
```bash
|
||||||
# Ces services peuvent démarrer en parallèle
|
# Ces services peuvent démarrer en parallèle
|
||||||
tor + sdk_storage + sdk_signer + status-api
|
tor + sdk_storage + status-api
|
||||||
```
|
```
|
||||||
|
|
||||||
#### **Phase 2: Services Blockchain (Séquentiel)**
|
#### **Phase 2: Services Blockchain (Séquentiel)**
|
||||||
|
@ -57,7 +57,6 @@ A déployer par **`lecoffre_node/`** (d'autres projets externes sont ne dépenda
|
|||||||
|
|
||||||
### Services optimisés (2024-12-19)
|
### Services optimisés (2024-12-19)
|
||||||
- **`sdk_relay/`** (relai des transations et messages et oracle) - Debian + Rust
|
- **`sdk_relay/`** (relai des transations et messages et oracle) - Debian + Rust
|
||||||
- **`sdk_signer/`** (signature des processus métier et des identités/profils) - Debian + Node.js 20
|
|
||||||
- **`sdk_storage/`** (stockage temporaire) - Debian + Rust
|
- **`sdk_storage/`** (stockage temporaire) - Debian + Rust
|
||||||
- **`ihm_client/`** (iframe dans les frontend des projets pour interactions avec les clés privés Bitcoin Silent Payment) - Debian + Node.js 20
|
- **`ihm_client/`** (iframe dans les frontend des projets pour interactions avec les clés privés Bitcoin Silent Payment) - Debian + Node.js 20
|
||||||
- **`lecoffre-front/`** (frontend du projet lecoffre) - Debian + Node.js 19
|
- **`lecoffre-front/`** (frontend du projet lecoffre) - Debian + Node.js 19
|
||||||
|
@ -20,7 +20,6 @@ Ces services peuvent démarrer en parallèle car ils sont indépendants :
|
|||||||
|---------|------|------------|--------|
|
|---------|------|------------|--------|
|
||||||
| **tor** | 9050 | Aucune | `start-with-progress.sh` |
|
| **tor** | 9050 | Aucune | `start-with-progress.sh` |
|
||||||
| **sdk_storage** | 8081 | Aucune | `start-with-progress.sh` |
|
| **sdk_storage** | 8081 | Aucune | `start-with-progress.sh` |
|
||||||
| **sdk_signer** | 3001 | Aucune | `start-with-progress.sh` |
|
|
||||||
| **status-api** | 3006 | Aucune | `start-with-progress.sh` |
|
| **status-api** | 3006 | Aucune | `start-with-progress.sh` |
|
||||||
|
|
||||||
### **Phase 2: Services Blockchain (Séquentiel)**
|
### **Phase 2: Services Blockchain (Séquentiel)**
|
||||||
|
@ -80,17 +80,6 @@ SDK_RELAY_BOOTSTRAP_FAUCET=true
|
|||||||
SDK_RELAY_RUST_LOG=DEBUG,reqwest=DEBUG,tokio_tungstenite=DEBUG
|
SDK_RELAY_RUST_LOG=DEBUG,reqwest=DEBUG,tokio_tungstenite=DEBUG
|
||||||
```
|
```
|
||||||
|
|
||||||
### ✍️ Variables SDK_SIGNER
|
|
||||||
```bash
|
|
||||||
SIGNER_API_KEY=your-api-key-change-this
|
|
||||||
SIGNER_PORT=9090
|
|
||||||
SIGNER_DATABASE_PATH=./data/server.db
|
|
||||||
SIGNER_RELAY_URLS=http://localhost:8090
|
|
||||||
SIGNER_AUTO_RESTART=true
|
|
||||||
SIGNER_MAX_RESTARTS=3
|
|
||||||
SIGNER_LOG_LEVEL=info
|
|
||||||
```
|
|
||||||
|
|
||||||
### 🎯 Variables IHM_CLIENT
|
### 🎯 Variables IHM_CLIENT
|
||||||
```bash
|
```bash
|
||||||
VITE_JWT_SECRET_KEY=52b3d77617bb00982dfee15b08effd52cfe5b2e69b2f61cc4848cfe1e98c0bc9
|
VITE_JWT_SECRET_KEY=52b3d77617bb00982dfee15b08effd52cfe5b2e69b2f61cc4848cfe1e98c0bc9
|
||||||
@ -136,7 +125,6 @@ PROMTAIL_CONFIG_FILE=/etc/promtail/config.yml
|
|||||||
|
|
||||||
### 📁 Fichiers supprimés
|
### 📁 Fichiers supprimés
|
||||||
- ✅ `sdk_relay/.env`
|
- ✅ `sdk_relay/.env`
|
||||||
- ✅ `sdk_signer/.env`
|
|
||||||
- ✅ `ihm_client/.env`
|
- ✅ `ihm_client/.env`
|
||||||
- ✅ `lecoffre-front/.env`
|
- ✅ `lecoffre-front/.env`
|
||||||
|
|
||||||
@ -159,17 +147,6 @@ for (config_key, env_key) in env_vars.iter() {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
#### `sdk_signer/src/config.ts`
|
|
||||||
```typescript
|
|
||||||
// Configuration via variables d'environnement (centralisées dans lecoffre_node/.env.master)
|
|
||||||
export function loadConfig(): AppConfig {
|
|
||||||
return {
|
|
||||||
port: parseInt(process.env.PORT || '9090'),
|
|
||||||
apiKey: process.env.API_KEY || 'your-api-key-change-this',
|
|
||||||
// ... autres variables
|
|
||||||
};
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### `lecoffre_node/docker-compose.yml`
|
#### `lecoffre_node/docker-compose.yml`
|
||||||
```yaml
|
```yaml
|
||||||
@ -181,11 +158,7 @@ services:
|
|||||||
- WS_URL=${SDK_RELAY_WS_URL}
|
- WS_URL=${SDK_RELAY_WS_URL}
|
||||||
# ... toutes les variables SDK_RELAY_*
|
# ... toutes les variables SDK_RELAY_*
|
||||||
|
|
||||||
sdk_signer:
|
|
||||||
environment:
|
|
||||||
- PORT=${SIGNER_PORT}
|
|
||||||
- API_KEY=${SIGNER_API_KEY}
|
|
||||||
# ... toutes les variables SIGNER_*
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### `lecoffre_node/.gitignore`
|
#### `lecoffre_node/.gitignore`
|
||||||
@ -273,7 +246,6 @@ docker compose --env-file .env.master up -d
|
|||||||
### ✅ Avant (problématique)
|
### ✅ Avant (problématique)
|
||||||
```
|
```
|
||||||
sdk_relay/.env
|
sdk_relay/.env
|
||||||
sdk_signer/.env
|
|
||||||
ihm_client/.env
|
ihm_client/.env
|
||||||
lecoffre-front/.env
|
lecoffre-front/.env
|
||||||
├── Variables dupliquées
|
├── Variables dupliquées
|
||||||
|
@ -25,7 +25,6 @@
|
|||||||
| **sdk_relay** | sdk_relay | 0.0.0.0:8090<br>0.0.0.0:8091 | 8090 (WS)<br>8091 (HTTP) | WebSocket/HTTP | ws://0.0.0.0:8090<br>http://0.0.0.0:8091 |
|
| **sdk_relay** | sdk_relay | 0.0.0.0:8090<br>0.0.0.0:8091 | 8090 (WS)<br>8091 (HTTP) | WebSocket/HTTP | ws://0.0.0.0:8090<br>http://0.0.0.0:8091 |
|
||||||
| **lecoffre-front** | lecoffre-front | 127.0.0.2:3004 | 3000 | HTTP | http://127.0.0.2:3004 |
|
| **lecoffre-front** | lecoffre-front | 127.0.0.2:3004 | 3000 | HTTP | http://127.0.0.2:3004 |
|
||||||
| **ihm_client** | ihm_client | 0.0.0.0:3003 | 3003 | HTTP | http://0.0.0.0:3003 |
|
| **ihm_client** | ihm_client | 0.0.0.0:3003 | 3003 | HTTP | http://0.0.0.0:3003 |
|
||||||
| **sdk_signer** | sdk_signer | 0.0.0.0:3001 | 3001 | HTTP/WebSocket | http://0.0.0.0:3001 |
|
|
||||||
| **sdk_storage** | sdk_storage | 0.0.0.0:8081 | 8080 | HTTP | http://0.0.0.0:8081 |
|
| **sdk_storage** | sdk_storage | 0.0.0.0:8081 | 8080 | HTTP | http://0.0.0.0:8081 |
|
||||||
| **grafana** | grafana | 127.0.0.1:3005 | 3000 | HTTP | http://127.0.0.1:3005 |
|
| **grafana** | grafana | 127.0.0.1:3005 | 3000 | HTTP | http://127.0.0.1:3005 |
|
||||||
| **loki** | loki | 127.0.0.1:3100 | 3100 | HTTP | http://127.0.0.1:3100 |
|
| **loki** | loki | 127.0.0.1:3100 | 3100 | HTTP | http://127.0.0.1:3100 |
|
||||||
@ -48,7 +47,6 @@
|
|||||||
| **/** | ihm_client | 3003 | HTTP | Interface principale |
|
| **/** | ihm_client | 3003 | HTTP | Interface principale |
|
||||||
| **/lecoffre** | lecoffre-front | 3004 | HTTP | Application LeCoffre |
|
| **/lecoffre** | lecoffre-front | 3004 | HTTP | Application LeCoffre |
|
||||||
| **/ws/** | sdk_relay | 8090 | WebSocket | Relay WebSocket |
|
| **/ws/** | sdk_relay | 8090 | WebSocket | Relay WebSocket |
|
||||||
| **/signer/** | sdk_signer | 3001 | HTTP/WebSocket | Service Signer |
|
|
||||||
| **/src/service-workers/** | ihm_client | 3003 | HTTP | Service Workers |
|
| **/src/service-workers/** | ihm_client | 3003 | HTTP | Service Workers |
|
||||||
| **/grafana/** | grafana | 3005 | HTTP | Interface de monitoring |
|
| **/grafana/** | grafana | 3005 | HTTP | Interface de monitoring |
|
||||||
| **/loki/** | loki | 3100 | HTTP | API de logs |
|
| **/loki/** | loki | 3100 | HTTP | API de logs |
|
||||||
@ -83,9 +81,7 @@
|
|||||||
| Variable | Valeur | Service |
|
| Variable | Valeur | Service |
|
||||||
|----------|--------|---------|
|
|----------|--------|---------|
|
||||||
| **VITE_BOOTSTRAPURL** | wss://dev4.4nkweb.com/ws/ | ihm_client |
|
| **VITE_BOOTSTRAPURL** | wss://dev4.4nkweb.com/ws/ | ihm_client |
|
||||||
| **SIGNER_WS_URL** | ws://dev3.4nkweb.com:9090 | sdk_signer |
|
| **RELAY_URLS** | wss://dev4.4nkweb.com/ws/,wss://dev3.4nkweb.com/ws/ ||
|
||||||
| **SIGNER_BASE_URL** | https://dev3.4nkweb.com | sdk_signer |
|
|
||||||
| **RELAY_URLS** | wss://dev4.4nkweb.com/ws/,wss://dev3.4nkweb.com/ws/ | sdk_signer |
|
|
||||||
| **bootstrap_url** | wss://dev3.4nkweb.com/ws/ | sdk_relay |
|
| **bootstrap_url** | wss://dev3.4nkweb.com/ws/ | sdk_relay |
|
||||||
| **storage** | https://dev4.4nkweb.com/storage | sdk_relay |
|
| **storage** | https://dev4.4nkweb.com/storage | sdk_relay |
|
||||||
| **GRAFANA_ADMIN_PASSWORD** | admin123 | grafana |
|
| **GRAFANA_ADMIN_PASSWORD** | admin123 | grafana |
|
||||||
@ -116,12 +112,6 @@ Internet → dev4.4nkweb.com (Nginx) → Services Locaux
|
|||||||
5. **Monitoring** : `https://dev4.4nkweb.com/grafana/` → grafana (127.0.0.1:3005)
|
5. **Monitoring** : `https://dev4.4nkweb.com/grafana/` → grafana (127.0.0.1:3005)
|
||||||
6. **Logs API** : `https://dev4.4nkweb.com/loki/` → loki (127.0.0.1:3100)
|
6. **Logs API** : `https://dev4.4nkweb.com/loki/` → loki (127.0.0.1:3100)
|
||||||
|
|
||||||
### 🔗 **Flux de Redirection**
|
|
||||||
|
|
||||||
```
|
|
||||||
local.4nkdev.com → dev3.4nkweb.com → https://dev4.4nkweb.com/lecoffre
|
|
||||||
```
|
|
||||||
|
|
||||||
### 🌐 **Flux Externes**
|
### 🌐 **Flux Externes**
|
||||||
|
|
||||||
- **Bootstrap** : `wss://dev3.4nkweb.com/ws/` (Relay externe)
|
- **Bootstrap** : `wss://dev3.4nkweb.com/ws/` (Relay externe)
|
||||||
@ -147,7 +137,7 @@ Services → Logs Centralisés → Promtail → Loki → Grafana
|
|||||||
| **bitcoin** | `logs/bitcoin/` | `./logs/bitcoin:/var/log/bitcoin` | Logs Bitcoin Signet |
|
| **bitcoin** | `logs/bitcoin/` | `./logs/bitcoin:/var/log/bitcoin` | Logs Bitcoin Signet |
|
||||||
| **blindbit** | `logs/blindbit/` | `./logs/blindbit:/var/log/blindbit` | Logs Oracle |
|
| **blindbit** | `logs/blindbit/` | `./logs/blindbit:/var/log/blindbit` | Logs Oracle |
|
||||||
| **sdk_relay** | `logs/sdk_relay/` | `./logs/sdk_relay:/var/log/sdk_relay` | Logs Relay |
|
| **sdk_relay** | `logs/sdk_relay/` | `./logs/sdk_relay:/var/log/sdk_relay` | Logs Relay |
|
||||||
| **sdk_signer** | `logs/sdk_signer/` | `./logs/sdk_signer:/var/log/sdk_signer` | Logs Signer |
|
|
||||||
| **sdk_storage** | `logs/sdk_storage/` | `./logs/sdk_storage:/var/log/sdk_storage` | Logs Storage |
|
| **sdk_storage** | `logs/sdk_storage/` | `./logs/sdk_storage:/var/log/sdk_storage` | Logs Storage |
|
||||||
| **lecoffre-front** | `logs/lecoffre-front/` | `./logs/lecoffre-front:/var/log/lecoffre-front` | Logs Frontend |
|
| **lecoffre-front** | `logs/lecoffre-front/` | `./logs/lecoffre-front:/var/log/lecoffre-front` | Logs Frontend |
|
||||||
| **ihm_client** | `logs/ihm_client/` | `./logs/ihm_client:/var/log/ihm_client` | Logs IHM |
|
| **ihm_client** | `logs/ihm_client/` | `./logs/ihm_client:/var/log/ihm_client` | Logs IHM |
|
||||||
@ -193,7 +183,6 @@ Selon les règles du projet, l'ordre de démarrage est :
|
|||||||
3. **blindbit** - Oracle Bitcoin
|
3. **blindbit** - Oracle Bitcoin
|
||||||
4. **sdk_storage** - Stockage temporaire
|
4. **sdk_storage** - Stockage temporaire
|
||||||
5. **sdk_relay** - Relais des transactions
|
5. **sdk_relay** - Relais des transactions
|
||||||
6. **sdk_signer** - Signature des processus
|
|
||||||
7. **ihm_client** - Interface utilisateur
|
7. **ihm_client** - Interface utilisateur
|
||||||
9. **lecoffre-front** - Frontend application
|
9. **lecoffre-front** - Frontend application
|
||||||
|
|
||||||
@ -348,7 +337,6 @@ docker compose --env-file .env.master up -d
|
|||||||
- ✅ **IHM Client** : `https://dev4.4nkweb.com/`
|
- ✅ **IHM Client** : `https://dev4.4nkweb.com/`
|
||||||
- ✅ **API Backend** : `https://dev4.4nkweb.com/api/`
|
- ✅ **API Backend** : `https://dev4.4nkweb.com/api/`
|
||||||
- ✅ **WebSocket Relay** : `https://dev4.4nkweb.com/ws/`
|
- ✅ **WebSocket Relay** : `https://dev4.4nkweb.com/ws/`
|
||||||
- ✅ **SDK Signer** : `https://dev4.4nkweb.com/signer/`
|
|
||||||
- ✅ **BlindBit** : `https://dev4.4nkweb.com/blindbit/`
|
- ✅ **BlindBit** : `https://dev4.4nkweb.com/blindbit/`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -124,3 +124,4 @@ NEXT_PUBLIC_BACK_API_VERSION=v1
|
|||||||
- En prod, préférer cookies sécurisés et durées minimales
|
- En prod, préférer cookies sécurisés et durées minimales
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -4,8 +4,25 @@ Apprend et retient : `IA_agents/prompts/prompt-global.md`.
|
|||||||
|
|
||||||
Démarre en lisant tous les documents de `IA_agents/`.
|
Démarre en lisant tous les documents de `IA_agents/`.
|
||||||
Tous les documents des projets doivent être dans un dossier `docs/`
|
Tous les documents des projets doivent être dans un dossier `docs/`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Règles générales obligatoires
|
||||||
|
|
||||||
|
- Tres important : ne modifie jamais les fichiers de configuration mais demande à l'utilisateur de faire les modifications.
|
||||||
|
|
||||||
|
- Tres important : ne créé pas de versions de test ou temporaires.
|
||||||
|
|
||||||
|
- Tres important : corrige toutes les erreurs même petites avant de passer à la suite.
|
||||||
|
|
||||||
|
- Tres important : corrige sans simplifier ,sans contourner, sans faire de proxy, sans versions supplémentaires
|
||||||
|
|
||||||
|
- Tres important : corrige en améliorant les versions actuelless des fichiers.
|
||||||
|
|
||||||
|
- Très important : nettoie les fichiers de tests apres les tests.
|
||||||
|
|
||||||
|
- Très important : ne fait pas de nouveaux fichiers de documentation, enrichie les fichiers existant.
|
||||||
|
|
||||||
## Todo
|
## Todo
|
||||||
|
|
||||||
* [ ] Soit très explicite dans tes commandes pour ne pas entrainer de confusions entre **tag** et **branche** de même nom.
|
* [ ] Soit très explicite dans tes commandes pour ne pas entrainer de confusions entre **tag** et **branche** de même nom.
|
||||||
|
@ -6,10 +6,10 @@ Apprend et retient : `IA_agents/prompts/prompt-global.md`.
|
|||||||
|
|
||||||
## 🎯 Prompt pour l'Agent IA
|
## 🎯 Prompt pour l'Agent IA
|
||||||
|
|
||||||
Déploie l'architecture LeCoffre Node complète en respectant strictement les consignes de déploiement.
|
- Déploie l'architecture LeCoffre Node complète en respectant strictement les consignes de déploiement.
|
||||||
Arrete et nettoie tous les services, images, tests, commandes, éditions... encore actives avant de relancer proprement.
|
- Arrete et nettoie tous les services, images, tests, commandes, éditions... encore actives avant de relancer proprement.
|
||||||
Si un processus est en attente alors utiliser les scripts de monitoring, si ils sont peu utiles pour comprendre la raison de l'attente ou la progression, alors améliore les.
|
|
||||||
|
|
||||||
|
Si un processus est en attente alors utiliser les scripts de monitoring, si ils sont peu utiles pour comprendre la raison de l'attente ou la progression, alors améliore les.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -38,6 +38,8 @@ A mettre dans ta TODO (vérifie que tout est fait à la fin):
|
|||||||
Fait tout ce qui suit pour tous les dossiers.
|
Fait tout ce qui suit pour tous les dossiers.
|
||||||
|
|
||||||
### Phase 1: Vérifications initiales
|
### Phase 1: Vérifications initiales
|
||||||
|
- [ ] Copie lecoffre_node/.env.master dans tous les dossiers des projets et adapte leur build et fichiers de configuration pour intégrer la totalités des variables.
|
||||||
|
- [ ] Vérifie que l'application n'a pas de variables manquantes dans ce fichier au quel cas ajoute les avec une valeur vide à la fin et signale les en fin de todo.
|
||||||
- [ ] Vérifier que le dépôt distant est public (si possible)
|
- [ ] Vérifier que le dépôt distant est public (si possible)
|
||||||
- [ ] Vérifier l'utilisation des clés SSH pour le déploiement Git
|
- [ ] Vérifier l'utilisation des clés SSH pour le déploiement Git
|
||||||
- [ ] Vérifier que la branche courante est bien `ext`
|
- [ ] Vérifier que la branche courante est bien `ext`
|
||||||
@ -119,7 +121,6 @@ docker compose --env-file .env.master up -d
|
|||||||
|
|
||||||
Variables disponibles :
|
Variables disponibles :
|
||||||
- SDK_RELAY_* : Configuration du service relay
|
- SDK_RELAY_* : Configuration du service relay
|
||||||
- SIGNER_* : Configuration du service signer
|
|
||||||
- VITE_* : Configuration des applications frontend
|
- VITE_* : Configuration des applications frontend
|
||||||
- IDNOT_* : Configuration des APIs notaires
|
- IDNOT_* : Configuration des APIs notaires
|
||||||
- STRIPE_* : Configuration des paiements
|
- STRIPE_* : Configuration des paiements
|
||||||
@ -197,8 +198,7 @@ docker compose start
|
|||||||
- **Utilise les outils de monitoring** pour suivre la progression et diagnostiquer les problèmes
|
- **Utilise les outils de monitoring** pour suivre la progression et diagnostiquer les problèmes
|
||||||
- Front Next.js utilise un basePath `/lecoffre` : tester `/lecoffre/` (pas `/`)
|
- Front Next.js utilise un basePath `/lecoffre` : tester `/lecoffre/` (pas `/`)
|
||||||
- Vérifier dans le conteneur front: `NEXT_PUBLIC_4NK_URL` et `NEXT_PUBLIC_4NK_IFRAME_URL`
|
- Vérifier dans le conteneur front: `NEXT_PUBLIC_4NK_URL` et `NEXT_PUBLIC_4NK_IFRAME_URL`
|
||||||
- `sdk_signer` WebSocket: health/validations acceptent 101/426/200
|
- BlindBit: l’API peut renvoyer `000` depuis l’hôte; si conteneur healthy, considérer OK
|
||||||
- BlindBit: l’API peut renvoyer `000` depuis l’hôte; si conteneur healthy, considérer OK
|
|
||||||
- **Surveille la progression Bitcoin IBD** : Le processus peut prendre du temps
|
- **Surveille la progression Bitcoin IBD** : Le processus peut prendre du temps
|
||||||
- **Attends la synchronisation Bitcoin** avant de démarrer SDK Relay
|
- **Attends la synchronisation Bitcoin** avant de démarrer SDK Relay
|
||||||
- **Vérifie les dépendances** avant de démarrer les services LeCoffre
|
- **Vérifie les dépendances** avant de démarrer les services LeCoffre
|
||||||
@ -209,7 +209,6 @@ docker compose start
|
|||||||
**Phase 1: Services de base (parallèle)**
|
**Phase 1: Services de base (parallèle)**
|
||||||
1. tor
|
1. tor
|
||||||
2. sdk_storage
|
2. sdk_storage
|
||||||
3. sdk_signer
|
|
||||||
4. status-api
|
4. status-api
|
||||||
|
|
||||||
**Phase 2: Services blockchain (séquentiel)**
|
**Phase 2: Services blockchain (séquentiel)**
|
||||||
|
@ -1,24 +1,5 @@
|
|||||||
# TODO
|
# TODO
|
||||||
|
|
||||||
Apprend et retient : `IA_agents/prompts/prompt-global.md`.
|
|
||||||
|
|
||||||
Dans la page status (`lecoffre_node/web/status`):
|
|
||||||
* [ ] Ajouter l'État du miner
|
|
||||||
* [ ] Du bootsrap tor
|
|
||||||
* [ ] Du chargement ibd de Bitcoin et de Signet
|
|
||||||
* [ ] Du scan des blocs de blindbit-oracle
|
|
||||||
* [ ] Du scan des transactions du signer
|
|
||||||
* [ ] Du scan des transactions du relay
|
|
||||||
* [ ] Des jetons du relai
|
|
||||||
* [ ] Des jetons du miner
|
|
||||||
* [ ] Des jetons du signer
|
|
||||||
* [ ] De l'API OVH pour les sms
|
|
||||||
* [ ] De l'API Stripe pour le paiement
|
|
||||||
* [ ] Du nombre se souscriptions par offres
|
|
||||||
* [ ] De l'API Mailshimp pour les mails
|
|
||||||
Par images docker dans leurs sections actuelles:
|
|
||||||
* [ ] Préciser l'État selon l'État des l'image docker avec l'identifiant images avec la date de l'action du runner et du build avec son lien
|
|
||||||
* [ ] Affiche l'état de la dernière action du runner.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -9,7 +9,6 @@ Environnement de développement centralisé pour tous les dépôts 4NK et le pro
|
|||||||
4NK_env/ # Environnement de développement 4NK + Agents IA
|
4NK_env/ # Environnement de développement 4NK + Agents IA
|
||||||
├── lecoffre_node/ # Orchestrateur principal LeCoffre (Nginx intégré)
|
├── lecoffre_node/ # Orchestrateur principal LeCoffre (Nginx intégré)
|
||||||
├── sdk_relay/ # Service de relais WebSocket 4NK
|
├── sdk_relay/ # Service de relais WebSocket 4NK
|
||||||
├── sdk_signer/ # Service de signature 4NK
|
|
||||||
├── sdk_storage/ # Service de stockage 4NK
|
├── sdk_storage/ # Service de stockage 4NK
|
||||||
├── sdk_client/ # Client SDK 4NK
|
├── sdk_client/ # Client SDK 4NK
|
||||||
├── sdk_common/ # Composants communs 4NK
|
├── sdk_common/ # Composants communs 4NK
|
||||||
|
@ -1 +0,0 @@
|
|||||||
# CI Trigger Sun Sep 21 19:58:04 UTC 2025
|
|
96
docs/idnot-front-agnostic.md
Normal file
96
docs/idnot-front-agnostic.md
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
IdNot front-agnostic flow (durable setup)
|
||||||
|
|
||||||
|
Overview
|
||||||
|
|
||||||
|
- Goal: Backend is agnostic of the frontend, supports any domain and localhost. IdNot keeps the fixed redirect_uri, Nginx forwards to backend, backend returns to the real frontend with an authToken in the fragment.
|
||||||
|
|
||||||
|
Data flow
|
||||||
|
|
||||||
|
1) Frontend (Next.js) requests state
|
||||||
|
- POST https://dev3.4nkweb.com/api/v1/idnot/state
|
||||||
|
- Body: { next_url: <absolute URL to /authorized-client of the current front> }
|
||||||
|
- Returns: { state }
|
||||||
|
|
||||||
|
2) Frontend builds authorize URL and redirects
|
||||||
|
- authorize = ${NEXT_PUBLIC_IDNOT_BASE_URL}${NEXT_PUBLIC_IDNOT_AUTHORIZE_ENDPOINT}
|
||||||
|
- query: client_id, redirect_uri = NEXT_PUBLIC_IDNOT_REDIRECT_URI_FIXED, scope=openid,profile, response_type=code, state
|
||||||
|
|
||||||
|
3) IdNot redirects to the fixed redirect
|
||||||
|
- http://local.4nkweb.com:3000/authorized-client?code=...&state=...
|
||||||
|
|
||||||
|
4) Nginx (dev4) 301 → dev3 backend callback
|
||||||
|
- https://dev3.4nkweb.com/idnot/callback?code=...&state=...
|
||||||
|
|
||||||
|
5) Backend callback
|
||||||
|
- Verifies state (HMAC, TTL, nonce, host allowlist)
|
||||||
|
- Exchanges code with IdNot
|
||||||
|
- Creates session/authToken
|
||||||
|
- 302 → next_url#authToken=...
|
||||||
|
|
||||||
|
Frontend requirements
|
||||||
|
|
||||||
|
- Expose runtime variables in Next.js (NEXT_PUBLIC_*):
|
||||||
|
- NEXT_PUBLIC_IDNOT_BASE_URL=https://qual-connexion.idnot.fr
|
||||||
|
- NEXT_PUBLIC_IDNOT_AUTHORIZE_ENDPOINT=/IdPOAuth2/authorize/ (or provider-specific)
|
||||||
|
- NEXT_PUBLIC_IDNOT_CLIENT_ID=<from IdNot>
|
||||||
|
- NEXT_PUBLIC_IDNOT_REDIRECT_URI_FIXED=http://local.4nkweb.com:3000/authorized-client
|
||||||
|
- NEXT_PUBLIC_FRONT_APP_HOST=https://dev4.4nkweb.com/lecoffre
|
||||||
|
- NEXT_PUBLIC_BACK_BASE=https://dev3.4nkweb.com
|
||||||
|
|
||||||
|
- Login button flow (simplified):
|
||||||
|
1) POST ${NEXT_PUBLIC_BACK_BASE}/api/v1/idnot/state { next_url: window.location.origin + '/authorized-client' }
|
||||||
|
2) On {state}, redirect to authorize with &state=
|
||||||
|
|
||||||
|
- Callback page
|
||||||
|
- Read authToken from window.location.hash
|
||||||
|
- Store token then clear hash
|
||||||
|
|
||||||
|
Backend requirements (summary)
|
||||||
|
|
||||||
|
- Env:
|
||||||
|
- BACK_HMAC_SECRET=<random-long-hex>
|
||||||
|
- STATE_TTL_SECONDS=180
|
||||||
|
- ALLOW_LOCALHOST_REDIRECTS=true
|
||||||
|
- ALLOWED_REDIRECT_HOST_PATTERNS=^dev4\.4nkweb\.com$,^localhost$,^127\.0\.0\.1$
|
||||||
|
|
||||||
|
- Endpoints:
|
||||||
|
- POST /api/v1/idnot/state → returns signed state with {next_url, nonce, ts}
|
||||||
|
- GET /idnot/callback → verifies state, exchanges code, then 302 to next_url#authToken=...
|
||||||
|
|
||||||
|
Nginx notes
|
||||||
|
|
||||||
|
- On dev4 (front): host local.4nkweb.com:3000 must return 301 to dev3 callback, preserving full query string.
|
||||||
|
- On dev3 (back): proxy /idnot/callback and /api/ to the backend server.
|
||||||
|
|
||||||
|
Docker Compose (durable)
|
||||||
|
|
||||||
|
- Build lecoffre-front locally to ensure latest code and env are used:
|
||||||
|
lecoffre-front:
|
||||||
|
build:
|
||||||
|
context: ../lecoffre-front
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
env_file:
|
||||||
|
- .env.master
|
||||||
|
|
||||||
|
- Keep .env.master at lecoffre_node/.env.master and include the NEXT_PUBLIC_* variables above. See .env.master.example.
|
||||||
|
|
||||||
|
Testing checklist
|
||||||
|
|
||||||
|
- On login:
|
||||||
|
- Network shows POST /api/v1/idnot/state before redirect
|
||||||
|
- IdNot authorize URL contains &state=
|
||||||
|
- dev3 /idnot/callback returns 302 to next_url#authToken=...
|
||||||
|
- Front stores token and proceeds
|
||||||
|
|
||||||
|
Security considerations
|
||||||
|
|
||||||
|
- HMAC-signed state with TTL and nonce (anti-replay)
|
||||||
|
- Strict host allowlist for next_url and localhost allowed only if ALLOW_LOCALHOST_REDIRECTS=true
|
||||||
|
- Prefer fragment (#authToken) to avoid logging tokens in proxies
|
||||||
|
|
||||||
|
Operations
|
||||||
|
|
||||||
|
- To rebuild and restart only the frontend after changes:
|
||||||
|
docker compose build lecoffre-front
|
||||||
|
docker compose up -d --no-deps --force-recreate lecoffre-front
|
||||||
|
|
@ -1 +1 @@
|
|||||||
Subproject commit 2410a40a4bf1cf44d0a4d1e66423de4f2cca5ae9
|
Subproject commit f659362682803d72dc619ca2e5e753a10ea8e192
|
@ -1 +1 @@
|
|||||||
Subproject commit 32f1c7946c151957ca145e367ee71bd78f46ff01
|
Subproject commit 0517aaaee543396bfac3d49aed30aade86021ea7
|
@ -13,7 +13,6 @@ log() {
|
|||||||
declare -a PROJECTS=(
|
declare -a PROJECTS=(
|
||||||
"lecoffre_node"
|
"lecoffre_node"
|
||||||
"sdk_relay"
|
"sdk_relay"
|
||||||
"sdk_signer"
|
|
||||||
"sdk_storage"
|
"sdk_storage"
|
||||||
"sdk_client"
|
"sdk_client"
|
||||||
"sdk_common"
|
"sdk_common"
|
||||||
|
@ -19,7 +19,6 @@ BASE_DIR="/home/debian/4NK_env"
|
|||||||
declare -a PROJECTS=(
|
declare -a PROJECTS=(
|
||||||
"lecoffre_node"
|
"lecoffre_node"
|
||||||
"sdk_relay"
|
"sdk_relay"
|
||||||
"sdk_signer"
|
|
||||||
"sdk_storage"
|
"sdk_storage"
|
||||||
"sdk_client"
|
"sdk_client"
|
||||||
"sdk_common"
|
"sdk_common"
|
||||||
|
@ -76,7 +76,6 @@ Environnement de développement centralisé pour tous les dépôts 4NK et le pro
|
|||||||
4NK_env/ # Environnement de développement 4NK
|
4NK_env/ # Environnement de développement 4NK
|
||||||
├── lecoffre_node/ # Orchestrateur principal LeCoffre (Nginx intégré)
|
├── lecoffre_node/ # Orchestrateur principal LeCoffre (Nginx intégré)
|
||||||
├── sdk_relay/ # Service de relais WebSocket 4NK
|
├── sdk_relay/ # Service de relais WebSocket 4NK
|
||||||
├── sdk_signer/ # Service de signature 4NK
|
|
||||||
├── sdk_storage/ # Service de stockage 4NK
|
├── sdk_storage/ # Service de stockage 4NK
|
||||||
├── sdk_client/ # Client SDK 4NK
|
├── sdk_client/ # Client SDK 4NK
|
||||||
├── sdk_common/ # Composants communs 4NK
|
├── sdk_common/ # Composants communs 4NK
|
||||||
@ -106,7 +105,7 @@ cd lecoffre_node
|
|||||||
- **LeCoffre Node** : Orchestrateur principal avec Nginx intégré
|
- **LeCoffre Node** : Orchestrateur principal avec Nginx intégré
|
||||||
- **Bitcoin Signet** : Nœud Bitcoin pour tests
|
- **Bitcoin Signet** : Nœud Bitcoin pour tests
|
||||||
- **Monitoring** : Grafana, Loki, Promtail
|
- **Monitoring** : Grafana, Loki, Promtail
|
||||||
- **Services SDK 4NK** : Relay, Signer, Storage
|
- **Services SDK 4NK** : Relay, Storage
|
||||||
- **Applications LeCoffre** : Frontend, Backend, IHM Client
|
- **Applications LeCoffre** : Frontend, Backend, IHM Client
|
||||||
|
|
||||||
## Ports
|
## Ports
|
||||||
|
@ -39,7 +39,6 @@ if [ -f ".env.master" ]; then
|
|||||||
success "✅ Fichier .env.master existe"
|
success "✅ Fichier .env.master existe"
|
||||||
echo " Taille: $(wc -l < .env.master) lignes"
|
echo " Taille: $(wc -l < .env.master) lignes"
|
||||||
echo " Variables SDK_RELAY: $(grep -c "^SDK_RELAY_" .env.master)"
|
echo " Variables SDK_RELAY: $(grep -c "^SDK_RELAY_" .env.master)"
|
||||||
echo " Variables SIGNER: $(grep -c "^SIGNER_" .env.master)"
|
|
||||||
echo " Variables VITE: $(grep -c "^VITE_" .env.master)"
|
echo " Variables VITE: $(grep -c "^VITE_" .env.master)"
|
||||||
else
|
else
|
||||||
error "❌ Fichier .env.master manquant"
|
error "❌ Fichier .env.master manquant"
|
||||||
@ -58,7 +57,7 @@ fi
|
|||||||
# Test 3: Vérification des fichiers .env supprimés
|
# Test 3: Vérification des fichiers .env supprimés
|
||||||
log "3. Vérification des fichiers .env supprimés..."
|
log "3. Vérification des fichiers .env supprimés..."
|
||||||
missing_env_files=0
|
missing_env_files=0
|
||||||
for project in sdk_relay sdk_signer sdk_storage ihm_client lecoffre-front; do
|
for project in sdk_relaysdk_storage ihm_client lecoffre-front; do
|
||||||
if [ -f "../$project/.env" ]; then
|
if [ -f "../$project/.env" ]; then
|
||||||
error "❌ Fichier .env existe encore dans $project"
|
error "❌ Fichier .env existe encore dans $project"
|
||||||
missing_env_files=$((missing_env_files + 1))
|
missing_env_files=$((missing_env_files + 1))
|
||||||
@ -84,13 +83,6 @@ else
|
|||||||
error "❌ sdk_relay/src/config.rs n'utilise pas std::env"
|
error "❌ sdk_relay/src/config.rs n'utilise pas std::env"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Test sdk_signer config.ts
|
|
||||||
if ! grep -q "dotenv.config()" ../sdk_signer/src/config.ts; then
|
|
||||||
success "✅ sdk_signer/src/config.ts ne charge plus dotenv"
|
|
||||||
else
|
|
||||||
error "❌ sdk_signer/src/config.ts charge encore dotenv"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Test 5: Vérification des variables d'environnement dans docker-compose.yml
|
# Test 5: Vérification des variables d'environnement dans docker-compose.yml
|
||||||
log "5. Vérification des variables d'environnement dans docker-compose.yml..."
|
log "5. Vérification des variables d'environnement dans docker-compose.yml..."
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user