ci: docker_tag=ext
Initial commit - 4NK Environment - Configuration complète LeCoffre - Architecture autonome avec Nginx intégré - Scripts de déploiement - Documentation IA_agents - Support redirections IdNot (port 3000) - Monitoring Grafana/Loki/Promtail
This commit is contained in:
commit
17c572b4ec
123
.dockerignore
Normal file
123
.dockerignore
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
# 4NK Environment - Docker Ignore
|
||||||
|
# ===============================
|
||||||
|
|
||||||
|
# Git
|
||||||
|
.git/
|
||||||
|
.gitignore
|
||||||
|
.gitattributes
|
||||||
|
|
||||||
|
# Documentation
|
||||||
|
README.md
|
||||||
|
docs/
|
||||||
|
*.md
|
||||||
|
!Dockerfile*
|
||||||
|
|
||||||
|
# Scripts de développement
|
||||||
|
scripts/
|
||||||
|
*.sh
|
||||||
|
!scripts/clone-all-repos.sh
|
||||||
|
|
||||||
|
# Configuration locale
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
!env.master
|
||||||
|
!env.example
|
||||||
|
|
||||||
|
# Données et logs
|
||||||
|
data/
|
||||||
|
logs/
|
||||||
|
*.log
|
||||||
|
*.data
|
||||||
|
*.db
|
||||||
|
*.sqlite
|
||||||
|
|
||||||
|
# Cache et build
|
||||||
|
node_modules/
|
||||||
|
dist/
|
||||||
|
build/
|
||||||
|
target/
|
||||||
|
*.o
|
||||||
|
*.so
|
||||||
|
*.dylib
|
||||||
|
|
||||||
|
# IDE et éditeurs
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
*~
|
||||||
|
|
||||||
|
# OS
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
*.tmp
|
||||||
|
|
||||||
|
# Backup
|
||||||
|
*.backup/
|
||||||
|
backup/
|
||||||
|
|
||||||
|
# Certificats (sauf ceux nécessaires)
|
||||||
|
*.key
|
||||||
|
*.pem
|
||||||
|
ssl/
|
||||||
|
certs/
|
||||||
|
|
||||||
|
# Docker
|
||||||
|
.docker/
|
||||||
|
docker-data/
|
||||||
|
docker-volumes/
|
||||||
|
docker-compose.override.yml
|
||||||
|
|
||||||
|
# Monitoring
|
||||||
|
prometheus-data/
|
||||||
|
grafana-data/
|
||||||
|
loki-data/
|
||||||
|
|
||||||
|
# Bitcoin et crypto
|
||||||
|
.bitcoin/
|
||||||
|
.4nk/
|
||||||
|
wallet/
|
||||||
|
keys/
|
||||||
|
|
||||||
|
# Nginx cache et logs
|
||||||
|
nginx-cache/
|
||||||
|
nginx-logs/
|
||||||
|
|
||||||
|
# Supervisor logs
|
||||||
|
supervisor-logs/
|
||||||
|
|
||||||
|
# Tests
|
||||||
|
tests/
|
||||||
|
test/
|
||||||
|
spec/
|
||||||
|
*.test.js
|
||||||
|
*.spec.js
|
||||||
|
|
||||||
|
# Coverage
|
||||||
|
coverage/
|
||||||
|
.nyc_output/
|
||||||
|
|
||||||
|
# Temporary files
|
||||||
|
tmp/
|
||||||
|
temp/
|
||||||
|
*.tmp
|
||||||
|
*.temp
|
||||||
|
|
||||||
|
# Large files
|
||||||
|
*.tar
|
||||||
|
*.tar.gz
|
||||||
|
*.zip
|
||||||
|
*.rar
|
||||||
|
|
||||||
|
# Development tools
|
||||||
|
.eslintrc*
|
||||||
|
.prettierrc*
|
||||||
|
jest.config.*
|
||||||
|
tsconfig.json
|
||||||
|
package-lock.json
|
||||||
|
yarn.lock
|
||||||
|
Cargo.lock
|
||||||
|
|
||||||
|
# Project specific ignores
|
||||||
|
office.json
|
||||||
|
*.backup
|
98
.gitignore
vendored
Normal file
98
.gitignore
vendored
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
# 4NK Environment - Git Ignore
|
||||||
|
# ============================
|
||||||
|
|
||||||
|
# Dossiers de sauvegarde des scripts
|
||||||
|
*.backup/
|
||||||
|
backup/
|
||||||
|
|
||||||
|
# Fichiers temporaires
|
||||||
|
*.tmp
|
||||||
|
*.temp
|
||||||
|
*.log
|
||||||
|
*.pid
|
||||||
|
|
||||||
|
# Fichiers de configuration locale
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
!env.master
|
||||||
|
!env.example
|
||||||
|
|
||||||
|
# Données et logs
|
||||||
|
data/
|
||||||
|
logs/
|
||||||
|
*.data
|
||||||
|
*.db
|
||||||
|
*.sqlite
|
||||||
|
|
||||||
|
# Certificats et clés
|
||||||
|
*.key
|
||||||
|
*.pem
|
||||||
|
*.crt
|
||||||
|
*.p12
|
||||||
|
*.pfx
|
||||||
|
ssl/
|
||||||
|
certs/
|
||||||
|
|
||||||
|
# Docker
|
||||||
|
.docker/
|
||||||
|
docker-data/
|
||||||
|
docker-volumes/
|
||||||
|
|
||||||
|
# Cache et build
|
||||||
|
node_modules/
|
||||||
|
dist/
|
||||||
|
build/
|
||||||
|
target/
|
||||||
|
*.o
|
||||||
|
*.so
|
||||||
|
*.dylib
|
||||||
|
|
||||||
|
# IDE et éditeurs
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
*~
|
||||||
|
|
||||||
|
# OS
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
*.tmp
|
||||||
|
|
||||||
|
# Git
|
||||||
|
.git/
|
||||||
|
*.orig
|
||||||
|
|
||||||
|
# Backup des projets existants
|
||||||
|
*.backup/
|
||||||
|
|
||||||
|
# Fichiers de configuration spécifiques au host
|
||||||
|
host-config/
|
||||||
|
local-config/
|
||||||
|
|
||||||
|
# Données sensibles
|
||||||
|
secrets/
|
||||||
|
private/
|
||||||
|
confidential/
|
||||||
|
|
||||||
|
# Monitoring et métriques
|
||||||
|
prometheus-data/
|
||||||
|
grafana-data/
|
||||||
|
loki-data/
|
||||||
|
|
||||||
|
# Bitcoin et crypto
|
||||||
|
.bitcoin/
|
||||||
|
.4nk/
|
||||||
|
wallet/
|
||||||
|
keys/
|
||||||
|
|
||||||
|
# Nginx
|
||||||
|
nginx-cache/
|
||||||
|
nginx-logs/
|
||||||
|
|
||||||
|
# Supervisor
|
||||||
|
supervisor-logs/
|
||||||
|
|
||||||
|
# Scripts de déploiement temporaires
|
||||||
|
deploy-*.tmp
|
||||||
|
setup-*.tmp
|
67
IA_agents/context.md
Normal file
67
IA_agents/context.md
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
# Contexte
|
||||||
|
|
||||||
|
Le site est sur @https://dev4.4nkweb.com/lecoffre (`lecoffre_front`).
|
||||||
|
Il sera redirigé au login des notaires vers un site qui redirige vers @http://local.4nkweb.com:3000/ qui sera redirigé vers @https://dev4.4nkweb.com/lecoffre avec l'ouverture de l'iframe @https://dev4.4nkweb.com/ (`ihm_client`).
|
||||||
|
|
||||||
|
Fonctionnellement, le test est sur navigateur de :
|
||||||
|
* tenter un login () notaire dont la redirection IdNot (redirections et API notaires) et valider dans l'iframe et d'arriver connecté apres la vérification du compte Stripe (lecoffre-back-mini).
|
||||||
|
* créer un compte dossier en tant que notaire en ajoutant un client ce qui enverra un lien par mail par mailshimp puis en tant que client me connecté avec le lien recçu par mail, confirmer le code sms (api ovh) et accéder à mon dossier.
|
||||||
|
|
||||||
|
Tehcniquement, le test est sur navigateur de :
|
||||||
|
* Vérifier la page de statut des services : @https://dev4.4nkweb.com/status/
|
||||||
|
* Vérifier les dashboard grafana @https://dev4.4nkweb.com/grafana/
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Dépendances
|
||||||
|
|
||||||
|
A déployer par **`lecoffre_node/`** :
|
||||||
|
|
||||||
|
- image: btcpayserver/tor:0.4.8.10 (pour synchro Bitcoin)
|
||||||
|
- image: git.4nkweb.com/4nk/bitcoin:latest (pour mainchain et signet custom)
|
||||||
|
- image: git.4nkweb.com/4nk/blindbit-oracle:dev (pour scan des blocs et détection des secrets dans les transaction silent payment)
|
||||||
|
- image: containrrr/watchtower (pour la surveillance et mise à jour automatique des images)
|
||||||
|
- image: grafana/grafana:latest (pour le monitoring des évènements)
|
||||||
|
- image: grafana/loki:latest
|
||||||
|
- grafana/promtail:latest
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Projets locaux avec Dockerfile
|
||||||
|
|
||||||
|
A déployer par **`lecoffre_node/`** (d'autres projets externes sont ne dépendance dans le `lecoffre_node/docker-compose.yml`):
|
||||||
|
|
||||||
|
### Services optimisés (2024-12-19)
|
||||||
|
- **`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
|
||||||
|
- **`ihm_client/`** (iframe dans les frontend des projets pour interactions avec les clés privés Bitcoin Silent Payment) - Debian + Node.js 20
|
||||||
|
- **`lecoffre-back-mini/`** (backend pour les API tierces du projet lecoffre) - Debian + Node.js 19
|
||||||
|
- **`lecoffre-front/`** (frontend du projet lecoffre) - Debian + Node.js 19
|
||||||
|
|
||||||
|
### Architecture Docker
|
||||||
|
- **Base standardisée** : `debian:bookworm-slim` pour tous les services
|
||||||
|
- **Packages minimaux** : ca-certificates, curl, jq, git
|
||||||
|
- **Utilisateurs non-root** : appuser (UID 1000)
|
||||||
|
- **Images optimisées** : 120-300MB selon le service
|
||||||
|
- **Tag Docker** : `ext` pour tous les déploiements
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Projets locaux sans Dockerfile
|
||||||
|
|
||||||
|
A vérifier **`lecoffre_node/`**:
|
||||||
|
|
||||||
|
- **`sdk_common/`** (coeur de la gestion des clés)
|
||||||
|
- **`sdk_client/`** (coeur de l'intégration du système de process)
|
||||||
|
- **`sdk-signer-client/`** (coeur de l'intégration du système de process pour l'intégration)
|
||||||
|
- **`lecoffre_node/miner/`** (miner de la blockchain de preuves -layer2 de bitcoin depuis un signet-) - **Maintenant avec Dockerfile optimisé**
|
||||||
|
- **`status-api`** (interface d'affichage des statuts des interfaces et des services)
|
||||||
|
|
||||||
|
### Note importante
|
||||||
|
Le **miner** a maintenant un Dockerfile optimisé avec Debian + Python 3.11 et fait partie des services avec Dockerfile.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Met à jour ce document si tu détectes des incohérences ou pose des questions pour confirmer.
|
||||||
|
Propose des améliorations dans un document lecoffre_node/IA_agents/todo.md.
|
207
IA_agents/deploy.md
Normal file
207
IA_agents/deploy.md
Normal file
@ -0,0 +1,207 @@
|
|||||||
|
# agent_deploy.md
|
||||||
|
|
||||||
|
Respecte totalement et impérativemment les informations de ce document.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Contexte
|
||||||
|
|
||||||
|
Consulte attentivement `lecoffre_node/IA_agents/context.md`.
|
||||||
|
Consulte attentivement `lecoffre_node/IA_agents/flux.md`.
|
||||||
|
Reste toujours sur la branche git "ext"
|
||||||
|
Fait toujours les build via CI avec des images docker pour le docker registry tagées "ext"
|
||||||
|
Déclanche toujours avec un tag "ext" remplace le précédent.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Objectifs
|
||||||
|
|
||||||
|
Le déploiement se fait depuis le répertoire **`lecoffre_node/`**, en utilisant les scripts présents dans **`scripts/`**.
|
||||||
|
Ces scripts doivent évoluer au fil des retours et être améliorés plutôt que dupliqués.
|
||||||
|
Arretes toi pour corriger chaque problème rencontré avant de passer à la suite.
|
||||||
|
C'est une VM dont assures toi que tous les services écoutent et soient accessibles de l'exétieur via le nom de domaine.
|
||||||
|
|
||||||
|
Dans **tous les projets** à vérifier un par un dont lecoffre_node:
|
||||||
|
|
||||||
|
- Analyse le dossier pour bien le comprendre
|
||||||
|
- Analyse le code pour bien le comprendre
|
||||||
|
- Une branche Git dédiée `ext` existe.
|
||||||
|
- Aucun tag Git nommé `ext` n’existe.
|
||||||
|
- Les services doivent écouter sur 0.0.0.0 (et non sur 127.0.0.1).
|
||||||
|
- Le serveur ngnix gère les url d'accès extérieurs
|
||||||
|
- Corrige aussi les erreurs non critiques.
|
||||||
|
|
||||||
|
Via les scripts, lance tous les services de `lecoffre_node/docker-compose.yml`.
|
||||||
|
|
||||||
|
## Procédure générale
|
||||||
|
|
||||||
|
### Vérifications initiales par projet
|
||||||
|
|
||||||
|
1. Vérifier que le dépôt distant est **public** (si possible).
|
||||||
|
2. Vérifier l’utilisation des **clés SSH** pour le déploiement Git (idéalement ~/.ssh/id_ed25519)
|
||||||
|
3. Vérifier que la branche courante est bien **`ext`**.
|
||||||
|
4. Mettre à jour les dépendances et les langages
|
||||||
|
5. Vérifier les **variables d’environnement**.
|
||||||
|
|
||||||
|
### Mise à jour et construction par projet
|
||||||
|
|
||||||
|
6. Supprime les caches, Optimise le build du projet et build le projet.
|
||||||
|
7. Mettre à jour la **documentation**.
|
||||||
|
8. Mettre à jour les **tests**.
|
||||||
|
9. Mettre à jour les **scripts**.
|
||||||
|
10. Vérifier que la présence et le contenu exhaustif et spécifique de :
|
||||||
|
- `.gitignore`
|
||||||
|
- `.dockerignore`
|
||||||
|
- `.cursorignore`
|
||||||
|
|
||||||
|
### Synchronisations par projet
|
||||||
|
|
||||||
|
11. Synchroniser les configurations dans `lecoffre_node/conf`.
|
||||||
|
Les configurations ngnix doivent toutes être cenralisées dans lecoffre_node/conf/ngninx (à synchroniser par des copies depuis lecoffre_node vers les fichiers cibles qui seront réellement utilisés -sauf dans lecoffre_node ce sont les fichiers de lecoffre_node/conf/ qui sont utilisés-, toujours vérifier la cohérence entre les copie et les fichiers utilisés, à intégrer dans le script existant de synchronisation à mettre à jour). Ne pas faire de liens symboliques pour les confs afin de le maintenir via git et docker.
|
||||||
|
12. Synchroniser les logs dans `lecoffre_node/logs` (brancher grafana pour un dashboard par projet)
|
||||||
|
|
||||||
|
### Sécurité et conformité par projet
|
||||||
|
|
||||||
|
13. Vérifier que le code ne fournit pas :
|
||||||
|
- de **données personnelles**,
|
||||||
|
- de **données sensibles exploitables**,
|
||||||
|
- de **failles de sécurité**.
|
||||||
|
|
||||||
|
### Gestion Git par projet
|
||||||
|
|
||||||
|
14. Pousser toutes les modifications sur la branche Git `ext`.
|
||||||
|
15. Supprimer les fichiers distants non suivis par Git.
|
||||||
|
|
||||||
|
### Analyse et correction par projet
|
||||||
|
|
||||||
|
16. Analyser les logs.
|
||||||
|
17. Corriger toutes les erreurs, petites et grosses, **sans désactivation**, **sans simplification**, **sans contournement**.
|
||||||
|
18. Tester.
|
||||||
|
19. Analyser de nouveau les logs.
|
||||||
|
20. Vérifier que les logs ne contiennent pas de données personnelles ou sensibles.
|
||||||
|
21. Corriger à nouveau si nécessaire (jusqu'à l'absence totale d'erreurs)
|
||||||
|
|
||||||
|
### Boucle d’amélioration par projet
|
||||||
|
|
||||||
|
22. Ne pas créer de nouvelles versions de scripts : **améliorer et tester ceux existants**.
|
||||||
|
23. Mettre à jour la documentation avec le **retour d’expérience** à chaque fois par une mise à jour de `docs/REX.md`.
|
||||||
|
24. Recommencer si nécessaire pour obtenir un déploiement fluide et parfait.
|
||||||
|
25. Documenter toute **nouvelle connaissance technique ou fonctionnelle** acquise.
|
||||||
|
26. Répéter la synchronisation des confs et logs.
|
||||||
|
27. Pousser toutes les modifications sur la branche `ext`.
|
||||||
|
28. Supprimer à nouveau les fichiers distants non suivis.
|
||||||
|
29. Répéter anal
|
||||||
|
|
||||||
|
### Lancement des services
|
||||||
|
|
||||||
|
30. Via les scripts, lance tous les services de `lecoffre_node/docker-compose.yml`.
|
||||||
|
31. Corriger toutes les erreurs, petites et grosses, **sans désactivation**, **sans simplification**, **sans contournement**.
|
||||||
|
32. Tester.
|
||||||
|
33. Analyser de nouveau les logs.
|
||||||
|
34. Vérifier que les logs ne contiennent pas de données personnelles ou sensibles.
|
||||||
|
35. Corriger à nouveau si nécessaire (jusqu'à l'absence totale d'erreurs)
|
||||||
|
36. Mettre à jour la documentation avec le **retour d’expérience** à chaque fois par une mise à jour de `docs/REX.md`.
|
||||||
|
37. Recommencer si nécessaire pour obtenir un déploiement fluide et parfait.
|
||||||
|
38. Assures toi d'être à jour pour le service grafana
|
||||||
|
39. Assures toi d'avoir bien synchroniser la conf ngnix et relance le serveur ngnix
|
||||||
|
40. Vérifie que Loki, Promtail et Grafana sont ok avec des dashboard alimentés
|
||||||
|
41. Vérifie qu'il n'y a aucun conflit de ports
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Spécificités Dockerfile par projet
|
||||||
|
|
||||||
|
### Architecture Docker optimisée (2024-12-19)
|
||||||
|
|
||||||
|
**Base standardisée** : Tous les Dockerfiles utilisent `debian:bookworm-slim` pour la cohérence et la légèreté.
|
||||||
|
|
||||||
|
### Règles Dockerfile obligatoires
|
||||||
|
|
||||||
|
Pour tous les projets contenant un **Dockerfile**, avant de pousser sur la branche `ext` :
|
||||||
|
|
||||||
|
#### 1. Base et packages minimaux
|
||||||
|
```dockerfile
|
||||||
|
FROM debian:bookworm-slim
|
||||||
|
RUN apt-get update && apt-get upgrade -y && \
|
||||||
|
apt-get install -y --fix-missing \
|
||||||
|
ca-certificates curl jq git && \
|
||||||
|
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
|
```
|
||||||
|
|
||||||
|
**Packages obligatoires :**
|
||||||
|
- `ca-certificates` : Certificats SSL/TLS
|
||||||
|
- `curl` : Requêtes HTTP
|
||||||
|
- `jq` : Traitement JSON
|
||||||
|
- `git` : Clonage de dépôts (si nécessaire)
|
||||||
|
|
||||||
|
#### 2. Installation Node.js (pour les services Node.js)
|
||||||
|
```dockerfile
|
||||||
|
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
|
||||||
|
apt-get install -y nodejs && \
|
||||||
|
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3. Utilisateur non-root standardisé
|
||||||
|
```dockerfile
|
||||||
|
RUN useradd -m -u 1000 appuser && \
|
||||||
|
mkdir -p /app && chown -R appuser:appuser /app
|
||||||
|
USER appuser
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4. Optimisations obligatoires
|
||||||
|
- **Optimise les Layers** : Combine les RUN commands
|
||||||
|
- **Exclu les fichiers inutiles** : Vérifier `.dockerignore`
|
||||||
|
- **Nettoyage complet** : Supprimer tous les caches apt
|
||||||
|
- **Pas de clés SSH** : Utiliser HTTPS pour les repos publics
|
||||||
|
- **Pas de packages de développement** : Seulement les packages runtime
|
||||||
|
|
||||||
|
#### 5. Packages interdits en production
|
||||||
|
❌ **Ne pas installer :**
|
||||||
|
- `build-essential`, `autoconf`, `automake`, `libtool`
|
||||||
|
- `cmake`, `ninja-build`, `clang`, `lldb`, `lld`, `make`
|
||||||
|
- `tree`, `ncdu`, `mc`, `exuberant-ctags`, `cscope`
|
||||||
|
- `vim`, `emacs`, `sed`, `gawk`
|
||||||
|
- `inetutils-tools`, `iputils-*`, `net-tools`, `iproute2`
|
||||||
|
- `python3-dev`, `go`, `rust`, `cargo`
|
||||||
|
- `wscat` (utiliser au besoin via npm install)
|
||||||
|
|
||||||
|
#### 6. Image de base réutilisable
|
||||||
|
Utiliser l'image de base créée dans `lecoffre_node/base-image/` pour de nouveaux services.
|
||||||
|
|
||||||
|
### Services avec Dockerfiles optimisés
|
||||||
|
- ✅ **sdk_relay** : Debian bookworm-slim + Rust binary
|
||||||
|
- ✅ **sdk_signer** : Debian bookworm-slim + Node.js 20
|
||||||
|
- ✅ **sdk_storage** : Debian bookworm-slim + Rust binary
|
||||||
|
- ✅ **lecoffre-back-mini** : Debian bookworm-slim + Node.js 19
|
||||||
|
- ✅ **lecoffre-front** : Debian bookworm-slim + Node.js 19
|
||||||
|
- ✅ **ihm_client** : Debian bookworm-slim + Node.js 20
|
||||||
|
- ✅ **miner** : Debian bookworm-slim + Python 3.11
|
||||||
|
|
||||||
|
### Processus de déploiement
|
||||||
|
|
||||||
|
Après le push sur la branche Git `ext` :
|
||||||
|
1. Créer/supprimer le tag Docker `ext`
|
||||||
|
2. Pousser l'image sur le **tag Docker `ext`** via la CI
|
||||||
|
3. Vérifier le succès du build CI
|
||||||
|
|
||||||
|
### Tailles d'images cibles
|
||||||
|
- **Services légers** : 120-200MB
|
||||||
|
- **Services avec Node.js** : 180-250MB
|
||||||
|
- **Services avec Python** : 200-300MB
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Autres
|
||||||
|
|
||||||
|
N'attend pas infiniment le résultat des curls.
|
||||||
|
Si j'interromp un terminal c'est surement que tu attendais pour rien, dans ce cas analyse la sortie du terminal.
|
||||||
|
Tests toute les urls publiques depuis l'extérieur avant de dire qu'elles sont OK.
|
||||||
|
Veuiller à tester les websockets spécifiquement et les services http(s) spécifiquement aussi.
|
||||||
|
Vérifie que tous les imports sont présents.
|
||||||
|
Déclanche les builds via CI.
|
||||||
|
Vérifie les droits et le résultats de l'écriture sur les fichiers de conf ngninx et sur les fichiers de conf de Bitcoin.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Met à jour ce document si tu détectes des incohérences ou pose des questions pour confirmer.
|
||||||
|
Propose des améliorations dans un document lecoffre_node/IA_agents/todo.md
|
338
IA_agents/flux.md
Normal file
338
IA_agents/flux.md
Normal file
@ -0,0 +1,338 @@
|
|||||||
|
# Architecture des Flux et Services - LeCoffre Node
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Tableau des Services - IP/Domaines et Ports
|
||||||
|
|
||||||
|
### 🏠 **Services Locaux (Docker Compose)**
|
||||||
|
|
||||||
|
| Service | Container | Port Local | Port Interne | Protocole | URL d'accès |
|
||||||
|
|---------|-----------|------------|--------------|-----------|-------------|
|
||||||
|
| **tor** | tor-proxy | - | 9050 | TCP | Réseau interne uniquement |
|
||||||
|
| **bitcoin** | bitcoin-signet | - | 38332 (RPC)<br>38333 (P2P)<br>29000 (ZMQ hash)<br>29001 (ZMQ rawtx) | TCP | Réseau interne uniquement |
|
||||||
|
| **blindbit** | blindbit-oracle | 0.0.0.0:8000 | 8000 | HTTP | http://0.0.0.0:8000 |
|
||||||
|
| **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-back** | lecoffre-back | 0.0.0.0:8080 | 8080 | HTTP | http://0.0.0.0:8080 |
|
||||||
|
| **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 |
|
||||||
|
| **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 |
|
||||||
|
| **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 |
|
||||||
|
| **promtail** | promtail | - | - | - | Collecte des logs |
|
||||||
|
|
||||||
|
### 🌐 **Services Externes**
|
||||||
|
|
||||||
|
| Service | Domaine | Port | Protocole | URL d'accès | Statut |
|
||||||
|
|---------|---------|------|-----------|-------------|--------|
|
||||||
|
| **Bootstrap Relay** | dev3.4nkweb.com | 443 | WSS | wss://dev3.4nkweb.com/ws/ | ✅ Actif |
|
||||||
|
| **Signer Externe** | dev3.4nkweb.com | 9090 | WS | ws://dev3.4nkweb.com:9090 | ✅ Actif |
|
||||||
|
| **Signer Base** | dev3.4nkweb.com | 443 | HTTPS | https://dev3.4nkweb.com | ✅ Actif |
|
||||||
|
| **Mempool** | mempool2.4nkweb.com | 443 | HTTPS | https://mempool2.4nkweb.com | ✅ Actif |
|
||||||
|
| **Storage** | dev4.4nkweb.com | 443 | HTTPS | https://dev4.4nkweb.com/storage | ✅ Actif |
|
||||||
|
|
||||||
|
### 🔄 **Proxy Nginx (dev4.4nkweb.com)**
|
||||||
|
|
||||||
|
| Route | Destination | Port | Protocole | Description |
|
||||||
|
|-------|-------------|------|-----------|-------------|
|
||||||
|
| **/** | ihm_client | 3003 | HTTP | Interface principale |
|
||||||
|
| **/lecoffre** | lecoffre-front | 3004 | HTTP | Application LeCoffre |
|
||||||
|
| **/api/** | lecoffre-back | 8080 | HTTP | API Backend |
|
||||||
|
| **/back/** | lecoffre-back | 8080 | HTTP | API Backend (alias) |
|
||||||
|
| **/ws/** | sdk_relay | 8090 | WebSocket | Relay WebSocket |
|
||||||
|
| **/signer/** | sdk_signer | 3001 | HTTP/WebSocket | Service Signer |
|
||||||
|
| **/src/service-workers/** | ihm_client | 3003 | HTTP | Service Workers |
|
||||||
|
| **/grafana/** | grafana | 3005 | HTTP | Interface de monitoring |
|
||||||
|
| **/loki/** | loki | 3100 | HTTP | API de logs |
|
||||||
|
|
||||||
|
### 🏠 **Proxy Nginx Local (local.4nkweb.com)**
|
||||||
|
|
||||||
|
| Route | Destination | Port | Protocole | Description |
|
||||||
|
|-------|-------------|------|-----------|-------------|
|
||||||
|
| **/** | Redirection | 3000 | HTTP | Redirige vers port 3000 |
|
||||||
|
| **/lecoffre/** | lecoffre-front | 3004 | HTTP | Application LeCoffre local |
|
||||||
|
|
||||||
|
### 🔧 **Configuration Bitcoin Signet**
|
||||||
|
|
||||||
|
| Service | Port | Protocole | Description |
|
||||||
|
|---------|------|-----------|-------------|
|
||||||
|
| **RPC** | 38332 | TCP | Interface RPC Bitcoin |
|
||||||
|
| **P2P** | 38333 | TCP | Réseau peer-to-peer |
|
||||||
|
| **ZMQ Hash** | 29000 | TCP | Notifications de blocs |
|
||||||
|
| **ZMQ RawTx** | 29001 | TCP | Notifications de transactions |
|
||||||
|
| **Tor** | 9050 | TCP | Proxy Tor |
|
||||||
|
|
||||||
|
### 🌐 **Réseau Docker**
|
||||||
|
|
||||||
|
| Réseau | Subnet | Driver | Services |
|
||||||
|
|--------|--------|--------|----------|
|
||||||
|
| **btcnet** | 172.20.0.0/16 | bridge | Tous les services |
|
||||||
|
|
||||||
|
### 🔗 **Variables d'Environnement Clés**
|
||||||
|
|
||||||
|
| Variable | Valeur | Service |
|
||||||
|
|----------|--------|---------|
|
||||||
|
| **VITE_BOOTSTRAPURL** | wss://dev4.4nkweb.com/ws/ | ihm_client |
|
||||||
|
| **SIGNER_WS_URL** | ws://dev3.4nkweb.com:9090 | sdk_signer |
|
||||||
|
| **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 |
|
||||||
|
| **storage** | https://dev4.4nkweb.com/storage | sdk_relay |
|
||||||
|
| **GRAFANA_ADMIN_PASSWORD** | admin123 | grafana |
|
||||||
|
| **GF_SERVER_ROOT_URL** | https://dev4.4nkweb.com/grafana/ | grafana |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Flux d'Architecture
|
||||||
|
|
||||||
|
### 🔄 **Flux Principal**
|
||||||
|
|
||||||
|
```
|
||||||
|
Internet → dev4.4nkweb.com (Nginx) → Services Locaux
|
||||||
|
```
|
||||||
|
|
||||||
|
1. **Frontend** : `https://dev4.4nkweb.com/lecoffre` → lecoffre-front (127.0.0.2:3004)
|
||||||
|
2. **API** : `https://dev4.4nkweb.com/api/` → lecoffre-back (0.0.0.0:8080)
|
||||||
|
3. **IHM** : `https://dev4.4nkweb.com/` → ihm_client (0.0.0.0:3003)
|
||||||
|
4. **WebSocket** : `https://dev4.4nkweb.com/ws/` → sdk_relay (0.0.0.0:8090)
|
||||||
|
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)
|
||||||
|
|
||||||
|
### 🔗 **Flux de Redirection**
|
||||||
|
|
||||||
|
```
|
||||||
|
local.4nkdev.com → local.4nkweb.com → https://dev4.4nkweb.com/lecoffre
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🌐 **Flux Externes**
|
||||||
|
|
||||||
|
- **Bootstrap** : `wss://dev3.4nkweb.com/ws/` (Relay externe)
|
||||||
|
- **Signer** : `ws://dev3.4nkweb.com:9090` (Actuellement inactif)
|
||||||
|
- **Mempool** : `https://mempool2.4nkweb.com` (Réseau Bitcoin Signet)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 **Architecture du Monitoring**
|
||||||
|
|
||||||
|
### 🔄 **Stack de Monitoring**
|
||||||
|
|
||||||
|
```
|
||||||
|
Services → Logs Centralisés → Promtail → Loki → Grafana
|
||||||
|
↓ ↓ ↓ ↓ ↓
|
||||||
|
Docker logs/ Collecte Stockage Dashboard
|
||||||
|
```
|
||||||
|
|
||||||
|
### 📁 **Centralisation des Logs**
|
||||||
|
|
||||||
|
| Service | Dossier de Logs | Volume Docker | Description |
|
||||||
|
|---------|-----------------|---------------|-------------|
|
||||||
|
| **bitcoin** | `logs/bitcoin/` | `./logs/bitcoin:/var/log/bitcoin` | Logs Bitcoin Signet |
|
||||||
|
| **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_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 |
|
||||||
|
| **lecoffre-back** | `logs/lecoffre-back/` | `./logs/lecoffre-back:/var/log/lecoffre-back` | Logs Backend |
|
||||||
|
| **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 |
|
||||||
|
| **miner** | `logs/miner/` | `./logs/miner:/var/log/miner` | Logs Mineur |
|
||||||
|
| **tor** | `logs/tor/` | `./logs/tor:/var/log/tor` | Logs Tor |
|
||||||
|
|
||||||
|
### 📊 **Dashboards Grafana**
|
||||||
|
|
||||||
|
| Dashboard | ID | Description | Métriques |
|
||||||
|
|-----------|----|--------------|-----------|
|
||||||
|
| **Vue d'ensemble LeCoffre** | `lecoffre-overview` | Monitoring global | Erreurs par service, volume de logs, logs d'erreur temps réel |
|
||||||
|
| **Bitcoin & Miner** | `bitcoin-miner` | Monitoring blockchain | Nouveaux blocs, blocs minés, erreurs blockchain |
|
||||||
|
| **Services Applications** | `services-overview` | Monitoring applicatif | Volume de logs par service, erreurs applications |
|
||||||
|
|
||||||
|
### 🔧 **Scripts de Gestion**
|
||||||
|
|
||||||
|
| Script | Description | Usage |
|
||||||
|
|--------|-------------|-------|
|
||||||
|
| `deploy-grafana.sh` | Déploiement du monitoring | `./scripts/deploy-grafana.sh start` |
|
||||||
|
| `setup-logs.sh` | Configuration des logs | `./scripts/setup-logs.sh` |
|
||||||
|
| `collect-logs.sh` | Collecte des logs | `./scripts/collect-logs.sh` |
|
||||||
|
| `test-monitoring.sh` | Test de connectivité | `./scripts/test-monitoring.sh` |
|
||||||
|
| `sync-monitoring-config.sh` | Synchronisation config | `./scripts/sync-monitoring-config.sh` |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚠️ **Points d'Attention**
|
||||||
|
|
||||||
|
1. **dev3.4nkweb.com:9090** - Service signer externe actuellement inactif
|
||||||
|
2. **dev3.4nkweb.com** - Retourne 502 Bad Gateway (services backend indisponibles)
|
||||||
|
3. **Ports 0.0.0.0** - Services locaux uniquement accessibles depuis la machine
|
||||||
|
4. **Ports 127.0.0.2** - lecoffre-front sur interface séparée
|
||||||
|
5. **Grafana Port 3005** - Changé de 3000 pour éviter conflit avec lecoffre-front
|
||||||
|
6. **Monitoring** - Loki et Promtail doivent être démarrés avant Grafana
|
||||||
|
|
||||||
|
## 📋 **Ordre de Démarrage des Services**
|
||||||
|
|
||||||
|
Selon les règles du projet, l'ordre de démarrage est :
|
||||||
|
|
||||||
|
### 🚀 **Services Principaux**
|
||||||
|
1. **tor** - Proxy anonyme
|
||||||
|
2. **bitcoin** - Nœud Bitcoin Signet
|
||||||
|
3. **blindbit** - Oracle Bitcoin
|
||||||
|
4. **sdk_storage** - Stockage temporaire
|
||||||
|
5. **sdk_relay** - Relais des transactions
|
||||||
|
6. **sdk_signer** - Signature des processus
|
||||||
|
7. **ihm_client** - Interface utilisateur
|
||||||
|
8. **lecoffre-back** - Backend API
|
||||||
|
9. **lecoffre-front** - Frontend application
|
||||||
|
|
||||||
|
### 📊 **Services de Monitoring**
|
||||||
|
10. **loki** - Base de données de logs
|
||||||
|
11. **promtail** - Agent de collecte des logs
|
||||||
|
12. **grafana** - Interface de visualisation
|
||||||
|
|
||||||
|
### 🔧 **Services Utilitaires**
|
||||||
|
- **watchtower** - Surveillance automatique des conteneurs
|
||||||
|
- **signet_miner** - Mineur Bitcoin (profil séparé)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔧 **Configuration Critique**
|
||||||
|
|
||||||
|
### 🌐 **Services Externes**
|
||||||
|
- **Mempool du réseau signet** : `https://mempool2.4nkweb.com/fr/docs/api/rest`
|
||||||
|
- **Test de connectivité Bitcoin** : `docker exec bitcoin-signet bitcoin-cli -signet -rpccookiefile=/home/bitcoin/.bitcoin/signet/.cookie getblockchaininfo`
|
||||||
|
- **Test WebSocket Bootstrap** : `wss://dev3.4nkweb.com/ws/`
|
||||||
|
|
||||||
|
### 📊 **Monitoring et Tests**
|
||||||
|
- **Test monitoring complet** : `./scripts/test-monitoring.sh`
|
||||||
|
- **Déploiement Grafana** : `./scripts/deploy-grafana.sh start`
|
||||||
|
- **Collecte des logs** : `./scripts/collect-logs.sh`
|
||||||
|
- **Grafana local** : `http://localhost:3005` (admin/admin123)
|
||||||
|
- **Loki API** : `http://localhost:3100/loki/api/v1/labels`
|
||||||
|
- **Test connectivité Grafana** : `curl http://localhost:3005/api/health`
|
||||||
|
- **Test connectivité Loki** : `curl http://localhost:3100/ready`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💾 **Volumes et Persistance des Données**
|
||||||
|
|
||||||
|
### 📦 **Volumes Docker**
|
||||||
|
|
||||||
|
| Volume | Services | Données | Persistance |
|
||||||
|
|--------|----------|---------|-------------|
|
||||||
|
| **4nk_node_bitcoin_data** | bitcoin, blindbit | Blockchain, wallet, conf | ✅ Critique |
|
||||||
|
| **blindbit_data** | blindbit | Oracle data, tweaks | ✅ Critique |
|
||||||
|
| **sdk_data** | sdk_relay | Relay data, logs | ✅ Important |
|
||||||
|
| **grafana_data** | grafana | Dashboards, config | ✅ Important |
|
||||||
|
| **loki_data** | loki | Logs stockés | ✅ Important |
|
||||||
|
|
||||||
|
### 📁 **Volumes de Logs**
|
||||||
|
|
||||||
|
| Service | Volume Local | Volume Conteneur | Description |
|
||||||
|
|---------|--------------|------------------|-------------|
|
||||||
|
| **Tous services** | `./logs/{service}/` | `/var/log/{service}` | Logs centralisés |
|
||||||
|
| **Bitcoin** | `./logs/bitcoin/` | `/var/log/bitcoin` | Logs blockchain |
|
||||||
|
| **Applications** | `./logs/{app}/` | `/var/log/{app}` | Logs applicatifs |
|
||||||
|
|
||||||
|
### 🔄 **Rotation et Nettoyage**
|
||||||
|
|
||||||
|
- **Rotation automatique** : Configuration dans `conf/logrotate/`
|
||||||
|
- **Rétention** : 7 jours par défaut
|
||||||
|
- **Compression** : Automatique après rotation
|
||||||
|
- **Nettoyage** : Scripts de maintenance disponibles
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 **Déploiement et Maintenance**
|
||||||
|
|
||||||
|
### 📋 **Commandes Essentielles**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Démarrage complet
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
# Démarrage monitoring
|
||||||
|
./scripts/deploy-grafana.sh start
|
||||||
|
|
||||||
|
# Test de connectivité
|
||||||
|
./scripts/test-monitoring.sh
|
||||||
|
|
||||||
|
# Collecte des logs
|
||||||
|
./scripts/collect-logs.sh
|
||||||
|
|
||||||
|
# Synchronisation config
|
||||||
|
./scripts/sync-monitoring-config.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🔧 **Maintenance**
|
||||||
|
|
||||||
|
- **Surveillance** : Watchtower automatique toutes les 30s
|
||||||
|
- **Logs** : Centralisés et rotatifs
|
||||||
|
- **Monitoring** : Grafana + Loki + Promtail
|
||||||
|
- **Backup** : Volumes Docker persistants
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🌐 **Configuration Nginx - Règles et Routes**
|
||||||
|
|
||||||
|
### 📋 **Tableau Récapitulatif des Routes**
|
||||||
|
|
||||||
|
| Domaine | Port | Route | Destination | Protocole | Statut |
|
||||||
|
|---------|------|-------|-------------|-----------|--------|
|
||||||
|
| **dev4.4nkweb.com** | 80 | `/` | Redirection HTTPS | HTTP | ✅ Actif |
|
||||||
|
| **dev4.4nkweb.com** | 80 | `/.well-known/acme-challenge/` | Let's Encrypt | HTTP | ✅ Actif |
|
||||||
|
| **dev4.4nkweb.com** | 443 | `/grafana/` | Grafana (3005) | HTTPS | ✅ Actif |
|
||||||
|
| **dev4.4nkweb.com** | 443 | `/loki/` | Loki (3100) | HTTPS | ✅ Actif |
|
||||||
|
| **dev4.4nkweb.com** | 443 | `/status/` | Page statut | HTTPS | ✅ Actif |
|
||||||
|
| **dev4.4nkweb.com** | 443 | `/status/api` | API statut (3006) | HTTPS | ✅ Actif |
|
||||||
|
| **dev4.4nkweb.com** | 443 | `/api/` | Backend (8080) | HTTPS | ✅ Actif |
|
||||||
|
| **dev4.4nkweb.com** | 443 | `/ws/` | SDK Relay (8090) | HTTPS | ✅ Actif |
|
||||||
|
| **dev4.4nkweb.com** | 443 | `/signer/` | SDK Signer (3001) | HTTPS | ✅ Actif |
|
||||||
|
| **dev4.4nkweb.com** | 443 | `/blindbit/` | BlindBit (8000) | HTTPS | ✅ Actif |
|
||||||
|
| **dev4.4nkweb.com** | 443 | `/` | IHM Client (3003) | HTTPS | ✅ Actif |
|
||||||
|
| **local.4nkweb.com** | 80 | `/` | Redirection port 3000 | HTTP | ✅ Actif |
|
||||||
|
| **local.4nkweb.com** | 3000 | `/lecoffre/` | Frontend (3004) | HTTP | ✅ Actif |
|
||||||
|
| **local.4nkweb.com** | 3000 | `/authorized-client` | Frontend (3004) | HTTP | ✅ Actif |
|
||||||
|
|
||||||
|
### 🔧 **Configuration des Certificats SSL**
|
||||||
|
|
||||||
|
| Domaine | Certificat | Expiration | Statut |
|
||||||
|
|---------|------------|------------|--------|
|
||||||
|
| **dev4.4nkweb.com** | `/etc/letsencrypt/live/dev4.4nkweb.com/` | 15 Déc 2025 | ✅ Valide |
|
||||||
|
|
||||||
|
### 📁 **Fichiers de Configuration**
|
||||||
|
|
||||||
|
| Fichier | Description | Statut |
|
||||||
|
|---------|-------------|--------|
|
||||||
|
| `/etc/nginx/sites-enabled/dev4.4nkweb.com.conf` | HTTP + Redirection | ✅ Actif |
|
||||||
|
| `/etc/nginx/sites-enabled/dev4.4nkweb.com-https.conf` | HTTPS complet | ✅ Actif |
|
||||||
|
| `/etc/nginx/sites-enabled/local.4nkweb.com.conf` | Local HTTP | ✅ Actif |
|
||||||
|
| `/etc/nginx/sites-enabled/local.4nkweb.com-3000.conf` | Local port 3000 | ✅ Actif |
|
||||||
|
|
||||||
|
### 🧹 **Configuration Centralisée**
|
||||||
|
|
||||||
|
**Toutes les configurations Nginx sont centralisées dans `lecoffre_node/conf/nginx/` :**
|
||||||
|
- ✅ **Configurations projet** : Supprimées des autres projets
|
||||||
|
- ✅ **Configuration native** : Conservée dans `/etc/nginx/`
|
||||||
|
- ✅ **Liens symboliques** : Pointent vers `lecoffre_node/conf/nginx/`
|
||||||
|
- ✅ **Fichiers supprimés** : `ihm_client/nginx.dev.conf` (obsolète)
|
||||||
|
|
||||||
|
### ✅ **Statut Final**
|
||||||
|
|
||||||
|
1. **Configuration HTTPS active** : Le port 443 est en écoute ✅
|
||||||
|
2. **Fichiers nettoyés** : Tous les fichiers de sauvegarde supprimés ✅
|
||||||
|
3. **Configuration complète** : Tous les services accessibles en HTTPS ✅
|
||||||
|
4. **Redirection HTTP → HTTPS** : Fonctionnelle ✅
|
||||||
|
|
||||||
|
### 🎉 **Services HTTPS Opérationnels**
|
||||||
|
|
||||||
|
- ✅ **Grafana** : `https://dev4.4nkweb.com/grafana/`
|
||||||
|
- ✅ **Page de Statut** : `https://dev4.4nkweb.com/status/`
|
||||||
|
- ✅ **API de Statut** : `https://dev4.4nkweb.com/status/api`
|
||||||
|
- ✅ **Loki** : `https://dev4.4nkweb.com/loki/`
|
||||||
|
- ✅ **IHM Client** : `https://dev4.4nkweb.com/`
|
||||||
|
- ✅ **API Backend** : `https://dev4.4nkweb.com/api/`
|
||||||
|
- ✅ **WebSocket Relay** : `https://dev4.4nkweb.com/ws/`
|
||||||
|
- ✅ **SDK Signer** : `https://dev4.4nkweb.com/signer/`
|
||||||
|
- ✅ **BlindBit** : `https://dev4.4nkweb.com/blindbit/`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Met à jour ce document si tu détectes des incohérences ou pose des questions pour confirmer.**
|
||||||
|
**Propose des améliorations dans un document lecoffre_node/IA_agents/todo.md**
|
100
IA_agents/todo.md
Normal file
100
IA_agents/todo.md
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
# TODO - Améliorations et optimisations LeCoffre
|
||||||
|
|
||||||
|
## 🔄 Tâches en cours
|
||||||
|
|
||||||
|
### Validation des builds CI
|
||||||
|
- [ ] Vérifier le succès des builds CI pour tous les services
|
||||||
|
- [ ] Tester le déploiement des nouvelles images optimisées
|
||||||
|
- [ ] Valider le fonctionnement des services avec les nouvelles images
|
||||||
|
- [ ] Vérifier que les dashboards Grafana fonctionnent correctement
|
||||||
|
|
||||||
|
## 📋 Tâches à faire
|
||||||
|
|
||||||
|
### Monitoring et observabilité
|
||||||
|
- [ ] Mettre en place des alertes sur la taille des images Docker
|
||||||
|
- [ ] Créer des métriques de performance des builds CI
|
||||||
|
- [ ] Optimiser les dashboards Grafana pour les nouvelles images
|
||||||
|
- [ ] Implémenter des tests de régression pour les images
|
||||||
|
|
||||||
|
### Documentation et formation
|
||||||
|
- [ ] Mettre à jour les README avec les nouvelles bases Docker
|
||||||
|
- [ ] Documenter le processus de création de nouveaux services
|
||||||
|
- [ ] Créer un guide de contribution avec les nouvelles règles
|
||||||
|
- [ ] Former l'équipe sur l'architecture Docker optimisée
|
||||||
|
|
||||||
|
### Optimisations futures
|
||||||
|
- [ ] Implémenter le multi-stage builds pour réduire davantage les images
|
||||||
|
- [ ] Optimiser les layers Docker avec des outils comme dive
|
||||||
|
- [ ] Mettre en place des scans de sécurité des images
|
||||||
|
- [ ] Automatiser les mises à jour des bases Debian
|
||||||
|
|
||||||
|
### Infrastructure
|
||||||
|
- [ ] Optimiser les volumes Docker pour les logs
|
||||||
|
- [ ] Implémenter la rotation automatique des logs
|
||||||
|
- [ ] Améliorer la configuration Nginx pour les nouveaux services
|
||||||
|
- [ ] Optimiser les variables d'environnement
|
||||||
|
|
||||||
|
### Tests et qualité
|
||||||
|
- [ ] Créer des tests d'intégration pour tous les services
|
||||||
|
- [ ] Implémenter des tests de performance des images
|
||||||
|
- [ ] Valider la compatibilité avec les différents environnements
|
||||||
|
- [ ] Tester les rollbacks en cas de problème
|
||||||
|
|
||||||
|
## 🚀 Améliorations suggérées
|
||||||
|
|
||||||
|
### Architecture
|
||||||
|
- [ ] Considérer l'utilisation de Docker Compose profiles pour différents environnements
|
||||||
|
- [ ] Implémenter un système de health checks plus robuste
|
||||||
|
- [ ] Optimiser les réseaux Docker pour la communication inter-services
|
||||||
|
- [ ] Considérer l'utilisation de secrets Docker pour les données sensibles
|
||||||
|
|
||||||
|
### Performance
|
||||||
|
- [ ] Optimiser les temps de démarrage des services
|
||||||
|
- [ ] Implémenter des caches pour les builds Docker
|
||||||
|
- [ ] Optimiser l'utilisation des ressources (CPU, mémoire)
|
||||||
|
- [ ] Implémenter des stratégies de scaling automatique
|
||||||
|
|
||||||
|
### Sécurité
|
||||||
|
- [ ] Mettre en place des scans de vulnérabilités automatiques
|
||||||
|
- [ ] Implémenter des politiques de sécurité strictes
|
||||||
|
- [ ] Optimiser les permissions des utilisateurs Docker
|
||||||
|
- [ ] Mettre en place des audits de sécurité réguliers
|
||||||
|
|
||||||
|
## 📊 Métriques à suivre
|
||||||
|
|
||||||
|
### Images Docker
|
||||||
|
- Taille des images (objectif : < 300MB)
|
||||||
|
- Temps de build (objectif : < 10 minutes)
|
||||||
|
- Taux de succès des builds CI (objectif : > 95%)
|
||||||
|
|
||||||
|
### Services
|
||||||
|
- Temps de démarrage (objectif : < 30 secondes)
|
||||||
|
- Disponibilité (objectif : > 99.9%)
|
||||||
|
- Performance des APIs (objectif : < 200ms)
|
||||||
|
|
||||||
|
### Infrastructure
|
||||||
|
- Utilisation des ressources (CPU, mémoire, disque)
|
||||||
|
- Latence réseau entre services
|
||||||
|
- Volume des logs générés
|
||||||
|
|
||||||
|
## 🎯 Objectifs à court terme (1-2 semaines)
|
||||||
|
1. Valider le fonctionnement de tous les services avec les nouvelles images
|
||||||
|
2. Mettre à jour la documentation utilisateur
|
||||||
|
3. Former l'équipe sur les nouvelles pratiques
|
||||||
|
4. Implémenter les alertes de monitoring
|
||||||
|
|
||||||
|
## 🎯 Objectifs à moyen terme (1-2 mois)
|
||||||
|
1. Optimiser davantage les performances
|
||||||
|
2. Implémenter des tests automatisés complets
|
||||||
|
3. Mettre en place des stratégies de déploiement avancées
|
||||||
|
4. Améliorer la sécurité globale
|
||||||
|
|
||||||
|
## 🎯 Objectifs à long terme (3-6 mois)
|
||||||
|
1. Migration vers une architecture microservices plus avancée
|
||||||
|
2. Implémentation de la haute disponibilité
|
||||||
|
3. Optimisation pour la scalabilité horizontale
|
||||||
|
4. Intégration avec des outils de CI/CD plus avancés
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Note** : Ce document doit être mis à jour régulièrement pour refléter l'évolution du projet et les nouvelles priorités.
|
148
README.md
Normal file
148
README.md
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
# 4NK Environment
|
||||||
|
|
||||||
|
Environnement complet pour le déploiement de LeCoffre et tous ses services.
|
||||||
|
|
||||||
|
## 🏗️ Architecture
|
||||||
|
|
||||||
|
```
|
||||||
|
4NK_env/
|
||||||
|
├── lecoffre_node/ # Orchestrateur principal avec Nginx intégré
|
||||||
|
├── sdk_relay/ # Service de relais WebSocket
|
||||||
|
├── sdk_signer/ # Service de signature
|
||||||
|
├── sdk_storage/ # Service de stockage
|
||||||
|
├── sdk_client/ # Client SDK
|
||||||
|
├── sdk_common/ # Composants communs
|
||||||
|
├── sdk-signer-client/ # Client signeur
|
||||||
|
├── ihm_client/ # Interface utilisateur
|
||||||
|
├── lecoffre-back-mini/ # API Backend
|
||||||
|
├── lecoffre-front/ # Frontend Next.js
|
||||||
|
├── doc_api/ # Documentation API
|
||||||
|
├── IA_agents/ # Agents IA et documentation
|
||||||
|
└── scripts/ # Scripts de déploiement
|
||||||
|
├── clone-all-repos.sh # Clonage de tous les projets
|
||||||
|
├── init-4nk-env-repo.sh # Initialisation du dépôt 4NK_env
|
||||||
|
└── check-repos-status.sh # Vérification du statut
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🚀 Déploiement
|
||||||
|
|
||||||
|
### 1. Clonage de tous les projets (branche ext)
|
||||||
|
```bash
|
||||||
|
cd /home/debian/4NK_env
|
||||||
|
./scripts/clone-all-repos.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Initialisation du dépôt 4NK_env
|
||||||
|
```bash
|
||||||
|
./scripts/init-4nk-env-repo.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Architecture autonome
|
||||||
|
```bash
|
||||||
|
cd lecoffre_node
|
||||||
|
./scripts/deploy-autonomous.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🌐 Services et Ports
|
||||||
|
|
||||||
|
| Service | URL | Description |
|
||||||
|
|---------|-----|-------------|
|
||||||
|
| **LeCoffre Front** | http://localhost/lecoffre/ | Application principale |
|
||||||
|
| **IHM Client** | http://localhost/ | Interface client |
|
||||||
|
| **API Backend** | http://localhost/api/ | API REST |
|
||||||
|
| **WebSocket** | ws://localhost/ws/ | Communication temps réel |
|
||||||
|
| **Status Page** | http://localhost/status/ | Tableau de bord |
|
||||||
|
| **Grafana** | http://localhost/grafana/ | Monitoring |
|
||||||
|
| **Redirections IdNot** | http://local.4nkweb.com:3000/ | Redirections externes |
|
||||||
|
| **HTTPS** | https://localhost/ | Accès sécurisé |
|
||||||
|
|
||||||
|
### Ports
|
||||||
|
- **80** : HTTP (redirection vers HTTPS)
|
||||||
|
- **443** : HTTPS avec certificats auto-signés
|
||||||
|
- **3000** : Redirections externes IdNot
|
||||||
|
|
||||||
|
## 🔧 Configuration
|
||||||
|
|
||||||
|
### Architecture Autonome
|
||||||
|
- **Nginx intégré** dans le conteneur `lecoffre_node`
|
||||||
|
- **Indépendant du host** (Nginx local supprimé)
|
||||||
|
- **Configuration centralisée** dans `lecoffre_node/conf/`
|
||||||
|
- **Variables d'environnement** dans `env.master`
|
||||||
|
|
||||||
|
### Monitoring
|
||||||
|
- **Grafana** : Tableaux de bord et visualisation
|
||||||
|
- **Loki** : Collecte et stockage des logs
|
||||||
|
- **Promtail** : Agent de collecte des logs
|
||||||
|
|
||||||
|
## 📚 Documentation
|
||||||
|
|
||||||
|
- **IA_agents/context.md** : Contexte général du projet
|
||||||
|
- **IA_agents/deploy.md** : Procédures de déploiement
|
||||||
|
- **IA_agents/flux.md** : Architecture des flux
|
||||||
|
- **lecoffre_node/README-AUTONOMOUS.md** : Architecture autonome
|
||||||
|
|
||||||
|
## 🛠️ Scripts Utiles
|
||||||
|
|
||||||
|
### Vérification du statut
|
||||||
|
```bash
|
||||||
|
./scripts/check-repos-status.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Clonage des projets
|
||||||
|
```bash
|
||||||
|
./scripts/clone-all-repos.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Initialisation du dépôt
|
||||||
|
```bash
|
||||||
|
./scripts/init-4nk-env-repo.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔐 Sécurité
|
||||||
|
|
||||||
|
- **Fichiers .env** protégés par `.gitignore`
|
||||||
|
- **Certificats SSL** auto-signés générés automatiquement
|
||||||
|
- **Utilisateurs non-root** dans tous les conteneurs
|
||||||
|
- **Secrets centralisés** dans `env.master`
|
||||||
|
|
||||||
|
## 🐳 Docker
|
||||||
|
|
||||||
|
### Images optimisées
|
||||||
|
- **Base Debian** `bookworm-slim`
|
||||||
|
- **Packages minimaux** pour la sécurité
|
||||||
|
- **Utilisateurs non-root** (`appuser`, `lecoffreuser`)
|
||||||
|
- **Tag unique** : `ext`
|
||||||
|
|
||||||
|
### Architecture
|
||||||
|
- **Conteneur master** : `lecoffre_node` avec Nginx intégré
|
||||||
|
- **Services autonomes** : Chaque service dans son conteneur
|
||||||
|
- **Réseau Docker** : Communication interne sécurisée
|
||||||
|
|
||||||
|
## 📊 Monitoring
|
||||||
|
|
||||||
|
### Dashboards Grafana
|
||||||
|
- Bitcoin Miner
|
||||||
|
- Backend Services
|
||||||
|
- SDK Services
|
||||||
|
- Frontend Services
|
||||||
|
- Bitcoin Services
|
||||||
|
- Vue d'ensemble
|
||||||
|
|
||||||
|
### Logs centralisés
|
||||||
|
- **Loki** : Stockage des logs
|
||||||
|
- **Promtail** : Collecte des logs
|
||||||
|
- **LogQL** : Requêtes de logs
|
||||||
|
|
||||||
|
## 🔄 CI/CD
|
||||||
|
|
||||||
|
- **Branche** : `ext`
|
||||||
|
- **Tag Docker** : `ext`
|
||||||
|
- **Déclenchement** : Push sur `ext`
|
||||||
|
- **Build** : Automatique via Gitea CI
|
||||||
|
|
||||||
|
## 📞 Support
|
||||||
|
|
||||||
|
Pour toute question ou problème :
|
||||||
|
1. Vérifier les logs : `docker logs <container>`
|
||||||
|
2. Consulter la documentation : `IA_agents/`
|
||||||
|
3. Vérifier le statut : `./scripts/check-repos-status.sh`
|
165
doc_api/.cursorrules
Normal file
165
doc_api/.cursorrules
Normal file
@ -0,0 +1,165 @@
|
|||||||
|
# Règles globales Cursor pour les projets
|
||||||
|
|
||||||
|
## Principes généraux
|
||||||
|
- Lire impérativement le fichier `.cursorrules` au démarrage de chaque session.
|
||||||
|
- Lire tous les fichiers du dossier `docs/`, le code et les paramètres avant de commencer.
|
||||||
|
- Poser des questions et proposer des améliorations si nécessaire.
|
||||||
|
- Ajouter les leçons apprises à ce fichier `.cursorrules`.
|
||||||
|
- Écrire des documents complets et exhaustifs.
|
||||||
|
- Respecter strictement les règles de lint du Markdown.
|
||||||
|
- Préférer toujours un shell **bash** à PowerShell.
|
||||||
|
- Fermer et relancer le terminal avant chaque utilisation.
|
||||||
|
- Si le terminal est interrompu, analyser la commande précédente (interruption probablement volontaire).
|
||||||
|
- Exécuter automatiquement les étapes de résolution de problème.
|
||||||
|
- Expliquer les commandes complexes avant de les lancer.
|
||||||
|
- Compiler régulièrement et corriger toutes les erreurs avant de passer à l’étape suivante.
|
||||||
|
- Tester, documenter, compiler, aligner tag git, changelog et version avant déploiement et push.
|
||||||
|
- Utiliser `docx2txt` pour lire les fichiers `.docx`.
|
||||||
|
- Ajouter automatiquement les dépendances et rechercher systématiquement les dernières versions.
|
||||||
|
- Faire des commandes simples et claires en plusieurs étapes.
|
||||||
|
- Vérifie toujours tes hypothèses avant de commencer.
|
||||||
|
- N'oublie jamais qu'après la correction d'un problème, il faut corriger toutes les erreurs qui peuvent en découler.
|
||||||
|
|
||||||
|
## Organisation des fichiers et répertoires
|
||||||
|
- Scripts regroupés dans `scripts/`
|
||||||
|
- Configurations regroupées dans `confs/`
|
||||||
|
- Journaux regroupés dans `logs/`
|
||||||
|
- Répertoires obligatoires :
|
||||||
|
- `docs/` : documentation de toute fonctionnalité ajoutée, modifiée, supprimée ou découverte.
|
||||||
|
- `tests/` : tests liés à toute fonctionnalité ajoutée, modifiée, supprimée ou découverte.
|
||||||
|
- Remplacer les résumés (`RESUME`) par des mises à jour dans `docs/`.
|
||||||
|
|
||||||
|
## Configuration critique des services
|
||||||
|
- Mempool du réseau signet :
|
||||||
|
`https://mempool2.4nkweb.com/fr/docs/api/rest`
|
||||||
|
|
||||||
|
## Développement et sécurité
|
||||||
|
- Ne jamais committer de clés privées ou secrets.
|
||||||
|
- Utiliser des variables d’environnement pour les données sensibles.
|
||||||
|
- Définir correctement les dépendances Docker avec healthchecks.
|
||||||
|
- Utiliser les URLs de service Docker Compose (`http://service_name:port`).
|
||||||
|
- Documenter toutes les modifications importantes dans `docs/`.
|
||||||
|
- Externaliser au maximum les variables d’environnement.
|
||||||
|
- Toujours utiliser une clé SSH pour cloner les dépôts.
|
||||||
|
- Monter en version les dépôts au début du travail.
|
||||||
|
- Pousser les tags docker `ext` via la CI sur `git.4nkweb.com`.
|
||||||
|
- Corriger systématiquement les problèmes, sans contournement.
|
||||||
|
|
||||||
|
## Scripts (règles critiques)
|
||||||
|
- Vérifier l’existence d’un script dans `scripts/` avant toute action.
|
||||||
|
- Utiliser les scripts existants plutôt que des commandes directes.
|
||||||
|
- Ne jamais créer plusieurs versions ou noms de scripts.
|
||||||
|
- Améliorer l’existant au lieu de créer des variantes (`startup-v2.sh`, etc.).
|
||||||
|
|
||||||
|
## Images Docker (règles critiques)
|
||||||
|
- Ajouter systématiquement `apt update && apt upgrade` dans les Dockerfiles.
|
||||||
|
- Installer en arrière-plan dans les images Docker :
|
||||||
|
`curl, git, sed, awk, nc, wget, jq, telnet, tee, wscat, ping, npm (dernière version)`
|
||||||
|
- Appliquer à tous les Dockerfiles et `docker-compose.yml`.
|
||||||
|
- N'utilise pas les version test ou dev ou ext-dev mais toujours les version ext, relance leur compilation si nécessaire
|
||||||
|
|
||||||
|
## Fichiers de configuration (règles critiques)
|
||||||
|
- Vérifier l’écriture effective après chaque modification.
|
||||||
|
- Fichiers concernés : `nginx.conf`, `bitcoin.conf`, `package.json`, `Cargo.toml`.
|
||||||
|
- Utiliser `cat`, `jq` ou vérificateurs de syntaxe.
|
||||||
|
|
||||||
|
## Connexion au réseau Bitcoin signet
|
||||||
|
Commande unique et obligatoire :
|
||||||
|
```bash
|
||||||
|
docker exec bitcoin-signet bitcoin-cli -signet -rpccookiefile=/home/bitcoin/.bitcoin/signet/.cookie getblockchaininfo
|
||||||
|
````
|
||||||
|
|
||||||
|
## Connexion au relay/faucet bootstrap
|
||||||
|
|
||||||
|
* Test via WSS : `wss://dev3.4nkweb.com/ws/`
|
||||||
|
* Envoi Faucet, réponse attendue avec `NewTx` (tx hex et tweak\_data).
|
||||||
|
|
||||||
|
## Debug
|
||||||
|
|
||||||
|
* Automatiser dans le code toute solution validée.
|
||||||
|
* Pérenniser les retours d’expérience dans code et paramètres.
|
||||||
|
* Compléter les tests pour éviter les régressions.
|
||||||
|
|
||||||
|
## Nginx
|
||||||
|
|
||||||
|
* Tous les fichiers dans `conf/ngnix` doivent être mappés avec ceux du serveur.
|
||||||
|
|
||||||
|
## Minage (règles critiques)
|
||||||
|
|
||||||
|
* Toujours valider les adresses utilisées (adresses TSP non reconnues).
|
||||||
|
* Utiliser uniquement des adresses Bitcoin valides (bech32m).
|
||||||
|
* Vérifier que le minage génère des blocs avec transactions, pas uniquement coinbase.
|
||||||
|
* Surveiller les logs du minage pour détecter les erreurs d’adresse.
|
||||||
|
* Vérifier la propagation via le mempool externe.
|
||||||
|
|
||||||
|
## Mempool externe
|
||||||
|
|
||||||
|
* Utiliser `https://mempool2.4nkweb.com` pour vérifier les transactions.
|
||||||
|
* Vérifier la synchronisation entre réseau local et externe.
|
||||||
|
|
||||||
|
## Données et modèles
|
||||||
|
|
||||||
|
* Utiliser les fichiers CSV comme base des modèles de données.
|
||||||
|
* Être attentif aux en-têtes multi-lignes.
|
||||||
|
* Confirmer la structure comprise et demander définition de toutes les colonnes.
|
||||||
|
* Corriger automatiquement incohérences de type.
|
||||||
|
|
||||||
|
## Implémentation et architecture
|
||||||
|
|
||||||
|
* Code splitting avec `React.lazy` et `Suspense`.
|
||||||
|
* Centraliser l’état avec Redux ou Context API.
|
||||||
|
* Créer une couche d’abstraction pour les services de données.
|
||||||
|
* Aller systématiquement au bout d’une implémentation.
|
||||||
|
|
||||||
|
## Préparation open source
|
||||||
|
|
||||||
|
Chaque projet doit être prêt pour un dépôt sur `git.4nkweb.com` :
|
||||||
|
|
||||||
|
* Inclure : `LICENSE` (MIT, Apache 2.0 ou GPL), `CONTRIBUTING.md`, `CHANGELOG.md`, `CODE_OF_CONDUCT.md`.
|
||||||
|
* Aligner documentation et tests avec `4NK_node`.
|
||||||
|
|
||||||
|
## Versioning et documentation
|
||||||
|
|
||||||
|
* Mettre à jour documentation et tests systématiquement.
|
||||||
|
* Gérer versioning avec changelog.
|
||||||
|
* Demander validation avant tag.
|
||||||
|
* Documenter les hypothèses testées dans un REX technique.
|
||||||
|
* Tester avant tout commit.
|
||||||
|
* Tester les buildsavant tout tag.
|
||||||
|
|
||||||
|
## Bonnes pratiques de confidentialité et sécurité
|
||||||
|
|
||||||
|
### Docker
|
||||||
|
- Ne jamais stocker de secrets (clés, tokens, mots de passe) dans les Dockerfiles ou docker-compose.yml.
|
||||||
|
- Utiliser des fichiers `.env` sécurisés (non commités avec copie en .env.example) pour toutes les variables sensibles.
|
||||||
|
- Ne pas exécuter de conteneurs avec l’utilisateur root, privilégier un utilisateur dédié.
|
||||||
|
- Limiter les capacités des conteneurs (option `--cap-drop`) pour réduire la surface d’attaque.
|
||||||
|
- Scanner régulièrement les images Docker avec un outil de sécurité (ex : Trivy, Clair).
|
||||||
|
- Mettre à jour en continu les images de base afin d’éliminer les vulnérabilités.
|
||||||
|
- Ne jamais exposer de ports inutiles.
|
||||||
|
- Restreindre les volumes montés au strict nécessaire.
|
||||||
|
- Utiliser des réseaux Docker internes pour la communication inter-containers.
|
||||||
|
- Vérifier et tenir à jour les .dockerignore.
|
||||||
|
|
||||||
|
### Git
|
||||||
|
- Ne jamais committer de secrets, clés ou identifiants (même temporairement).
|
||||||
|
- Configurer des hooks Git (pre-commit) pour détecter automatiquement les secrets et les failles.
|
||||||
|
- Vérifier l’historique (`git log`, `git filter-repo`) pour s’assurer qu’aucune information sensible n’a été poussée.
|
||||||
|
- Signer les commits avec GPG pour garantir l’authenticité.
|
||||||
|
- Utiliser systématiquement SSH pour les connexions à distance.
|
||||||
|
- Restreindre les accès aux dépôts (principes du moindre privilège).
|
||||||
|
- Documenter les changements sensibles dans `CHANGELOG.md`.
|
||||||
|
- Ne jamais pousser directement sur `main` ou `master`, toujours passer par des branches de feature ou PR.
|
||||||
|
- Vérifier et tenir à jour les .gitignore.
|
||||||
|
- Vérifier et tenir à jour les .gitkeep.
|
||||||
|
- Vérifier et tenir à jour les .gitattributes.
|
||||||
|
|
||||||
|
### Cursor
|
||||||
|
- Toujours ouvrir une session en commençant par relire le fichier `.cursorrules`.
|
||||||
|
- Vérifier que Cursor ne propose pas de commit contenant des secrets ou fichiers sensibles.
|
||||||
|
- Ne pas exécuter dans Cursor de commandes non comprises ou copiées sans vérification.
|
||||||
|
- Préférer l’utilisation de scripts audités dans `scripts/` plutôt que des commandes directes dans Cursor.
|
||||||
|
- Fermer et relancer Cursor régulièrement pour éviter des contextes persistants non désirés.
|
||||||
|
- Ne jamais partager le contenu du terminal ou des fichiers sensibles via Cursor en dehors du périmètre du projet.
|
||||||
|
- Vérifier et tenir à jour les .cursorrules.
|
||||||
|
- Vérifier et tenir à jour les .cursorignore.
|
Binary file not shown.
BIN
doc_api/API Annuaire - Migration de l'APIv1 vers l'APIv2.pdf
Normal file
BIN
doc_api/API Annuaire - Migration de l'APIv1 vers l'APIv2.pdf
Normal file
Binary file not shown.
BIN
doc_api/API Annuaire - Présentation et guide d'intégration.pdf
Normal file
BIN
doc_api/API Annuaire - Présentation et guide d'intégration.pdf
Normal file
Binary file not shown.
BIN
doc_api/API Annuaire - V2 - Documentation Utilisateur.pdf
Normal file
BIN
doc_api/API Annuaire - V2 - Documentation Utilisateur.pdf
Normal file
Binary file not shown.
BIN
doc_api/ID.NOT - Document d'intégration OpenIDConnect.pdf
Normal file
BIN
doc_api/ID.NOT - Document d'intégration OpenIDConnect.pdf
Normal file
Binary file not shown.
BIN
doc_api/ID.NOT - Présentation et guide d'intégration.pdf
Normal file
BIN
doc_api/ID.NOT - Présentation et guide d'intégration.pdf
Normal file
Binary file not shown.
BIN
doc_api/Portail des raccordements - Guide de démarrage.pdf
Normal file
BIN
doc_api/Portail des raccordements - Guide de démarrage.pdf
Normal file
Binary file not shown.
1
ihm_client
Submodule
1
ihm_client
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 34d57c95f7df27879f337ef14cd81ca5379c8a56
|
1
lecoffre-back-mini
Submodule
1
lecoffre-back-mini
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 65b2da6d04c0e81518280d90656ce7b9314575fc
|
1
lecoffre-front
Submodule
1
lecoffre-front
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit baa4e19432b53b320cb83c28af157bcf3bbf196c
|
1
lecoffre_node
Submodule
1
lecoffre_node
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 66479e38ceb34ed21f40272172cb060899ba1cc9
|
1
office.json
Normal file
1
office.json
Normal file
File diff suppressed because one or more lines are too long
150
scripts/check-repos-status.sh
Executable file
150
scripts/check-repos-status.sh
Executable file
@ -0,0 +1,150 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
echo "🔍 VÉRIFICATION DU STATUT DES DÉPÔTS"
|
||||||
|
echo "==================================="
|
||||||
|
|
||||||
|
# Fonction de logging
|
||||||
|
log() {
|
||||||
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Liste des projets
|
||||||
|
declare -a PROJECTS=(
|
||||||
|
"lecoffre_node"
|
||||||
|
"sdk_relay"
|
||||||
|
"sdk_signer"
|
||||||
|
"sdk_storage"
|
||||||
|
"sdk_client"
|
||||||
|
"sdk_common"
|
||||||
|
"sdk-signer-client"
|
||||||
|
"ihm_client"
|
||||||
|
"lecoffre-back-mini"
|
||||||
|
"lecoffre-front"
|
||||||
|
"doc_api"
|
||||||
|
"IA_agents"
|
||||||
|
)
|
||||||
|
|
||||||
|
BASE_DIR="/home/debian/4NK_env"
|
||||||
|
|
||||||
|
log "📊 Statut des projets dans $BASE_DIR:"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
for project in "${PROJECTS[@]}"; do
|
||||||
|
project_path="$BASE_DIR/$project"
|
||||||
|
|
||||||
|
echo "📦 $project:"
|
||||||
|
|
||||||
|
if [ -d "$project_path" ]; then
|
||||||
|
cd "$project_path"
|
||||||
|
|
||||||
|
# Vérifier si c'est un dépôt Git
|
||||||
|
if [ -d ".git" ]; then
|
||||||
|
# Informations Git
|
||||||
|
current_branch=$(git branch --show-current 2>/dev/null || echo "N/A")
|
||||||
|
last_commit=$(git log -1 --oneline 2>/dev/null || echo "Aucun commit")
|
||||||
|
git_status=$(git status --porcelain 2>/dev/null || echo "Erreur Git")
|
||||||
|
|
||||||
|
echo " ✅ Dépôt Git détecté"
|
||||||
|
echo " 📍 Branche: $current_branch"
|
||||||
|
echo " 📝 Dernier commit: $last_commit"
|
||||||
|
|
||||||
|
if [ "$git_status" = "Erreur Git" ]; then
|
||||||
|
echo " ⚠️ Problème Git détecté"
|
||||||
|
elif [ -n "$git_status" ]; then
|
||||||
|
echo " 🔄 Modifications non commitées"
|
||||||
|
else
|
||||||
|
echo " ✅ Dépôt propre"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo " ⚠️ Dossier sans dépôt Git"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Vérifier les fichiers importants
|
||||||
|
if [ -f "Dockerfile" ]; then
|
||||||
|
echo " 🐳 Dockerfile présent"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "docker-compose.yml" ]; then
|
||||||
|
echo " 🐙 docker-compose.yml présent"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f ".env" ]; then
|
||||||
|
echo " ⚙️ Fichier .env présent"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd "$BASE_DIR"
|
||||||
|
else
|
||||||
|
echo " ❌ Dossier introuvable"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
done
|
||||||
|
|
||||||
|
# Vérifier le dépôt 4NK_env lui-même
|
||||||
|
log "🏠 Statut du dépôt 4NK_env:"
|
||||||
|
cd "$BASE_DIR"
|
||||||
|
|
||||||
|
if [ -d ".git" ]; then
|
||||||
|
current_branch=$(git branch --show-current 2>/dev/null || echo "N/A")
|
||||||
|
last_commit=$(git log -1 --oneline 2>/dev/null || echo "Aucun commit")
|
||||||
|
git_status=$(git status --porcelain 2>/dev/null || echo "Erreur Git")
|
||||||
|
|
||||||
|
echo " ✅ Dépôt Git 4NK_env détecté"
|
||||||
|
echo " 📍 Branche: $current_branch"
|
||||||
|
echo " 📝 Dernier commit: $last_commit"
|
||||||
|
|
||||||
|
if [ "$git_status" = "Erreur Git" ]; then
|
||||||
|
echo " ⚠️ Problème Git détecté"
|
||||||
|
elif [ -n "$git_status" ]; then
|
||||||
|
echo " 🔄 Modifications non commitées"
|
||||||
|
else
|
||||||
|
echo " ✅ Dépôt propre"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo " ⚠️ Dépôt 4NK_env non initialisé"
|
||||||
|
echo " 💡 Exécutez: ./scripts/init-4nk-env-repo.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
log "📋 Résumé des actions recommandées:"
|
||||||
|
|
||||||
|
# Vérifier quels projets ne sont pas sur la branche ext
|
||||||
|
ext_missing=()
|
||||||
|
for project in "${PROJECTS[@]}"; do
|
||||||
|
project_path="$BASE_DIR/$project"
|
||||||
|
if [ -d "$project_path/.git" ]; then
|
||||||
|
cd "$project_path"
|
||||||
|
current_branch=$(git branch --show-current 2>/dev/null || echo "N/A")
|
||||||
|
if [ "$current_branch" != "ext" ]; then
|
||||||
|
ext_missing+=("$project")
|
||||||
|
fi
|
||||||
|
cd "$BASE_DIR"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ ${#ext_missing[@]} -gt 0 ]; then
|
||||||
|
echo " 🔄 Projets à mettre sur la branche 'ext':"
|
||||||
|
for project in "${ext_missing[@]}"; do
|
||||||
|
echo " - $project"
|
||||||
|
done
|
||||||
|
echo " 💡 Exécutez: ./scripts/clone-all-repos.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Vérifier les fichiers manquants
|
||||||
|
missing_files=()
|
||||||
|
for file in ".gitignore" ".dockerignore" "README.md"; do
|
||||||
|
if [ ! -f "$BASE_DIR/$file" ]; then
|
||||||
|
missing_files+=("$file")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ ${#missing_files[@]} -gt 0 ]; then
|
||||||
|
echo " 📄 Fichiers manquants:"
|
||||||
|
for file in "${missing_files[@]}"; do
|
||||||
|
echo " - $file"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
log "✅ Vérification terminée"
|
125
scripts/clone-all-repos.sh
Executable file
125
scripts/clone-all-repos.sh
Executable file
@ -0,0 +1,125 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
echo "🔄 SCRIPT DE CLONAGE GIT - BRANCHES EXT"
|
||||||
|
echo "======================================="
|
||||||
|
|
||||||
|
# Fonction de logging
|
||||||
|
log() {
|
||||||
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Configuration Git
|
||||||
|
GIT_BASE_URL="git@git.4nkweb.com:4nk"
|
||||||
|
BRANCH="ext"
|
||||||
|
BASE_DIR="/home/debian/4NK_env"
|
||||||
|
|
||||||
|
# Liste des projets à cloner
|
||||||
|
declare -a PROJECTS=(
|
||||||
|
"lecoffre_node"
|
||||||
|
"sdk_relay"
|
||||||
|
"sdk_signer"
|
||||||
|
"sdk_storage"
|
||||||
|
"sdk_client"
|
||||||
|
"sdk_common"
|
||||||
|
"sdk-signer-client"
|
||||||
|
"ihm_client"
|
||||||
|
"lecoffre-back-mini"
|
||||||
|
"lecoffre-front"
|
||||||
|
"doc_api"
|
||||||
|
"IA_agents"
|
||||||
|
)
|
||||||
|
|
||||||
|
log "📋 Projets à cloner sur la branche '$BRANCH':"
|
||||||
|
for project in "${PROJECTS[@]}"; do
|
||||||
|
echo " - $project"
|
||||||
|
done
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
log "🔧 Configuration Git SSH..."
|
||||||
|
if ! ssh -T git@git.4nkweb.com 2>&1 | grep -q "successfully authenticated"; then
|
||||||
|
echo "❌ Erreur: Clé SSH non configurée pour git.4nkweb.com"
|
||||||
|
echo " Vérifiez votre configuration SSH et vos clés"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
log "✅ Clé SSH configurée"
|
||||||
|
|
||||||
|
log "📁 Vérification du répertoire de base: $BASE_DIR"
|
||||||
|
if [ ! -d "$BASE_DIR" ]; then
|
||||||
|
log "❌ Répertoire $BASE_DIR introuvable"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd "$BASE_DIR"
|
||||||
|
|
||||||
|
log "🔄 Début du clonage des projets..."
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
for project in "${PROJECTS[@]}"; do
|
||||||
|
log "📦 Clonage de $project..."
|
||||||
|
|
||||||
|
# URL du projet
|
||||||
|
PROJECT_URL="$GIT_BASE_URL/$project.git"
|
||||||
|
|
||||||
|
# Vérifier si le dossier existe déjà
|
||||||
|
if [ -d "$project" ]; then
|
||||||
|
log "⚠️ Le dossier '$project' existe déjà"
|
||||||
|
log " Sauvegarde dans '$project.backup'"
|
||||||
|
mv "$project" "$project.backup"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Cloner le projet sur la branche ext
|
||||||
|
log " Clonage depuis: $PROJECT_URL"
|
||||||
|
log " Branche: $BRANCH"
|
||||||
|
|
||||||
|
if git clone -b "$BRANCH" "$PROJECT_URL" "$project"; then
|
||||||
|
log "✅ $project cloné avec succès"
|
||||||
|
|
||||||
|
# Afficher les informations du repo
|
||||||
|
cd "$project"
|
||||||
|
log " Dernier commit: $(git log -1 --oneline)"
|
||||||
|
log " Branche: $(git branch --show-current)"
|
||||||
|
cd ..
|
||||||
|
else
|
||||||
|
log "❌ Échec du clonage de $project"
|
||||||
|
# Restaurer la sauvegarde si elle existe
|
||||||
|
if [ -d "$project.backup" ]; then
|
||||||
|
log " Restauration de la sauvegarde..."
|
||||||
|
mv "$project.backup" "$project"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
done
|
||||||
|
|
||||||
|
log "🎉 Clonage terminé !"
|
||||||
|
log "📊 Résumé des projets clonés:"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Projets clonés sur la branche '$BRANCH':"
|
||||||
|
echo "========================================"
|
||||||
|
for project in "${PROJECTS[@]}"; do
|
||||||
|
if [ -d "$project" ]; then
|
||||||
|
echo "✅ $project"
|
||||||
|
else
|
||||||
|
echo "❌ $project (échec)"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
log "🔍 Vérification des branches:"
|
||||||
|
for project in "${PROJECTS[@]}"; do
|
||||||
|
if [ -d "$project" ]; then
|
||||||
|
cd "$project"
|
||||||
|
current_branch=$(git branch --show-current)
|
||||||
|
echo " $project: $current_branch"
|
||||||
|
cd ..
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
log "📝 Prochaines étapes:"
|
||||||
|
echo " 1. Vérifier que tous les projets sont sur la branche '$BRANCH'"
|
||||||
|
echo " 2. Configurer les fichiers .gitignore et .dockerignore"
|
||||||
|
echo " 3. Initialiser le dépôt 4NK_env"
|
||||||
|
echo " 4. Pousser sur git.4nkweb.com"
|
168
scripts/init-4nk-env-repo.sh
Executable file
168
scripts/init-4nk-env-repo.sh
Executable file
@ -0,0 +1,168 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
echo "🚀 INITIALISATION DU DÉPÔT 4NK_ENV"
|
||||||
|
echo "================================="
|
||||||
|
|
||||||
|
# Fonction de logging
|
||||||
|
log() {
|
||||||
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Configuration
|
||||||
|
REPO_NAME="4NK_env"
|
||||||
|
GIT_REMOTE="git@git.4nkweb.com:4nk/4NK_env.git"
|
||||||
|
BRANCH="ext"
|
||||||
|
|
||||||
|
log "📋 Configuration:"
|
||||||
|
echo " Dépôt: $REPO_NAME"
|
||||||
|
echo " Remote: $GIT_REMOTE"
|
||||||
|
echo " Branche: $BRANCH"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Vérifier si on est dans le bon répertoire
|
||||||
|
CURRENT_DIR=$(basename "$PWD")
|
||||||
|
if [ "$CURRENT_DIR" != "$REPO_NAME" ]; then
|
||||||
|
log "⚠️ Attention: Vous devez être dans le répertoire $REPO_NAME"
|
||||||
|
log " Répertoire actuel: $CURRENT_DIR"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Vérifier la configuration SSH
|
||||||
|
log "🔧 Vérification de la configuration Git SSH..."
|
||||||
|
if ! ssh -T git@git.4nkweb.com 2>&1 | grep -q "successfully authenticated"; then
|
||||||
|
echo "❌ Erreur: Clé SSH non configurée pour git.4nkweb.com"
|
||||||
|
echo " Vérifiez votre configuration SSH et vos clés"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
log "✅ Clé SSH configurée"
|
||||||
|
|
||||||
|
# Initialiser Git si ce n'est pas déjà fait
|
||||||
|
if [ ! -d ".git" ]; then
|
||||||
|
log "📦 Initialisation du dépôt Git..."
|
||||||
|
git init
|
||||||
|
log "✅ Dépôt Git initialisé"
|
||||||
|
else
|
||||||
|
log "ℹ️ Dépôt Git déjà initialisé"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Configuration Git
|
||||||
|
log "⚙️ Configuration Git..."
|
||||||
|
git config user.name "LeCoffre Deployment"
|
||||||
|
git config user.email "deployment@lecoffre.io"
|
||||||
|
|
||||||
|
# Ajouter le remote si il n'existe pas
|
||||||
|
if ! git remote get-url origin 2>/dev/null; then
|
||||||
|
log "🔗 Ajout du remote origin..."
|
||||||
|
git remote add origin "$GIT_REMOTE"
|
||||||
|
log "✅ Remote origin ajouté"
|
||||||
|
else
|
||||||
|
log "ℹ️ Remote origin déjà configuré"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Créer le fichier README.md s'il n'existe pas
|
||||||
|
if [ ! -f "README.md" ]; then
|
||||||
|
log "📝 Création du README.md..."
|
||||||
|
cat > README.md << 'EOF'
|
||||||
|
# 4NK Environment
|
||||||
|
|
||||||
|
Environnement complet pour le déploiement de LeCoffre et tous ses services.
|
||||||
|
|
||||||
|
## Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
4NK_env/
|
||||||
|
├── lecoffre_node/ # Orchestrateur principal
|
||||||
|
├── sdk_relay/ # Service de relais WebSocket
|
||||||
|
├── sdk_signer/ # Service de signature
|
||||||
|
├── sdk_storage/ # Service de stockage
|
||||||
|
├── sdk_client/ # Client SDK
|
||||||
|
├── sdk_common/ # Composants communs
|
||||||
|
├── sdk-signer-client/ # Client signeur
|
||||||
|
├── ihm_client/ # Interface utilisateur
|
||||||
|
├── lecoffre-back-mini/ # API Backend
|
||||||
|
├── lecoffre-front/ # Frontend Next.js
|
||||||
|
├── doc_api/ # Documentation API
|
||||||
|
├── IA_agents/ # Agents IA et documentation
|
||||||
|
└── scripts/ # Scripts de déploiement
|
||||||
|
```
|
||||||
|
|
||||||
|
## Déploiement
|
||||||
|
|
||||||
|
### Architecture autonome
|
||||||
|
```bash
|
||||||
|
cd lecoffre_node
|
||||||
|
./scripts/deploy-autonomous.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Clonage de tous les projets
|
||||||
|
```bash
|
||||||
|
./scripts/clone-all-repos.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## Services
|
||||||
|
|
||||||
|
- **LeCoffre Node** : Orchestrateur principal avec Nginx intégré
|
||||||
|
- **Bitcoin Signet** : Nœud Bitcoin pour tests
|
||||||
|
- **Monitoring** : Grafana, Loki, Promtail
|
||||||
|
- **Services SDK** : Relay, Signer, Storage
|
||||||
|
- **Applications** : Frontend, Backend, IHM Client
|
||||||
|
|
||||||
|
## Ports
|
||||||
|
|
||||||
|
- **80** : HTTP (redirection vers HTTPS)
|
||||||
|
- **443** : HTTPS avec certificats auto-signés
|
||||||
|
- **3000** : Redirections externes IdNot
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
|
Voir le dossier `IA_agents/` pour la documentation complète.
|
||||||
|
EOF
|
||||||
|
log "✅ README.md créé"
|
||||||
|
else
|
||||||
|
log "ℹ️ README.md existe déjà"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Ajouter tous les fichiers
|
||||||
|
log "📁 Ajout des fichiers au dépôt..."
|
||||||
|
git add .
|
||||||
|
|
||||||
|
# Vérifier s'il y a des changements
|
||||||
|
if git diff --staged --quiet; then
|
||||||
|
log "ℹ️ Aucun changement à committer"
|
||||||
|
else
|
||||||
|
log "💾 Commit initial..."
|
||||||
|
git commit -m "ci: docker_tag=ext
|
||||||
|
|
||||||
|
Initial commit - 4NK Environment
|
||||||
|
- Configuration complète LeCoffre
|
||||||
|
- Architecture autonome avec Nginx intégré
|
||||||
|
- Scripts de déploiement
|
||||||
|
- Documentation IA_agents
|
||||||
|
- Support redirections IdNot (port 3000)
|
||||||
|
- Monitoring Grafana/Loki/Promtail"
|
||||||
|
|
||||||
|
log "✅ Commit initial créé"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Créer et pousser la branche ext
|
||||||
|
log "🌿 Création et push de la branche '$BRANCH'..."
|
||||||
|
git checkout -b "$BRANCH" 2>/dev/null || git checkout "$BRANCH"
|
||||||
|
git push -u origin "$BRANCH"
|
||||||
|
|
||||||
|
log "🎉 Dépôt 4NK_env initialisé et poussé sur la branche '$BRANCH'!"
|
||||||
|
log "🔗 URL: $GIT_REMOTE"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
log "📊 Résumé:"
|
||||||
|
echo " ✅ Dépôt Git initialisé"
|
||||||
|
echo " ✅ Remote origin configuré"
|
||||||
|
echo " ✅ Branche '$BRANCH' créée et poussée"
|
||||||
|
echo " ✅ Fichiers .gitignore et .dockerignore configurés"
|
||||||
|
echo " ✅ README.md créé"
|
||||||
|
echo ""
|
||||||
|
log "🚀 Prochaines étapes:"
|
||||||
|
echo " 1. Vérifier le dépôt sur git.4nkweb.com"
|
||||||
|
echo " 2. Configurer les workflows CI/CD si nécessaire"
|
||||||
|
echo " 3. Cloner les projets avec ./scripts/clone-all-repos.sh"
|
||||||
|
echo " 4. Déployer avec ./lecoffre_node/scripts/deploy-autonomous.sh"
|
1
sdk-signer-client
Submodule
1
sdk-signer-client
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 684e03a754ad733e042a30470f5db530722e8cea
|
1
sdk_client
Submodule
1
sdk_client
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit fbc2dd2a33bcf6aa15db4696062371d20aebab67
|
1
sdk_common
Submodule
1
sdk_common
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 6a6833ed1224c67ea081f89ad105d41dc41ae08b
|
1
sdk_relay
Submodule
1
sdk_relay
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 96d131a2704e59a4aa4f26bb2fcc39403f3806b1
|
1
sdk_signer
Submodule
1
sdk_signer
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 2355aebf6864b599219ef25fe98a2313d99687a6
|
1
sdk_storage
Submodule
1
sdk_storage
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit d15c995b315ca2f5cb3a49ce315af7b2e46521f5
|
Loading…
x
Reference in New Issue
Block a user