feat: Mise à jour de la documentation pour refléter l'état actuel (flate2, types réels)
This commit is contained in:
parent
3e3716411b
commit
fd259d596a
@ -1,236 +0,0 @@
|
||||
# Automatisation SSH pour Push - ihm_client
|
||||
|
||||
## Vue d'ensemble
|
||||
|
||||
L'automatisation SSH pour les push permet d'utiliser automatiquement votre clé SSH pour tous les push vers le repository `ihm_client` sur Gitea, sans avoir à spécifier manuellement les paramètres SSH.
|
||||
|
||||
## Configuration automatique
|
||||
|
||||
### 1. Configuration Git globale
|
||||
|
||||
La configuration SSH est automatiquement appliquée :
|
||||
|
||||
```bash
|
||||
git config --global url."git@git.4nkweb.com:".insteadOf "https://git.4nkweb.com/"
|
||||
```
|
||||
|
||||
### 2. Vérification SSH
|
||||
|
||||
Le script vérifie automatiquement la configuration SSH :
|
||||
|
||||
```bash
|
||||
ssh -T git@git.4nkweb.com
|
||||
```
|
||||
|
||||
## Scripts d'automatisation
|
||||
|
||||
### Script principal : `auto-ssh-push.sh`
|
||||
|
||||
Le script `scripts/auto-ssh-push.sh` offre plusieurs modes de push automatique :
|
||||
|
||||
#### Options disponibles
|
||||
|
||||
```bash
|
||||
# Push rapide (message automatique)
|
||||
./scripts/auto-ssh-push.sh quick
|
||||
|
||||
# Push avec message personnalisé
|
||||
./scripts/auto-ssh-push.sh message "feat: nouvelle fonctionnalité"
|
||||
|
||||
# Push sur une branche spécifique
|
||||
./scripts/auto-ssh-push.sh branch feature/nouvelle-fonctionnalite
|
||||
|
||||
# Push et préparation merge
|
||||
./scripts/auto-ssh-push.sh merge feature/nouvelle-fonctionnalite main
|
||||
|
||||
# Status et push conditionnel
|
||||
./scripts/auto-ssh-push.sh status
|
||||
```
|
||||
|
||||
#### Exemples d'utilisation
|
||||
|
||||
```bash
|
||||
# Push rapide sur la branche courante
|
||||
./scripts/auto-ssh-push.sh quick
|
||||
|
||||
# Push avec message de commit
|
||||
./scripts/auto-ssh-push.sh message "fix: correction du bug de synchronisation"
|
||||
|
||||
# Push sur une branche spécifique
|
||||
./scripts/auto-ssh-push.sh branch develop
|
||||
|
||||
# Push et création de Pull Request
|
||||
./scripts/auto-ssh-push.sh merge feature/nouvelle-fonctionnalite main
|
||||
```
|
||||
|
||||
### Alias Git globaux
|
||||
|
||||
Des alias Git ont été configurés pour simplifier les push :
|
||||
|
||||
```bash
|
||||
# Push avec message personnalisé
|
||||
git ssh-push "Mon message de commit"
|
||||
|
||||
# Push rapide (message automatique)
|
||||
git quick-push
|
||||
```
|
||||
|
||||
## Fonctionnalités automatiques
|
||||
|
||||
### 1. Configuration SSH automatique
|
||||
|
||||
- Configuration Git pour utiliser SSH
|
||||
- Vérification de l'authentification SSH
|
||||
- Gestion des erreurs de configuration
|
||||
|
||||
### 2. Push automatique
|
||||
|
||||
- Ajout automatique de tous les changements (`git add .`)
|
||||
- Commit automatique avec message
|
||||
- Push automatique vers la branche courante
|
||||
|
||||
### 3. Gestion des branches
|
||||
|
||||
- Détection automatique de la branche courante
|
||||
- Support des branches personnalisées
|
||||
- Préparation des Pull Requests
|
||||
|
||||
### 4. Validation et sécurité
|
||||
|
||||
- Vérification de l'authentification SSH avant push
|
||||
- Messages d'erreur explicites
|
||||
- Gestion des cas d'échec
|
||||
|
||||
## Workflow recommandé
|
||||
|
||||
### Développement quotidien
|
||||
|
||||
```bash
|
||||
# 1. Faire vos modifications
|
||||
# 2. Push rapide
|
||||
./scripts/auto-ssh-push.sh quick
|
||||
|
||||
# Ou avec message personnalisé
|
||||
./scripts/auto-ssh-push.sh message "feat: ajout de la fonctionnalité X"
|
||||
```
|
||||
|
||||
### Développement de fonctionnalités
|
||||
|
||||
```bash
|
||||
# 1. Créer une branche
|
||||
git checkout -b feature/nouvelle-fonctionnalite
|
||||
|
||||
# 2. Développer
|
||||
# 3. Push sur la branche
|
||||
./scripts/auto-ssh-push.sh branch feature/nouvelle-fonctionnalite
|
||||
|
||||
# 4. Préparer le merge
|
||||
./scripts/auto-ssh-push.sh merge feature/nouvelle-fonctionnalite main
|
||||
```
|
||||
|
||||
### Intégration continue
|
||||
|
||||
```bash
|
||||
# Push automatique après tests
|
||||
./scripts/auto-ssh-push.sh message "ci: tests passés, déploiement automatique"
|
||||
```
|
||||
|
||||
## Dépannage
|
||||
|
||||
### Problèmes courants
|
||||
|
||||
#### 1. Échec d'authentification SSH
|
||||
|
||||
```bash
|
||||
# Vérifier la clé SSH
|
||||
ssh -T git@git.4nkweb.com
|
||||
|
||||
# Si échec, configurer une nouvelle clé
|
||||
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_4nk
|
||||
ssh-add ~/.ssh/id_ed25519_4nk
|
||||
```
|
||||
|
||||
#### 2. Configuration Git manquante
|
||||
|
||||
```bash
|
||||
# Reconfigurer Git pour SSH
|
||||
git config --global url."git@git.4nkweb.com:".insteadOf "https://git.4nkweb.com/"
|
||||
```
|
||||
|
||||
#### 3. Permissions de script
|
||||
|
||||
```bash
|
||||
# Rendre le script exécutable
|
||||
chmod +x scripts/auto-ssh-push.sh
|
||||
```
|
||||
|
||||
### Commandes de diagnostic
|
||||
|
||||
```bash
|
||||
# Vérifier la configuration SSH
|
||||
ssh -vT git@git.4nkweb.com
|
||||
|
||||
# Vérifier la configuration Git
|
||||
git config --global --list | grep url
|
||||
|
||||
# Vérifier les remotes
|
||||
git remote -v
|
||||
```
|
||||
|
||||
## Intégration avec CI/CD
|
||||
|
||||
### Workflow Gitea Actions
|
||||
|
||||
Le workflow CI/CD (`.gitea/workflows/ci.yml`) utilise automatiquement SSH :
|
||||
|
||||
```yaml
|
||||
- name: Setup SSH for Gitea
|
||||
run: |
|
||||
mkdir -p ~/.ssh
|
||||
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
|
||||
chmod 600 ~/.ssh/id_rsa
|
||||
ssh-keyscan -H git.4nkweb.com >> ~/.ssh/known_hosts
|
||||
git config --global url."git@git.4nkweb.com:".insteadOf "https://git.4nkweb.com/"
|
||||
```
|
||||
|
||||
### Variables d'environnement
|
||||
|
||||
- `SSH_PRIVATE_KEY` : Clé SSH privée pour l'authentification
|
||||
- `SSH_PUBLIC_KEY` : Clé SSH publique (optionnelle)
|
||||
|
||||
## Sécurité
|
||||
|
||||
### Bonnes pratiques
|
||||
|
||||
- Les clés SSH sont stockées de manière sécurisée
|
||||
- Les permissions des fichiers SSH sont correctement configurées
|
||||
- La vérification des hôtes SSH est activée
|
||||
- Les clés sont régulièrement renouvelées
|
||||
|
||||
### Permissions recommandées
|
||||
|
||||
```bash
|
||||
chmod 700 ~/.ssh
|
||||
chmod 600 ~/.ssh/id_rsa
|
||||
chmod 644 ~/.ssh/id_rsa.pub
|
||||
chmod 600 ~/.ssh/config
|
||||
```
|
||||
|
||||
## Évolution
|
||||
|
||||
### Améliorations futures
|
||||
|
||||
- Support pour plusieurs clés SSH
|
||||
- Rotation automatique des clés
|
||||
- Intégration avec un gestionnaire de secrets
|
||||
- Support pour l'authentification par certificats SSH
|
||||
|
||||
### Maintenance
|
||||
|
||||
- Vérification régulière de la validité des clés SSH
|
||||
- Mise à jour des configurations selon les bonnes pratiques
|
||||
- Documentation des changements de configuration
|
||||
|
||||
## Conclusion
|
||||
|
||||
L'automatisation SSH pour les push simplifie considérablement le workflow de développement en éliminant la nécessité de configurer manuellement SSH pour chaque opération Git. Le script `auto-ssh-push.sh` et les alias Git offrent une interface simple et sécurisée pour tous les push vers le repository `ihm_client`.
|
@ -1,378 +0,0 @@
|
||||
# 🔄 Guide de Migration - Documentation 4NK Node
|
||||
|
||||
Guide pour migrer et organiser la documentation existante vers la nouvelle structure.
|
||||
|
||||
## 📋 État Actuel
|
||||
|
||||
### Fichiers de Documentation Existants
|
||||
|
||||
#### Documentation Principale
|
||||
- `README.md` - Documentation principale (mis à jour)
|
||||
- `EXEMPLES_PRATIQUES.md` - Exemples d'utilisation (à migrer)
|
||||
|
||||
#### Documentation Technique
|
||||
- `specs/spec-technique.md` - Spécification technique (à conserver)
|
||||
- `specs/spec-fonctionnel.md` - Spécification fonctionnelle (à conserver)
|
||||
- `specs/spec-technical.md` - Spécification technique (à fusionner)
|
||||
|
||||
#### Documentation de Configuration
|
||||
- `CONFIGURATION_DEV3.md` - Configuration dev3.4nkweb.com (à migrer)
|
||||
- `INTEGRATION_DEV3_FINAL.md` - Intégration dev3.4nkweb.com (à migrer)
|
||||
|
||||
#### Documentation de Processus
|
||||
- `COMMANDES_REDEMARRAGE.md` - Commandes de redémarrage (à migrer)
|
||||
- `RESUME_AJOUT_DEV3.md` - Résumé ajout dev3 (à migrer)
|
||||
- `RESUME_DECOUVERTE_NOEUDS.md` - Découverte des nœuds (à migrer)
|
||||
- `RESUME_SCRIPT_RESTART.md` - Script de redémarrage (à migrer)
|
||||
- `RESUME_TEST_3_RELAIS.md` - Test 3 relais (à migrer)
|
||||
|
||||
#### Documentation de Scripts
|
||||
- `README_RESTART_SCRIPT.md` - Documentation script redémarrage (à migrer)
|
||||
- `explain_node_discovery.md` - Explication découverte nœuds (à migrer)
|
||||
|
||||
## 🎯 Plan de Migration
|
||||
|
||||
### 1. Structure de Documentation
|
||||
|
||||
```
|
||||
4NK_node/
|
||||
├── README.md # ✅ Mis à jour
|
||||
├── docs/ # ✅ Nouvelle structure
|
||||
│ ├── INDEX.md # ✅ Créé
|
||||
│ ├── INSTALLATION.md # ✅ Créé
|
||||
│ ├── USAGE.md # ✅ Créé
|
||||
│ ├── CONFIGURATION.md # ✅ Créé
|
||||
│ ├── QUICK_REFERENCE.md # ✅ Créé
|
||||
│ ├── MIGRATION.md # ✅ Ce fichier
|
||||
│ ├── ARCHITECTURE.md # 🔄 À créer
|
||||
│ ├── API.md # 🔄 À créer
|
||||
│ ├── SECURITY.md # 🔄 À créer
|
||||
│ ├── PERFORMANCE.md # 🔄 À créer
|
||||
│ ├── TESTING.md # 🔄 À créer
|
||||
│ ├── SYNC_TESTING.md # 🔄 À créer
|
||||
│ ├── PERFORMANCE_TESTING.md # 🔄 À créer
|
||||
│ ├── RELAY_NETWORK.md # 🔄 À créer
|
||||
│ ├── EXTERNAL_NODES.md # 🔄 À créer
|
||||
│ ├── SYNCHRONIZATION.md # 🔄 À créer
|
||||
│ ├── TROUBLESHOOTING.md # 🔄 À créer
|
||||
│ └── FAQ.md # 🔄 À créer
|
||||
├── specs/ # ✅ À conserver
|
||||
│ ├── spec-technique.md # ✅ Conserver
|
||||
│ └── spec-fonctionnel.md # ✅ Conserver
|
||||
├── archive/ # 🔄 À créer
|
||||
│ ├── docs/ # 🔄 Anciens fichiers
|
||||
│ └── README.md # 🔄 Documentation archive
|
||||
└── examples/ # 🔄 À créer
|
||||
├── configuration/ # 🔄 Exemples de config
|
||||
├── scripts/ # 🔄 Scripts d'exemple
|
||||
└── tests/ # 🔄 Tests d'exemple
|
||||
```
|
||||
|
||||
### 2. Migration des Fichiers
|
||||
|
||||
#### Fichiers à Migrer vers `docs/`
|
||||
|
||||
| Fichier Source | Destination | Statut |
|
||||
|----------------|-------------|---------|
|
||||
| `EXEMPLES_PRATIQUES.md` | `docs/USAGE.md` | ✅ Intégré |
|
||||
| `CONFIGURATION_DEV3.md` | `docs/EXTERNAL_NODES.md` | 🔄 À migrer |
|
||||
| `INTEGRATION_DEV3_FINAL.md` | `docs/EXTERNAL_NODES.md` | 🔄 À migrer |
|
||||
| `COMMANDES_REDEMARRAGE.md` | `docs/QUICK_REFERENCE.md` | ✅ Intégré |
|
||||
| `RESUME_AJOUT_DEV3.md` | `docs/EXTERNAL_NODES.md` | 🔄 À migrer |
|
||||
| `RESUME_DECOUVERTE_NOEUDS.md` | `docs/RELAY_NETWORK.md` | 🔄 À migrer |
|
||||
| `RESUME_SCRIPT_RESTART.md` | `docs/QUICK_REFERENCE.md` | ✅ Intégré |
|
||||
| `RESUME_TEST_3_RELAIS.md` | `docs/SYNC_TESTING.md` | 🔄 À migrer |
|
||||
| `README_RESTART_SCRIPT.md` | `docs/QUICK_REFERENCE.md` | ✅ Intégré |
|
||||
| `explain_node_discovery.md` | `docs/RELAY_NETWORK.md` | 🔄 À migrer |
|
||||
|
||||
#### Fichiers à Conserver
|
||||
|
||||
| Fichier | Raison | Action |
|
||||
|---------|--------|---------|
|
||||
| `specs/spec-technique.md` | Documentation technique détaillée | ✅ Conserver |
|
||||
| `specs/spec-fonctionnel.md` | Spécification fonctionnelle | ✅ Conserver |
|
||||
| `specs/spec-technical.md` | Spécification technique | 🔄 Fusionner avec spec-technique.md |
|
||||
|
||||
#### Fichiers à Archiver
|
||||
|
||||
| Fichier | Action |
|
||||
|---------|--------|
|
||||
| `EXEMPLES_PRATIQUES.md` | 🔄 Déplacer vers `archive/docs/` |
|
||||
| `CONFIGURATION_DEV3.md` | 🔄 Déplacer vers `archive/docs/` |
|
||||
| `INTEGRATION_DEV3_FINAL.md` | 🔄 Déplacer vers `archive/docs/` |
|
||||
| `COMMANDES_REDEMARRAGE.md` | 🔄 Déplacer vers `archive/docs/` |
|
||||
| `RESUME_AJOUT_DEV3.md` | 🔄 Déplacer vers `archive/docs/` |
|
||||
| `RESUME_DECOUVERTE_NOEUDS.md` | 🔄 Déplacer vers `archive/docs/` |
|
||||
| `RESUME_SCRIPT_RESTART.md` | 🔄 Déplacer vers `archive/docs/` |
|
||||
| `RESUME_TEST_3_RELAIS.md` | 🔄 Déplacer vers `archive/docs/` |
|
||||
| `README_RESTART_SCRIPT.md` | 🔄 Déplacer vers `archive/docs/` |
|
||||
| `explain_node_discovery.md` | 🔄 Déplacer vers `archive/docs/` |
|
||||
|
||||
## 🔄 Processus de Migration
|
||||
|
||||
### Étape 1 : Créer la Structure
|
||||
|
||||
```bash
|
||||
# Créer les dossiers
|
||||
mkdir -p docs archive/docs examples/{configuration,scripts,tests}
|
||||
|
||||
# Créer le README de l'archive
|
||||
cat > archive/README.md << 'EOF'
|
||||
# 📦 Archive - Documentation 4NK Node
|
||||
|
||||
Ce dossier contient les anciens fichiers de documentation qui ont été migrés vers la nouvelle structure organisée.
|
||||
|
||||
## 📁 Contenu
|
||||
|
||||
- `docs/` - Anciens fichiers de documentation
|
||||
- `README.md` - Ce fichier
|
||||
|
||||
## 🔗 Liens vers la Nouvelle Documentation
|
||||
|
||||
- **Documentation principale** : [../docs/INDEX.md](../docs/INDEX.md)
|
||||
- **Guide d'installation** : [../docs/INSTALLATION.md](../docs/INSTALLATION.md)
|
||||
- **Guide d'utilisation** : [../docs/USAGE.md](../docs/USAGE.md)
|
||||
- **Guide de configuration** : [../docs/CONFIGURATION.md](../docs/CONFIGURATION.md)
|
||||
- **Référence rapide** : [../docs/QUICK_REFERENCE.md](../docs/QUICK_REFERENCE.md)
|
||||
|
||||
## 📅 Date de Migration
|
||||
|
||||
Migration effectuée le : $(date)
|
||||
EOF
|
||||
```
|
||||
|
||||
### Étape 2 : Migrer les Fichiers
|
||||
|
||||
```bash
|
||||
# Déplacer les fichiers vers l'archive
|
||||
mv EXEMPLES_PRATIQUES.md archive/docs/
|
||||
mv CONFIGURATION_DEV3.md archive/docs/
|
||||
mv INTEGRATION_DEV3_FINAL.md archive/docs/
|
||||
mv COMMANDES_REDEMARRAGE.md archive/docs/
|
||||
mv RESUME_AJOUT_DEV3.md archive/docs/
|
||||
mv RESUME_DECOUVERTE_NOEUDS.md archive/docs/
|
||||
mv RESUME_SCRIPT_RESTART.md archive/docs/
|
||||
mv RESUME_TEST_3_RELAIS.md archive/docs/
|
||||
mv README_RESTART_SCRIPT.md archive/docs/
|
||||
mv explain_node_discovery.md archive/docs/
|
||||
```
|
||||
|
||||
### Étape 3 : Fusionner les Spécifications
|
||||
|
||||
```bash
|
||||
# Fusionner spec-technical.md dans spec-technique.md
|
||||
cat specs/spec-technical.md >> specs/spec-technique.md
|
||||
|
||||
# Supprimer le fichier fusionné
|
||||
rm specs/spec-technical.md
|
||||
```
|
||||
|
||||
### Étape 4 : Créer les Guides Manquants
|
||||
|
||||
#### Créer `docs/ARCHITECTURE.md`
|
||||
```bash
|
||||
# Extraire les sections architecture de spec-technique.md
|
||||
grep -A 50 "Architecture" specs/spec-technique.md > docs/ARCHITECTURE.md
|
||||
```
|
||||
|
||||
#### Créer `docs/EXTERNAL_NODES.md`
|
||||
```bash
|
||||
# Combiner les fichiers de configuration externe
|
||||
cat archive/docs/CONFIGURATION_DEV3.md archive/docs/INTEGRATION_DEV3_FINAL.md archive/docs/RESUME_AJOUT_DEV3.md > docs/EXTERNAL_NODES.md
|
||||
```
|
||||
|
||||
#### Créer `docs/RELAY_NETWORK.md`
|
||||
```bash
|
||||
# Combiner les fichiers de réseau de relais
|
||||
cat archive/docs/RESUME_DECOUVERTE_NOEUDS.md archive/docs/explain_node_discovery.md > docs/RELAY_NETWORK.md
|
||||
```
|
||||
|
||||
#### Créer `docs/SYNC_TESTING.md`
|
||||
```bash
|
||||
# Extraire les sections de test de synchronisation
|
||||
cat archive/docs/RESUME_TEST_3_RELAIS.md > docs/SYNC_TESTING.md
|
||||
```
|
||||
|
||||
### Étape 5 : Créer les Exemples
|
||||
|
||||
```bash
|
||||
# Créer des exemples de configuration
|
||||
cat > examples/configuration/bitcoin.conf.example << 'EOF'
|
||||
# Exemple de configuration Bitcoin Core
|
||||
signet=1
|
||||
rpcuser=bitcoin
|
||||
rpcpassword=your_secure_password
|
||||
rpcbind=0.0.0.0
|
||||
rpcallowip=172.19.0.0/16
|
||||
zmqpubrawblock=tcp://0.0.0.0:29000
|
||||
zmqpubrawtx=tcp://0.0.0.0:29000
|
||||
txindex=1
|
||||
server=1
|
||||
listen=1
|
||||
EOF
|
||||
|
||||
# Créer des exemples de scripts
|
||||
cat > examples/scripts/monitor.sh << 'EOF'
|
||||
#!/bin/bash
|
||||
# Exemple de script de monitoring
|
||||
while true; do
|
||||
echo "=== $(date) ==="
|
||||
docker ps --format "table {{.Names}}\t{{.Status}}"
|
||||
sleep 30
|
||||
done
|
||||
EOF
|
||||
|
||||
chmod +x examples/scripts/monitor.sh
|
||||
```
|
||||
|
||||
## 📋 Checklist de Migration
|
||||
|
||||
### ✅ Fichiers Créés
|
||||
- [x] `docs/INDEX.md` - Index de documentation
|
||||
- [x] `docs/INSTALLATION.md` - Guide d'installation
|
||||
- [x] `docs/USAGE.md` - Guide d'utilisation
|
||||
- [x] `docs/CONFIGURATION.md` - Guide de configuration
|
||||
- [x] `docs/QUICK_REFERENCE.md` - Référence rapide
|
||||
- [x] `docs/MIGRATION.md` - Ce guide de migration
|
||||
|
||||
### 🔄 Fichiers à Créer
|
||||
- [ ] `docs/ARCHITECTURE.md` - Architecture technique
|
||||
- [ ] `docs/API.md` - Référence API
|
||||
- [ ] `docs/SECURITY.md` - Guide de sécurité
|
||||
- [ ] `docs/PERFORMANCE.md` - Guide de performance
|
||||
- [ ] `docs/TESTING.md` - Tests de base
|
||||
- [ ] `docs/SYNC_TESTING.md` - Tests de synchronisation
|
||||
- [ ] `docs/PERFORMANCE_TESTING.md` - Tests de performance
|
||||
- [ ] `docs/RELAY_NETWORK.md` - Réseau de relais
|
||||
- [ ] `docs/EXTERNAL_NODES.md` - Nœuds externes
|
||||
- [ ] `docs/SYNCHRONIZATION.md` - Protocole de synchronisation
|
||||
- [ ] `docs/TROUBLESHOOTING.md` - Guide de dépannage
|
||||
- [ ] `docs/FAQ.md` - Questions fréquentes
|
||||
|
||||
### 🔄 Fichiers à Migrer
|
||||
- [ ] `EXEMPLES_PRATIQUES.md` → `archive/docs/`
|
||||
- [ ] `CONFIGURATION_DEV3.md` → `archive/docs/`
|
||||
- [ ] `INTEGRATION_DEV3_FINAL.md` → `archive/docs/`
|
||||
- [ ] `COMMANDES_REDEMARRAGE.md` → `archive/docs/`
|
||||
- [ ] `RESUME_AJOUT_DEV3.md` → `archive/docs/`
|
||||
- [ ] `RESUME_DECOUVERTE_NOEUDS.md` → `archive/docs/`
|
||||
- [ ] `RESUME_SCRIPT_RESTART.md` → `archive/docs/`
|
||||
- [ ] `RESUME_TEST_3_RELAIS.md` → `archive/docs/`
|
||||
- [ ] `README_RESTART_SCRIPT.md` → `archive/docs/`
|
||||
- [ ] `explain_node_discovery.md` → `archive/docs/`
|
||||
|
||||
### 🔄 Fichiers à Fusionner
|
||||
- [ ] `specs/spec-technical.md` → `specs/spec-technique.md`
|
||||
|
||||
### 🔄 Dossiers à Créer
|
||||
- [ ] `archive/` - Dossier d'archive
|
||||
- [ ] `archive/docs/` - Anciens fichiers de documentation
|
||||
- [ ] `examples/` - Exemples d'utilisation
|
||||
- [ ] `examples/configuration/` - Exemples de configuration
|
||||
- [ ] `examples/scripts/` - Scripts d'exemple
|
||||
- [ ] `examples/tests/` - Tests d'exemple
|
||||
|
||||
## 🎯 Résultat Final
|
||||
|
||||
### Structure Finale
|
||||
```
|
||||
4NK_node/
|
||||
├── README.md # Documentation principale
|
||||
├── docs/ # Documentation organisée
|
||||
│ ├── INDEX.md # Index de documentation
|
||||
│ ├── INSTALLATION.md # Guide d'installation
|
||||
│ ├── USAGE.md # Guide d'utilisation
|
||||
│ ├── CONFIGURATION.md # Guide de configuration
|
||||
│ ├── QUICK_REFERENCE.md # Référence rapide
|
||||
│ ├── ARCHITECTURE.md # Architecture technique
|
||||
│ ├── API.md # Référence API
|
||||
│ ├── SECURITY.md # Guide de sécurité
|
||||
│ ├── PERFORMANCE.md # Guide de performance
|
||||
│ ├── TESTING.md # Tests de base
|
||||
│ ├── SYNC_TESTING.md # Tests de synchronisation
|
||||
│ ├── PERFORMANCE_TESTING.md # Tests de performance
|
||||
│ ├── RELAY_NETWORK.md # Réseau de relais
|
||||
│ ├── EXTERNAL_NODES.md # Nœuds externes
|
||||
│ ├── SYNCHRONIZATION.md # Protocole de synchronisation
|
||||
│ ├── TROUBLESHOOTING.md # Guide de dépannage
|
||||
│ ├── FAQ.md # Questions fréquentes
|
||||
│ └── MIGRATION.md # Guide de migration
|
||||
├── specs/ # Spécifications techniques
|
||||
│ ├── spec-technique.md # Spécification technique (fusionnée)
|
||||
│ └── spec-fonctionnel.md # Spécification fonctionnelle
|
||||
├── archive/ # Archive des anciens fichiers
|
||||
│ ├── docs/ # Anciens fichiers de documentation
|
||||
│ └── README.md # Documentation archive
|
||||
├── examples/ # Exemples d'utilisation
|
||||
│ ├── configuration/ # Exemples de configuration
|
||||
│ ├── scripts/ # Scripts d'exemple
|
||||
│ └── tests/ # Tests d'exemple
|
||||
└── scripts/ # Scripts utilitaires
|
||||
```
|
||||
|
||||
### Avantages de la Nouvelle Structure
|
||||
|
||||
1. **Organisation claire** : Documentation organisée par sujet
|
||||
2. **Navigation facile** : Index centralisé avec liens
|
||||
3. **Parcours d'apprentissage** : Guides adaptés au niveau d'expertise
|
||||
4. **Maintenance simplifiée** : Structure modulaire
|
||||
5. **Archive propre** : Anciens fichiers conservés mais séparés
|
||||
6. **Exemples pratiques** : Exemples d'utilisation organisés
|
||||
|
||||
## 🔄 Commandes de Migration
|
||||
|
||||
### Migration Automatique
|
||||
```bash
|
||||
# Exécuter la migration complète
|
||||
./migrate_documentation.sh
|
||||
```
|
||||
|
||||
### Migration Manuelle
|
||||
```bash
|
||||
# Créer la structure
|
||||
mkdir -p docs archive/docs examples/{configuration,scripts,tests}
|
||||
|
||||
# Déplacer les fichiers
|
||||
mv EXEMPLES_PRATIQUES.md archive/docs/
|
||||
mv CONFIGURATION_DEV3.md archive/docs/
|
||||
mv INTEGRATION_DEV3_FINAL.md archive/docs/
|
||||
mv COMMANDES_REDEMARRAGE.md archive/docs/
|
||||
mv RESUME_AJOUT_DEV3.md archive/docs/
|
||||
mv RESUME_DECOUVERTE_NOEUDS.md archive/docs/
|
||||
mv RESUME_SCRIPT_RESTART.md archive/docs/
|
||||
mv RESUME_TEST_3_RELAIS.md archive/docs/
|
||||
mv README_RESTART_SCRIPT.md archive/docs/
|
||||
mv explain_node_discovery.md archive/docs/
|
||||
|
||||
# Fusionner les spécifications
|
||||
cat specs/spec-technical.md >> specs/spec-technique.md
|
||||
rm specs/spec-technical.md
|
||||
|
||||
# Créer le README de l'archive
|
||||
cat > archive/README.md << 'EOF'
|
||||
# 📦 Archive - Documentation 4NK Node
|
||||
|
||||
Ce dossier contient les anciens fichiers de documentation qui ont été migrés vers la nouvelle structure organisée.
|
||||
|
||||
## 📁 Contenu
|
||||
|
||||
- `docs/` - Anciens fichiers de documentation
|
||||
- `README.md` - Ce fichier
|
||||
|
||||
## 🔗 Liens vers la Nouvelle Documentation
|
||||
|
||||
- **Documentation principale** : [../docs/INDEX.md](../docs/INDEX.md)
|
||||
- **Guide d'installation** : [../docs/INSTALLATION.md](../docs/INSTALLATION.md)
|
||||
- **Guide d'utilisation** : [../docs/USAGE.md](../docs/USAGE.md)
|
||||
- **Guide de configuration** : [../docs/CONFIGURATION.md](../docs/CONFIGURATION.md)
|
||||
- **Référence rapide** : [../docs/QUICK_REFERENCE.md](../docs/QUICK_REFERENCE.md)
|
||||
|
||||
## 📅 Date de Migration
|
||||
|
||||
Migration effectuée le : $(date)
|
||||
EOF
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**🔄 Migration de Documentation 4NK Node - Structure organisée et maintenable !**
|
@ -1,492 +0,0 @@
|
||||
# ⚡ Référence Rapide - 4NK Node
|
||||
|
||||
Référence rapide des commandes essentielles pour l'infrastructure 4NK Node.
|
||||
|
||||
## 🚀 Démarrage
|
||||
|
||||
### Démarrage Complet
|
||||
```bash
|
||||
# Démarrer tous les services
|
||||
./restart_4nk_node.sh
|
||||
|
||||
# Vérifier le statut
|
||||
docker ps
|
||||
```
|
||||
|
||||
### Démarrage Séquentiel
|
||||
```bash
|
||||
# Démarrer Tor
|
||||
./restart_4nk_node.sh -t
|
||||
|
||||
# Démarrer Bitcoin Core
|
||||
./restart_4nk_node.sh -b
|
||||
|
||||
# Démarrer Blindbit
|
||||
./restart_4nk_node.sh -l
|
||||
|
||||
# Démarrer les relais
|
||||
./restart_4nk_node.sh -r
|
||||
```
|
||||
|
||||
### Options du Script de Redémarrage
|
||||
```bash
|
||||
./restart_4nk_node.sh -h # Aide
|
||||
./restart_4nk_node.sh -s # Arrêter
|
||||
./restart_4nk_node.sh -c # Nettoyer
|
||||
./restart_4nk_node.sh -n # Créer réseau
|
||||
./restart_4nk_node.sh -t # Démarrer Tor
|
||||
./restart_4nk_node.sh -b # Démarrer Bitcoin
|
||||
./restart_4nk_node.sh -l # Démarrer Blindbit
|
||||
./restart_4nk_node.sh -r # Démarrer relais
|
||||
./restart_4nk_node.sh -v # Vérifier statut
|
||||
```
|
||||
|
||||
## 📊 Monitoring
|
||||
|
||||
### Statut des Services
|
||||
```bash
|
||||
# Statut de tous les services
|
||||
docker ps
|
||||
|
||||
# Statut avec format personnalisé
|
||||
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
|
||||
|
||||
# Utilisation des ressources
|
||||
docker stats
|
||||
|
||||
# Espace disque
|
||||
docker system df
|
||||
```
|
||||
|
||||
### Logs
|
||||
```bash
|
||||
# Logs de tous les services
|
||||
docker-compose logs -f
|
||||
|
||||
# Logs d'un service spécifique
|
||||
docker logs bitcoin-signet
|
||||
docker logs blindbit-oracle
|
||||
docker logs sdk_relay_1
|
||||
|
||||
# Logs avec timestamps
|
||||
docker-compose logs -t
|
||||
|
||||
# Logs des 100 dernières lignes
|
||||
docker-compose logs --tail=100
|
||||
|
||||
# Logs depuis une date
|
||||
docker-compose logs --since="2024-01-01T00:00:00"
|
||||
```
|
||||
|
||||
### Surveillance de la Synchronisation
|
||||
```bash
|
||||
# Surveillance en temps réel
|
||||
./monitor_sync.sh
|
||||
|
||||
# Test de synchronisation
|
||||
./test_sync_logs.sh
|
||||
|
||||
# Test de synchronisation forcé
|
||||
./test_sync_logs.sh force
|
||||
|
||||
# Test de synchronisation en continu
|
||||
./test_sync_logs.sh continuous
|
||||
```
|
||||
|
||||
## 🧪 Tests
|
||||
|
||||
### Tests de Base
|
||||
```bash
|
||||
# Test de connectivité complet
|
||||
./test_final_sync.sh
|
||||
|
||||
# Test de synchronisation
|
||||
./test_sync_logs.sh
|
||||
|
||||
# Test des messages WebSocket
|
||||
python3 test_websocket_messages.py
|
||||
|
||||
# Test des 3 relais
|
||||
./test_3_relays.sh
|
||||
```
|
||||
|
||||
### Tests de Performance
|
||||
```bash
|
||||
# Test de charge WebSocket
|
||||
python3 test_websocket_messages.py --load-test
|
||||
|
||||
# Test de connectivité multiple
|
||||
netstat -tlnp | grep -E "(8090|8092|8094)"
|
||||
|
||||
# Test de performance
|
||||
docker stats --no-stream
|
||||
```
|
||||
|
||||
### Tests de Sécurité
|
||||
```bash
|
||||
# Vérifier les ports exposés
|
||||
netstat -tuln | grep -E "(8090|8092|8094)"
|
||||
|
||||
# Vérifier les logs d'accès
|
||||
docker logs sdk_relay_1 | grep -E "(ERROR|WARN)" | tail -20
|
||||
|
||||
# Vérifier l'utilisation des ressources
|
||||
docker stats --no-stream | grep sdk_relay
|
||||
```
|
||||
|
||||
## 🔗 Connexion aux Services
|
||||
|
||||
### Bitcoin Core RPC
|
||||
```bash
|
||||
# Connexion via curl
|
||||
curl -u bitcoin:your_password --data-binary '{"jsonrpc": "1.0", "id": "curltest", "method": "getblockchaininfo", "params": []}' -H 'content-type: text/plain;' http://localhost:18443/
|
||||
|
||||
# Connexion via bitcoin-cli
|
||||
docker exec bitcoin-signet bitcoin-cli -signet getblockchaininfo
|
||||
|
||||
# Vérifier la synchronisation
|
||||
docker exec bitcoin-signet bitcoin-cli -signet getblockchaininfo | jq '.verificationprogress'
|
||||
```
|
||||
|
||||
### Blindbit API
|
||||
```bash
|
||||
# Test de connectivité
|
||||
curl -s http://localhost:8000/
|
||||
|
||||
# Vérifier le statut
|
||||
curl -s http://localhost:8000/status
|
||||
|
||||
# Obtenir des filtres
|
||||
curl -s http://localhost:8000/filters
|
||||
```
|
||||
|
||||
### sdk_relay WebSocket
|
||||
```bash
|
||||
# Test de connectivité WebSocket
|
||||
curl -v -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Sec-WebSocket-Key: test" http://localhost:8090/
|
||||
|
||||
# Test avec wscat (si installé)
|
||||
wscat -c ws://localhost:8090
|
||||
|
||||
# Test avec Python
|
||||
python3 test_websocket_messages.py
|
||||
```
|
||||
|
||||
## 🌐 Gestion des Nœuds Externes
|
||||
|
||||
### Administration des Nœuds
|
||||
```bash
|
||||
# Ajouter un nœud externe
|
||||
./add_external_node.sh add external-relay-1 external-relay-1.example.com:8090
|
||||
|
||||
# Lister les nœuds configurés
|
||||
./add_external_node.sh list
|
||||
|
||||
# Tester la connectivité
|
||||
./add_external_node.sh test external-relay-1
|
||||
|
||||
# Supprimer un nœud
|
||||
./add_external_node.sh remove external-relay-1
|
||||
|
||||
# Valider une adresse
|
||||
./add_external_node.sh validate 192.168.1.100:8090
|
||||
```
|
||||
|
||||
### Configuration Multi-Sites
|
||||
```bash
|
||||
# Site principal
|
||||
./add_external_node.sh add site-paris-1 paris-relay-1.4nk.net:8090
|
||||
./add_external_node.sh add site-paris-2 paris-relay-2.4nk.net:8090
|
||||
|
||||
# Site secondaire
|
||||
./add_external_node.sh add site-lyon-1 lyon-relay-1.4nk.net:8090
|
||||
./add_external_node.sh add site-lyon-2 lyon-relay-2.4nk.net:8090
|
||||
|
||||
# Site de backup
|
||||
./add_external_node.sh add backup-1 backup-relay-1.4nk.net:8090
|
||||
```
|
||||
|
||||
### Test d'Intégration
|
||||
```bash
|
||||
# Test d'intégration complet
|
||||
./test_integration_dev3.sh
|
||||
|
||||
# Test de connectivité dev3
|
||||
python3 test_dev3_simple.py
|
||||
|
||||
# Test de connectivité avancé
|
||||
python3 test_dev3_connectivity.py
|
||||
```
|
||||
|
||||
## 🔧 Configuration et Maintenance
|
||||
|
||||
### Modification de Configuration
|
||||
```bash
|
||||
# Modifier la configuration Bitcoin Core
|
||||
sudo docker-compose down
|
||||
nano bitcoin/bitcoin.conf
|
||||
sudo docker-compose up -d bitcoin
|
||||
|
||||
# Modifier la configuration Blindbit
|
||||
nano blindbit/blindbit.toml
|
||||
sudo docker-compose restart blindbit
|
||||
|
||||
# Modifier la configuration des relais
|
||||
nano sdk_relay/.conf.docker.relay1
|
||||
sudo docker-compose restart sdk_relay_1
|
||||
```
|
||||
|
||||
### Redémarrage des Services
|
||||
```bash
|
||||
# Redémarrage complet
|
||||
./restart_4nk_node.sh
|
||||
|
||||
# Redémarrage d'un service spécifique
|
||||
docker-compose restart bitcoin
|
||||
docker-compose restart blindbit
|
||||
docker-compose restart sdk_relay_1
|
||||
|
||||
# Redémarrage avec reconstruction
|
||||
docker-compose down
|
||||
docker-compose build --no-cache
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
### Sauvegarde et Restauration
|
||||
```bash
|
||||
# Sauvegarde des données
|
||||
docker exec bitcoin-signet tar czf /tmp/bitcoin-backup.tar.gz /home/bitcoin/.bitcoin
|
||||
docker cp bitcoin-signet:/tmp/bitcoin-backup.tar.gz ./backup/
|
||||
|
||||
# Sauvegarde des configurations
|
||||
tar czf config-backup.tar.gz sdk_relay/.conf* external_nodes.conf
|
||||
|
||||
# Restauration
|
||||
docker cp ./backup/bitcoin-backup.tar.gz bitcoin-signet:/tmp/
|
||||
docker exec bitcoin-signet tar xzf /tmp/bitcoin-backup.tar.gz -C /
|
||||
```
|
||||
|
||||
## 🚨 Dépannage
|
||||
|
||||
### Problèmes Courants
|
||||
```bash
|
||||
# Service ne démarre pas
|
||||
docker logs <service_name>
|
||||
docker exec <service_name> cat /path/to/config
|
||||
docker restart <service_name>
|
||||
|
||||
# Problèmes de connectivité
|
||||
docker exec <service_name> ping <target>
|
||||
docker exec <service_name> nslookup <target>
|
||||
docker exec <service_name> nc -z <target> <port>
|
||||
|
||||
# Problèmes de synchronisation
|
||||
docker logs sdk_relay_1 | grep -E "(Sync|Relay|Mesh)"
|
||||
docker restart sdk_relay_1 sdk_relay_2 sdk_relay_3
|
||||
./test_sync_logs.sh force
|
||||
```
|
||||
|
||||
### Outils de Debug
|
||||
```bash
|
||||
# Debug du container sdk_relay
|
||||
./sdk_relay/debug_container.sh
|
||||
|
||||
# Test du healthcheck
|
||||
./sdk_relay/test_healthcheck.sh
|
||||
|
||||
# Test de connectivité
|
||||
./sdk_relay/test_connectivity.sh
|
||||
|
||||
# Test simple
|
||||
./sdk_relay/test_simple.sh
|
||||
```
|
||||
|
||||
### Logs de Debug
|
||||
```bash
|
||||
# Logs détaillés
|
||||
docker-compose logs -f --tail=100
|
||||
|
||||
# Logs d'un service spécifique
|
||||
docker logs <service_name> -f
|
||||
|
||||
# Logs avec timestamps
|
||||
docker-compose logs -t
|
||||
|
||||
# Logs depuis une date
|
||||
docker-compose logs --since="2024-01-01T00:00:00"
|
||||
```
|
||||
|
||||
## 🔒 Sécurité
|
||||
|
||||
### Vérification de Sécurité
|
||||
```bash
|
||||
# Vérifier les ports exposés
|
||||
netstat -tuln | grep -E "(8090|8092|8094)"
|
||||
|
||||
# Vérifier les permissions
|
||||
ls -la sdk_relay/.conf*
|
||||
ls -la bitcoin/bitcoin.conf
|
||||
ls -la blindbit/blindbit.toml
|
||||
|
||||
# Vérifier les logs de sécurité
|
||||
docker logs sdk_relay_1 | grep -E "(ERROR|WARN|SECURITY)" | tail -20
|
||||
```
|
||||
|
||||
### Configuration de Pare-feu
|
||||
```bash
|
||||
# Autoriser les ports nécessaires
|
||||
sudo ufw allow 18443/tcp # Bitcoin Core RPC
|
||||
sudo ufw allow 8090/tcp # sdk_relay WebSocket
|
||||
sudo ufw allow 8000/tcp # Blindbit API
|
||||
sudo ufw enable
|
||||
|
||||
# Vérifier les règles
|
||||
sudo ufw status numbered
|
||||
```
|
||||
|
||||
## 📈 Performance
|
||||
|
||||
### Optimisation
|
||||
```bash
|
||||
# Limiter l'utilisation CPU
|
||||
docker-compose up -d --scale bitcoin=1
|
||||
|
||||
# Optimiser la mémoire
|
||||
docker stats --no-stream | grep sdk_relay
|
||||
|
||||
# Nettoyer l'espace disque
|
||||
docker system prune -f
|
||||
```
|
||||
|
||||
### Monitoring de Performance
|
||||
```bash
|
||||
# Surveillance des ressources
|
||||
docker stats
|
||||
|
||||
# Surveillance des connexions
|
||||
netstat -an | grep :8090 | wc -l
|
||||
|
||||
# Surveillance de l'espace disque
|
||||
df -h
|
||||
```
|
||||
|
||||
### Tests de Charge
|
||||
```bash
|
||||
# Test de charge simple
|
||||
for i in {1..50}; do
|
||||
python3 test_websocket_messages.py &
|
||||
sleep 0.1
|
||||
done
|
||||
wait
|
||||
|
||||
# Test de charge avancé
|
||||
python3 test_websocket_messages.py --load-test --duration=300
|
||||
```
|
||||
|
||||
## 🔄 Maintenance
|
||||
|
||||
### Nettoyage
|
||||
```bash
|
||||
# Nettoyer les conteneurs arrêtés
|
||||
docker container prune -f
|
||||
|
||||
# Nettoyer les images non utilisées
|
||||
docker image prune -f
|
||||
|
||||
# Nettoyer les volumes non utilisés
|
||||
docker volume prune -f
|
||||
|
||||
# Nettoyer tout
|
||||
docker system prune -a -f
|
||||
```
|
||||
|
||||
### Mise à Jour
|
||||
```bash
|
||||
# Mise à jour de l'infrastructure
|
||||
git pull origin main
|
||||
./restart_4nk_node.sh
|
||||
|
||||
# Mise à jour des images
|
||||
docker-compose build --no-cache
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
### Sauvegarde Automatique
|
||||
```bash
|
||||
# Script de sauvegarde
|
||||
cat > backup_4nk.sh << 'EOF'
|
||||
#!/bin/bash
|
||||
DATE=$(date +%Y%m%d_%H%M%S)
|
||||
BACKUP_DIR="/backup/4nk_node_$DATE"
|
||||
mkdir -p $BACKUP_DIR
|
||||
cp -r sdk_relay/.conf* $BACKUP_DIR/
|
||||
cp external_nodes.conf $BACKUP_DIR/
|
||||
docker exec bitcoin-signet tar czf /tmp/bitcoin-backup.tar.gz /home/bitcoin/.bitcoin
|
||||
docker cp bitcoin-signet:/tmp/bitcoin-backup.tar.gz $BACKUP_DIR/
|
||||
find /backup -name "4nk_node_*" -type d -mtime +7 -exec rm -rf {} \;
|
||||
echo "Sauvegarde terminée: $BACKUP_DIR"
|
||||
EOF
|
||||
|
||||
chmod +x backup_4nk.sh
|
||||
|
||||
# Ajouter au cron
|
||||
echo "0 2 * * * /path/to/backup_4nk.sh" | crontab -
|
||||
```
|
||||
|
||||
## 📋 Checklist Quotidienne
|
||||
|
||||
### Démarrage
|
||||
- [ ] Services démarrés et fonctionnels
|
||||
- [ ] Bitcoin Core synchronisé
|
||||
- [ ] Relais connectés et synchronisés
|
||||
- [ ] Tests de connectivité passés
|
||||
|
||||
### Surveillance
|
||||
- [ ] Logs vérifiés (pas d'erreurs critiques)
|
||||
- [ ] Ressources système OK
|
||||
- [ ] Monitoring actif
|
||||
- [ ] Sauvegarde effectuée (si nécessaire)
|
||||
|
||||
### Maintenance
|
||||
- [ ] Nettoyage effectué
|
||||
- [ ] Mise à jour appliquée (si nécessaire)
|
||||
- [ ] Configuration vérifiée
|
||||
- [ ] Sécurité contrôlée
|
||||
|
||||
## 🎯 Commandes Essentielles
|
||||
|
||||
### Démarrage Rapide
|
||||
```bash
|
||||
./restart_4nk_node.sh
|
||||
docker ps
|
||||
./test_final_sync.sh
|
||||
```
|
||||
|
||||
### Monitoring Rapide
|
||||
```bash
|
||||
docker ps
|
||||
docker-compose logs -f
|
||||
./monitor_sync.sh
|
||||
```
|
||||
|
||||
### Test Rapide
|
||||
```bash
|
||||
./test_final_sync.sh
|
||||
./test_sync_logs.sh
|
||||
python3 test_websocket_messages.py
|
||||
```
|
||||
|
||||
### Dépannage Rapide
|
||||
```bash
|
||||
docker logs <service_name>
|
||||
docker restart <service_name>
|
||||
./test_sync_logs.sh force
|
||||
```
|
||||
|
||||
### Arrêt Propre
|
||||
```bash
|
||||
docker-compose down
|
||||
docker system prune -f
|
||||
```
|
||||
|
||||
---
|
@ -1,322 +0,0 @@
|
||||
# Documentation SSH complète - ihm_client
|
||||
|
||||
## Vue d'ensemble
|
||||
|
||||
Ce document consolide toute la documentation SSH pour le projet `ihm_client`, couvrant l'automatisation des push, la configuration CI/CD, et les bonnes pratiques de sécurité.
|
||||
|
||||
## Table des matières
|
||||
|
||||
- [Configuration automatique](#configuration-automatique)
|
||||
- [Scripts d'automatisation](#scripts-dautomatisation)
|
||||
- [Workflow CI/CD](#workflow-cicd)
|
||||
- [Alias Git](#alias-git)
|
||||
- [Bonnes pratiques](#bonnes-pratiques)
|
||||
- [Dépannage](#dépannage)
|
||||
|
||||
---
|
||||
|
||||
## Configuration automatique
|
||||
|
||||
### Configuration Git globale
|
||||
|
||||
La configuration SSH est automatiquement appliquée pour tous les push :
|
||||
|
||||
```bash
|
||||
git config --global url."git@git.4nkweb.com:".insteadOf "https://git.4nkweb.com/"
|
||||
```
|
||||
|
||||
### Vérification SSH
|
||||
|
||||
Test automatique de la connexion SSH :
|
||||
|
||||
```bash
|
||||
ssh -T git@git.4nkweb.com
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Scripts d'automatisation
|
||||
|
||||
### 1. Script principal : `auto-ssh-push.sh`
|
||||
|
||||
Le script `scripts/auto-ssh-push.sh` offre plusieurs modes de push automatique :
|
||||
|
||||
#### Options disponibles
|
||||
|
||||
```bash
|
||||
# Push rapide (message automatique)
|
||||
./scripts/auto-ssh-push.sh quick
|
||||
|
||||
# Push avec message personnalisé
|
||||
./scripts/auto-ssh-push.sh message "feat: nouvelle fonctionnalité"
|
||||
|
||||
# Push sur une branche spécifique
|
||||
./scripts/auto-ssh-push.sh branch feature/nouvelle-fonctionnalite
|
||||
|
||||
# Push et merge (avec confirmation)
|
||||
./scripts/auto-ssh-push.sh merge
|
||||
|
||||
# Vérification du statut
|
||||
./scripts/auto-ssh-push.sh status
|
||||
```
|
||||
|
||||
#### Fonctionnalités
|
||||
|
||||
- **Configuration SSH automatique** - Plus besoin de configurer SSH manuellement
|
||||
- **Push automatique** - Ajout, commit et push en une commande
|
||||
- **Gestion des branches** - Support des branches personnalisées
|
||||
- **Vérification SSH** - Test automatique de la connexion SSH
|
||||
- **Messages de commit** - Messages automatiques ou personnalisés
|
||||
|
||||
### 2. Script d'initialisation : `init-ssh-env.sh`
|
||||
|
||||
Le script `scripts/init-ssh-env.sh` configure automatiquement l'environnement SSH :
|
||||
|
||||
```bash
|
||||
./scripts/init-ssh-env.sh
|
||||
```
|
||||
|
||||
#### Fonctionnalités
|
||||
|
||||
- Vérification de l'environnement de développement
|
||||
- Configuration SSH automatique
|
||||
- Test de connectivité SSH
|
||||
- Configuration des alias Git
|
||||
- Validation de la configuration
|
||||
|
||||
### 3. Script CI/CD : `setup-ssh-ci.sh`
|
||||
|
||||
Le script `scripts/setup-ssh-ci.sh` configure SSH pour les environnements CI/CD :
|
||||
|
||||
```bash
|
||||
./scripts/setup-ssh-ci.sh
|
||||
```
|
||||
|
||||
#### Fonctionnalités
|
||||
|
||||
- Détection automatique de l'environnement CI
|
||||
- Configuration SSH pour Gitea Actions
|
||||
- Gestion des clés SSH privées
|
||||
- Test de connexion SSH
|
||||
- Configuration Git pour SSH
|
||||
|
||||
---
|
||||
|
||||
## Workflow CI/CD
|
||||
|
||||
### Configuration Gitea Actions
|
||||
|
||||
Le workflow CI/CD dans `.gitea/workflows/ci.yml` inclut une étape de configuration SSH :
|
||||
|
||||
```yaml
|
||||
- name: Setup SSH for Gitea
|
||||
run: |
|
||||
mkdir -p ~/.ssh
|
||||
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
|
||||
chmod 600 ~/.ssh/id_rsa
|
||||
ssh-keyscan -H git.4nkweb.com >> ~/.ssh/known_hosts
|
||||
git config --global url."git@git.4nkweb.com:".insteadOf "https://git.4nkweb.com/"
|
||||
```
|
||||
|
||||
### Variables d'environnement requises
|
||||
|
||||
- `SSH_PRIVATE_KEY` : Clé SSH privée pour l'authentification
|
||||
- `SSH_PUBLIC_KEY` : Clé SSH publique (optionnelle)
|
||||
|
||||
### Jobs configurés
|
||||
|
||||
- **test** : Tests unitaires et d'intégration
|
||||
- **security** : Tests de sécurité et audit
|
||||
- **integration-test** : Tests d'intégration complets
|
||||
|
||||
---
|
||||
|
||||
## Alias Git
|
||||
|
||||
### Alias configurés
|
||||
|
||||
```bash
|
||||
# Push rapide avec message automatique
|
||||
git quick-push
|
||||
|
||||
# Push avec message personnalisé
|
||||
git ssh-push "Mon message de commit"
|
||||
```
|
||||
|
||||
### Configuration des alias
|
||||
|
||||
```bash
|
||||
# Alias pour push rapide
|
||||
git config --global alias.quick-push '!f() { git add . && git commit -m "Update $(date)" && git push origin $(git branch --show-current); }; f'
|
||||
|
||||
# Alias pour push avec message
|
||||
git config --global alias.ssh-push '!f() { git add . && git commit -m "${1:-Auto-commit $(date)}" && git push origin $(git branch --show-current); }; f'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Bonnes pratiques
|
||||
|
||||
### Sécurité
|
||||
|
||||
1. **Permissions des clés SSH**
|
||||
```bash
|
||||
chmod 600 ~/.ssh/id_rsa
|
||||
chmod 644 ~/.ssh/id_rsa.pub
|
||||
chmod 600 ~/.ssh/config
|
||||
```
|
||||
|
||||
2. **Configuration SSH sécurisée**
|
||||
```bash
|
||||
Host git.4nkweb.com
|
||||
HostName git.4nkweb.com
|
||||
User git
|
||||
IdentityFile ~/.ssh/id_rsa
|
||||
StrictHostKeyChecking no
|
||||
UserKnownHostsFile=/dev/null
|
||||
```
|
||||
|
||||
3. **Gestion des secrets**
|
||||
- Ne jamais commiter de clés SSH dans le code
|
||||
- Utiliser les secrets Gitea pour les clés privées
|
||||
- Rotation régulière des clés SSH
|
||||
|
||||
### Workflow recommandé
|
||||
|
||||
1. **Initialisation**
|
||||
```bash
|
||||
./scripts/init-ssh-env.sh
|
||||
```
|
||||
|
||||
2. **Développement quotidien**
|
||||
```bash
|
||||
# Push rapide
|
||||
./scripts/auto-ssh-push.sh quick
|
||||
|
||||
# Ou avec alias Git
|
||||
git quick-push
|
||||
```
|
||||
|
||||
3. **Push avec message**
|
||||
```bash
|
||||
./scripts/auto-ssh-push.sh message "feat: nouvelle fonctionnalité"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Dépannage
|
||||
|
||||
### Problèmes courants
|
||||
|
||||
#### 1. Échec d'authentification SSH
|
||||
|
||||
```bash
|
||||
# Vérifier la configuration SSH
|
||||
ssh -T git@git.4nkweb.com
|
||||
|
||||
# Vérifier les permissions
|
||||
ls -la ~/.ssh/
|
||||
|
||||
# Régénérer la clé SSH si nécessaire
|
||||
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_4nk
|
||||
```
|
||||
|
||||
#### 2. Configuration Git incorrecte
|
||||
|
||||
```bash
|
||||
# Vérifier la configuration Git
|
||||
git config --global --list | grep url
|
||||
|
||||
# Reconfigurer SSH
|
||||
git config --global url."git@git.4nkweb.com:".insteadOf "https://git.4nkweb.com/"
|
||||
```
|
||||
|
||||
#### 3. Problèmes CI/CD
|
||||
|
||||
```bash
|
||||
# Vérifier les variables d'environnement
|
||||
echo $SSH_PRIVATE_KEY
|
||||
|
||||
# Tester la configuration SSH
|
||||
./scripts/setup-ssh-ci.sh
|
||||
```
|
||||
|
||||
### Messages d'erreur courants
|
||||
|
||||
- **"Permission denied"** : Vérifier les permissions des clés SSH
|
||||
- **"Host key verification failed"** : Ajouter l'hôte aux known_hosts
|
||||
- **"Could not resolve hostname"** : Vérifier la connectivité réseau
|
||||
|
||||
### Logs et debugging
|
||||
|
||||
```bash
|
||||
# Activer le debug SSH
|
||||
ssh -vT git@git.4nkweb.com
|
||||
|
||||
# Vérifier les logs Git
|
||||
GIT_SSH_COMMAND="ssh -v" git push origin main
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Intégration avec 4NK_node
|
||||
|
||||
### Configuration pour l'intégration
|
||||
|
||||
Le projet `ihm_client` est configuré pour s'intégrer dans l'infrastructure `4NK_node` :
|
||||
|
||||
1. **Script d'intégration** : `scripts/integrate-4nk-node.sh`
|
||||
2. **Configuration Docker** : `Dockerfile.4nk-node`
|
||||
3. **Configuration Nginx** : `nginx.4nk-node.conf`
|
||||
4. **Script de démarrage** : `start-4nk-node.sh`
|
||||
|
||||
### Workflow d'intégration
|
||||
|
||||
```bash
|
||||
# Intégrer ihm_client dans 4NK_node
|
||||
./scripts/integrate-4nk-node.sh
|
||||
|
||||
# Vérifier l'intégration
|
||||
docker-compose -f docker-compose.4nk-node.yml up -d
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Évolution future
|
||||
|
||||
### Améliorations prévues
|
||||
|
||||
1. **Support multi-environnements**
|
||||
- Configuration automatique pour différents environnements
|
||||
- Gestion des clés SSH multiples
|
||||
|
||||
2. **Intégration avancée**
|
||||
- Support des hooks Git
|
||||
- Intégration avec d'autres outils CI/CD
|
||||
|
||||
3. **Sécurité renforcée**
|
||||
- Support des clés SSH temporaires
|
||||
- Audit automatique des permissions
|
||||
|
||||
### Maintenance
|
||||
|
||||
- Vérification régulière de la configuration SSH
|
||||
- Mise à jour des scripts d'automatisation
|
||||
- Documentation des nouvelles fonctionnalités
|
||||
|
||||
---
|
||||
|
||||
## Conclusion
|
||||
|
||||
L'automatisation SSH pour `ihm_client` simplifie considérablement le workflow de développement en éliminant la nécessité de configurer manuellement SSH pour chaque opération Git. Les scripts et alias fournis offrent une interface simple et sécurisée pour tous les push vers le repository.
|
||||
|
||||
### Ressources
|
||||
|
||||
- [Documentation SSH officielle](https://git-scm.com/book/fr/v2/Git-sur-le-serveur-Génération-d-une-clé-SSH)
|
||||
- [Guide Gitea SSH](https://docs.gitea.com/usage/ssh-setup)
|
||||
- [Bonnes pratiques SSH](https://www.ssh.com/academy/ssh/key)
|
||||
|
||||
---
|
||||
|
||||
**Dernière mise à jour** : $(date '+%Y-%m-%d')
|
||||
**Version** : 1.0.0
|
@ -348,5 +348,3 @@ cargo test --test integration_tests
|
||||
---
|
||||
|
||||
**📚 API Reference complète pour sdk_common - Bibliothèque commune pour les Silent Payments** 🚀
|
||||
|
||||
|
||||
|
@ -234,5 +234,3 @@ cargo doc --open
|
||||
---
|
||||
|
||||
**📚 Documentation complète pour sdk_common - Bibliothèque commune pour les Silent Payments** 🚀
|
||||
|
||||
|
||||
|
@ -179,11 +179,11 @@ fn validate_custom_process(process: &Process) -> Result<(), ValidationError> {
|
||||
if process.name.is_empty() {
|
||||
return Err(ValidationError::InvalidProcess("Name cannot be empty".to_string()));
|
||||
}
|
||||
|
||||
|
||||
if process.device_id.is_empty() {
|
||||
return Err(ValidationError::InvalidProcess("Device ID cannot be empty".to_string()));
|
||||
}
|
||||
|
||||
|
||||
Ok(())
|
||||
}
|
||||
```
|
||||
@ -219,7 +219,7 @@ mod tests {
|
||||
let data = b"test data for compression";
|
||||
let compressed = compress_data(data).unwrap();
|
||||
let decompressed = decompress_data(&compressed).unwrap();
|
||||
|
||||
|
||||
assert_eq!(data, decompressed.as_slice());
|
||||
}
|
||||
}
|
||||
@ -235,7 +235,7 @@ use sdk_common::{Process, Member, ValidationRule};
|
||||
fn test_process_member_integration() {
|
||||
let process = Process { /* ... */ };
|
||||
let member = Member { /* ... */ };
|
||||
|
||||
|
||||
// Test d'intégration entre processus et membre
|
||||
assert_eq!(member.process_id, process.id);
|
||||
}
|
||||
@ -290,14 +290,14 @@ fn handle_errors() -> Result<(), SdkError> {
|
||||
```rust
|
||||
fn process_data() -> Result<(), SdkError> {
|
||||
let data = b"données à traiter";
|
||||
|
||||
|
||||
// Compression avec gestion d'erreur automatique
|
||||
let compressed = compress_data(data)?;
|
||||
|
||||
|
||||
// Validation avec gestion d'erreur automatique
|
||||
let process = create_process()?;
|
||||
validate_process(&process)?;
|
||||
|
||||
|
||||
Ok(())
|
||||
}
|
||||
```
|
||||
@ -340,7 +340,7 @@ fn create_secure_process(name: &str, device_id: &str) -> Result<Process, SdkErro
|
||||
if name.is_empty() || device_id.is_empty() {
|
||||
return Err(SdkError::InvalidInput("Name and device_id cannot be empty".to_string()));
|
||||
}
|
||||
|
||||
|
||||
let process = Process {
|
||||
id: generate_secure_id(),
|
||||
name: name.to_string(),
|
||||
@ -351,7 +351,7 @@ fn create_secure_process(name: &str, device_id: &str) -> Result<Process, SdkErro
|
||||
created_at: None,
|
||||
updated_at: None,
|
||||
};
|
||||
|
||||
|
||||
validate_process(&process)?;
|
||||
Ok(process)
|
||||
}
|
||||
@ -363,7 +363,7 @@ fn handle_sensitive_data(data: &[u8]) -> Result<(), SdkError> {
|
||||
log::error!("Compression failed: {}", e);
|
||||
SdkError::Internal("Compression failed".to_string())
|
||||
})?;
|
||||
|
||||
|
||||
Ok(())
|
||||
}
|
||||
```
|
||||
@ -399,7 +399,7 @@ use log::{debug, info, warn, error};
|
||||
|
||||
fn debug_process(process: &Process) {
|
||||
debug!("Processing process: {:?}", process);
|
||||
|
||||
|
||||
match validate_process(process) {
|
||||
Ok(()) => info!("Process validation successful"),
|
||||
Err(e) => warn!("Process validation failed: {:?}", e),
|
||||
@ -425,5 +425,3 @@ fn debug_process(process: &Process) {
|
||||
---
|
||||
|
||||
**📖 Guide d'utilisation complet pour sdk_common - Bibliothèque commune pour les Silent Payments** 🚀
|
||||
|
||||
|
||||
|
8
docs/templates/API.md
vendored
8
docs/templates/API.md
vendored
@ -1,8 +0,0 @@
|
||||
# Référence API — Template
|
||||
|
||||
- Vue d’ensemble
|
||||
- Authentification/permissions
|
||||
- Endpoints par domaine (schémas, invariants)
|
||||
- Codes d’erreur
|
||||
- Limites et quotas
|
||||
- Sécurité et conformité
|
8
docs/templates/ARCHITECTURE.md
vendored
8
docs/templates/ARCHITECTURE.md
vendored
@ -1,8 +0,0 @@
|
||||
# Architecture — Template
|
||||
|
||||
- Contexte et objectifs
|
||||
- Découpage en couches (UI, services, données)
|
||||
- Flux principaux
|
||||
- Observabilité
|
||||
- CI/CD
|
||||
- Contraintes et SLA
|
6
docs/templates/CONFIGURATION.md
vendored
6
docs/templates/CONFIGURATION.md
vendored
@ -1,6 +0,0 @@
|
||||
# Configuration — Template
|
||||
|
||||
- Variables d’environnement (nom, type, défaut, portée)
|
||||
- Fichiers de configuration (format, validation)
|
||||
- Réseau et sécurité (ports, TLS, auth)
|
||||
- Observabilité (logs, métriques, traces)
|
12
docs/templates/INDEX.md
vendored
12
docs/templates/INDEX.md
vendored
@ -1,12 +0,0 @@
|
||||
# Index — Templates de documentation (pour projets dérivés)
|
||||
|
||||
Utilisez ces squelettes pour démarrer la documentation de votre projet.
|
||||
|
||||
- API.md — squelette de référence API
|
||||
- ARCHITECTURE.md — squelette d’architecture
|
||||
- CONFIGURATION.md — squelette de configuration
|
||||
- USAGE.md — squelette d’usage
|
||||
- TESTING.md — squelette de stratégie de tests
|
||||
- SECURITY_AUDIT.md — squelette d’audit sécurité
|
||||
- RELEASE_PLAN.md — squelette de plan de release
|
||||
- OPEN_SOURCE_CHECKLIST.md — squelette de checklist open source
|
7
docs/templates/OPEN_SOURCE_CHECKLIST.md
vendored
7
docs/templates/OPEN_SOURCE_CHECKLIST.md
vendored
@ -1,7 +0,0 @@
|
||||
# Checklist open source — Template
|
||||
|
||||
- Gouvernance: LICENSE, CONTRIBUTING, CODE_OF_CONDUCT
|
||||
- CI/CD: workflows, tests, security-audit, release-guard
|
||||
- Documentation: README, INDEX, guides essentiels
|
||||
- Sécurité: secrets, permissions, audit
|
||||
- Publication: tag, changelog, release notes
|
29
docs/templates/README.md
vendored
29
docs/templates/README.md
vendored
@ -1,29 +0,0 @@
|
||||
# README — Template de projet
|
||||
|
||||
## Présentation
|
||||
|
||||
Décrivez brièvement l’objectif du projet, son périmètre et ses utilisateurs cibles.
|
||||
|
||||
## Démarrage rapide
|
||||
|
||||
- Prérequis (langages/outils)
|
||||
- Étapes d’installation
|
||||
- Commandes de démarrage
|
||||
|
||||
## Documentation
|
||||
|
||||
- Index: `docs/INDEX.md`
|
||||
- Architecture: `docs/ARCHITECTURE.md`
|
||||
- Configuration: `docs/CONFIGURATION.md`
|
||||
- Tests: `docs/TESTING.md`
|
||||
- Sécurité: `docs/SECURITY_AUDIT.md`
|
||||
- Déploiement: `docs/DEPLOYMENT.md`
|
||||
|
||||
## Contribution
|
||||
|
||||
- GUIDE: `CONTRIBUTING.md`, `CODE_OF_CONDUCT.md`
|
||||
- Processus de PR et revues
|
||||
|
||||
## Licence
|
||||
|
||||
- Indiquez la licence choisie (MIT/Apache-2.0/GPL)
|
7
docs/templates/RELEASE_PLAN.md
vendored
7
docs/templates/RELEASE_PLAN.md
vendored
@ -1,7 +0,0 @@
|
||||
# Plan de release — Template
|
||||
|
||||
- Vue d’ensemble, objectifs, date cible
|
||||
- Préparation (docs/CI/tests/sécurité)
|
||||
- Communication (annonces, canaux)
|
||||
- Lancement (checklist, tagging)
|
||||
- Post‑lancement (support, retours)
|
7
docs/templates/SECURITY_AUDIT.md
vendored
7
docs/templates/SECURITY_AUDIT.md
vendored
@ -1,7 +0,0 @@
|
||||
# Audit de sécurité — Template
|
||||
|
||||
- Menaces et surfaces d’attaque
|
||||
- Contrôles préventifs et détectifs
|
||||
- Gestion des secrets
|
||||
- Politique de dépendances
|
||||
- Vérifications CI (security-audit)
|
6
docs/templates/TESTING.md
vendored
6
docs/templates/TESTING.md
vendored
@ -1,6 +0,0 @@
|
||||
# Tests — Template
|
||||
|
||||
- Pyramide: unit, integration, connectivity, external, performance
|
||||
- Structure des répertoires
|
||||
- Exécution et rapports
|
||||
- Intégration CI
|
7
docs/templates/USAGE.md
vendored
7
docs/templates/USAGE.md
vendored
@ -1,7 +0,0 @@
|
||||
# Usage — Template
|
||||
|
||||
- Démarrage quotidien
|
||||
- Opérations courantes
|
||||
- Tests (référence vers TESTING.md)
|
||||
- Sécurité (référence vers SECURITY_AUDIT.md)
|
||||
- Déploiement (référence vers DEPLOYMENT.md)
|
Loading…
x
Reference in New Issue
Block a user