lecoffre_node/README.md

274 lines
8.0 KiB
Markdown

# LeCoffre Node - Plateforme de Gestion de Documents Sécurisée
[![Docker](https://img.shields.io/badge/Docker-Ext-blue)](https://git.4nkweb.com/4nk/lecoffre_node)
[![Bitcoin Signet](https://img.shields.io/badge/Bitcoin-Signet-orange)](https://example.com)
[![Status](https://img.shields.io/badge/Status-Production-green)](https://example.com)
## 🚀 Démarrage Rapide
**LeCoffre Node - Architecture complète avec Bitcoin Signet et agents IA**
### 🎯 Démarrage Simple
```bash
# Démarrage complet des services
./scripts/start.sh
# Validation du déploiement
./scripts/validate-deployment.sh
# Maintenance et monitoring
./scripts/maintenance.sh
```
> Note scripts centralisés: le répertoire `./scripts/` de `lecoffre_node` est un lien symbolique vers `../../scripts/lecoffre_node`. Les chemins existants restent valides.
### 📁 Documentation
- **[`scripts/README.md`](scripts/README.md)** - Documentation complète des scripts
- **[`4NK_env/IA_agents/context.md`](IA_agents/context.md)** - Contexte et architecture du projet
- **[`4NK_env/IA_agents/flux.md`](IA_agents/flux.md)** - Flux d'architecture et services
- **[`4NK_env/IA_agents/deploy.md`](IA_agents/deploy.md)** - Procédure de déploiement complète
### 🛡️ Protection des Données
- **Sauvegarde automatique** : `./scripts/backup-data.sh`
- **Mise à jour sécurisée** : `./scripts/update-images.sh`
- **Restauration** : `./scripts/restore-data.sh <backup>`
## 🌐 Accès aux Services
| Service | URL | Description |
|---------|-----|-------------|
| **LeCoffre Frontend** | `<PUBLIC_BASE_URL>/lecoffre` | Interface principale |
| **IHM Client** | `<PUBLIC_BASE_URL>/` | Interface de gestion des clés |
| **API Backend** | `<PUBLIC_BASE_URL>/api/` | API REST |
| **WebSocket** | `wss://<PUBLIC_BASE_HOST>/ws/` | Relay WebSocket |
## 🏗️ Architecture
```
Internet → Reverse proxy (public) → Services locaux
├── Frontend: LeCoffre Application
├── IHM: Interface de gestion des clés Bitcoin
├── API: Backend REST
└── WebSocket: Relay pour transactions
```
## 🐳 Services Docker
| Service | Port | Statut | Description |
|---------|------|--------|-------------|
| `lecoffre-front` | 3004 | ✅ | Interface utilisateur |
| `ihm_client` | 3003 | ✅ | Gestion des clés |
| `sdk_relay` | 8090-8091 | ✅ | Relay WebSocket |
| `sdk_storage` | 8081 | ✅ | Stockage temporaire |
| `bitcoin-signet` | - | ✅ | Nœud Bitcoin |
| `blindbit-oracle` | 8000 | ✅ | Oracle Bitcoin |
| `tor-proxy` | 9050 | ✅ | Proxy anonyme |
## 🚀 Déploiement Automatique
Le système utilise **Watchtower** pour la mise à jour automatique des images Docker toutes les 30 secondes.
### Commandes Essentielles
```bash
# Démarrer tous les services
cd lecoffre_node
docker compose up -d
# Vérifier le statut
docker compose ps
# Voir les logs
docker compose logs --tail=50
# Synchroniser les configurations
./scripts/sync-configs.sh
# Démarrage séquentiel optimisé
./scripts/startup-sequence.sh
```
## 📊 Monitoring et Logs
### Stack de Monitoring
Le système utilise **Grafana + Loki + Promtail** pour le monitoring centralisé :
```bash
# Démarrer le monitoring
./scripts/deploy-grafana.sh start
# Accéder à Grafana
<PUBLIC_BASE_URL>/grafana/
```
**Identifiants** : `admin` / `<GRAFANA_ADMIN_PASSWORD>`
### Dashboards Disponibles
- **Vue d'ensemble LeCoffre** - Monitoring de tous les services
- **Bitcoin & Miner** - Monitoring spécialisé blockchain
- **Services Applications** - Monitoring des services applicatifs
### Collecte des Logs
```bash
# Collecter les logs de tous les services
./scripts/collect-logs.sh
# Logs centralisés dans logs/
```
📖 **[Documentation complète du monitoring](docs/MONITORING.md)**
## 🔧 Configuration
### Variables d'Environnement
Les variables d'environnement sont centralisées dans `.env` :
```bash
# URLs des services externes (à définir selon l'environnement)
VITE_BOOTSTRAPURL=wss://<PUBLIC_BASE_HOST>/ws/
SIGNER_WS_URL=ws://<SIGNER_HOST>:9090
SIGNER_BASE_URL=https://<SIGNER_HOST>
# Configuration monitoring
GRAFANA_ADMIN_PASSWORD=<GRAFANA_ADMIN_PASSWORD>
```
### Scripts Utiles
Tous les scripts sont dans `scripts/` :
- `startup-sequence.sh` - Démarrage séquentiel optimisé
- `sync-configs.sh` - Synchronisation des configurations
- `build-project.sh` - Construction des projets
- `fix_relay_funds.sh` - Correction des fonds relay
- `deploy-grafana.sh` - Déploiement du monitoring Grafana
- `setup-logs.sh` - Configuration de la centralisation des logs
- `collect-logs.sh` - Collecte des logs de tous les services
- `sync-monitoring-config.sh` - Synchronisation de la configuration monitoring
- `test-monitoring.sh` - Test de connectivité du monitoring
## 📊 Monitoring
### Healthchecks
Tous les services disposent de healthchecks automatiques :
```bash
# Vérifier Bitcoin Signet
docker exec bitcoin-signet bitcoin-cli -signet -rpccookiefile=/home/bitcoin/.bitcoin/signet/.cookie getblockchaininfo
# Vérifier l'oracle Blindbit
curl http://localhost:8000/tweaks/1
# Vérifier le relay
curl http://localhost:8091/
```
### Logs
```bash
# Logs en temps réel
docker compose logs -f
# Logs d'un service spécifique
docker compose logs -f sdk_relay
```
## 🔒 Sécurité
-**Aucun secret** dans le code source
-**Utilisateurs non-root** dans les conteneurs
-**Clés SSH** pour tous les dépôts
-**Variables d'environnement** externalisées
-**Réseau interne** pour la communication inter-services
## 🛠️ Développement
### Structure des Projets
```
lecoffre_node/
├── IA_agents/ # 📚 Documentation IA principale
├── scripts/ # 🔧 Scripts de déploiement
├── conf/ # ⚙️ Configurations
├── docs/ # 📖 Documentation technique
├── docker-compose.yml # 🐳 Services Docker
└── .env # 🔐 Variables d'environnement
```
### Projets Dépendants
| Projet | Branche | Description |
|--------|---------|-------------|
| `sdk_relay` | `ext` | Relay des transactions |
| `sdk_storage` | `ext` | Stockage temporaire |
| `ihm_client` | `ext` | Interface de gestion |
| `lecoffre-front` | `ext` | Frontend LeCoffre |
## 📚 Documentation Complète
### Documentation IA (Recommandée)
- [`4NK_env/IA_agents/context.md`](IA_agents/context.md) - Contexte et objectifs
- [`4NK_env/IA_agents/flux.md`](IA_agents/flux.md) - Architecture et flux
- [`4NK_env/IA_agents/deploy.md`](IA_agents/deploy.md) - Procédure de déploiement
### Documentation Technique
- [`docs/REX.md`](docs/REX.md) - Rapport d'expérience de déploiement
- [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) - Architecture détaillée
- [`docs/CONFIGURATION_SERVICES.md`](docs/CONFIGURATION_SERVICES.md) - Configuration des services
## 🆘 Support
### Problèmes Courants
1. **Service non accessible** : Vérifier `docker compose ps`
2. **Erreurs de connexion** : Vérifier les logs avec `docker compose logs`
3. **Configuration** : Exécuter `./scripts/sync-configs.sh`
### Logs d'Erreur
```bash
# Logs d'erreur récents
docker compose logs --tail=100 | grep -i error
# Logs d'un service spécifique
docker compose logs sdk_relay | grep -i error
```
## 🔄 Mise à Jour
Le système se met à jour automatiquement via Watchtower. Pour forcer une mise à jour :
```bash
# Mettre à jour toutes les images
docker compose pull
# Redémarrer les services
docker compose up -d
```
## 📄 Licence
Ce projet est sous licence MIT. Voir le fichier [LICENSE](LICENSE) pour plus de détails.
---
**💡 Conseil** : Commencez toujours par lire [`4NK_env/IA_agents/context.md`](IA_agents/context.md) pour comprendre le contexte du projet !
## 📋 Fichiers centralisés
Les fichiers suivants sont centralisés dans le dépôt principal `4NK_env` :
- `CODE_OF_CONDUCT.md` - Code de conduite
- `CODEOWNERS` - Propriétaires du code
- `CONTRIBUTING.md` - Guide de contribution
- `LICENSE` - Licence du projet
Voir : [`4NK_env/CODE_OF_CONDUCT.md`](../../CODE_OF_CONDUCT.md), [`4NK_env/CODEOWNERS`](../../CODEOWNERS), [`4NK_env/CONTRIBUTING.md`](../../CONTRIBUTING.md), [`4NK_env/LICENSE`](../../LICENSE)