# Guide de P2P Sync de Noterich : Synchronisation entre appareils sans cloud > **Synchronisez vos notes entre appareils de manière sécurisée — aucun stockage en cloud nécessaire.** À une époque où la confidentialité des données est plus importante que jamais, Noterich propose une approche révolutionnaire pour la synchronisation entre appareils. Notre fonctionnalité **P2P (Peer-to-Peer) Sync** permet une partage sans heurts de notes entre vos appareils sans dépendre de serveurs cloud. Vos données restent à vous — toujours. ## Pourquoi choisir P2P Sync ? Les applications traditionnelles de prise de notes stockent vos données sur des serveurs centralisés. Cela crée des risques potentiels pour la confidentialité, des coûts de souscription et une dépendance à l'infrastructure tierce. Noterich prend une voie différente : ```mermaid graph LR A[Votre Appareil] <-->|Connexion directe| B[Votre Autre Appareil] C[Serveur Cloud] -.->|Non nécessaire| A C -.->|Non nécessaire| B style A fill:#4CAF50,color:#fff style B fill:#4CAF50,color:#fff style C fill:#9E9E9E,color:#fff,stroke-dasharray: 5 5 ``` ### Avantages clés - **🔒 Confidentialité avant tout** : Vos notes ne touchent jamais des serveurs tierces - **⚡ Rapide et direct** : Les appareils communiquent directement pour une synchronisation plus rapide - **💰 Pas de souscription** : Synchronisation P2P gratuite sans niveaux premium - **🌐 Fonctionne partout** : Synchronisation via réseau local ou internet - **📱 Plurielle** : Fonctionne entre ordinateur de bureau, ordinateur portable, tablette et mobile ## Comment fonctionne P2P Sync Noterich utilise la **technologie WebRTC** combinée à **PeerJS** pour établir des connexions directes entre vos appareils. Lorsque vous lancez une synchronisation : ```mermaid sequenceDiagram participant D1 comme Appareil A (Envoyeur) participant S comme Serveur de signalisation participant D2 comme Appareil B (Recepteur) D1->>S: Demande une connexion ID S-->>D1: Genre ID de salle D1->>D2: Partage le lien de connexion (QR/URL) D2->>S: Se connecter avec l'ID de salle S-->>D2: Établir la connexion peer D1->>D2: Chiffrer et envoyer les notes D2->>D2: Déchiffrer et importer les notes Note via D1,D2: Transfert chiffré direct<br/>Aucs données stockées sur le serveur ``` ### La technologie derrière les feux d'artifice La mise en œuvre P2P de Noterich utilise : 1. **Bibliothèque PeerJS** : Gère la complexité WebRTC pour la communication entre navigateurs 2. **Chiffrement AES-GCM** : Chiffrement de niveau militaire pour vos données de note 3. **Dérivation de clé PBKDF2** : Génération de clés de chiffrement basée sur une mot de passe de manière sécurisée 4. **Serialisation MessagePack** : Encodage de données binaires efficace pour des transferts rapides 5. **Stockage IndexedDB** : Base de données locale pour l'accès hors ligne ## Débuter avec P2P Sync ### Prérequis Avant de commencer, assurez-vous d'avoir : - ✅ Noterich installé sur les deux appareils - ✅ Les deux appareils connectés à internet (ou sur le même réseau local) - ✅ Un navigateur web moderne (Chrome, Firefox, Edge, Safari) ### Étape 1 : Initier le partage depuis l'appareil source 1. Ouvrez la note que vous souhaitez partager dans Noterich 2. Cliquez sur le bouton **Partager** dans la barre d'outils 3. Sélectionnez l'option **"P2P Partager"** 4. (Obligatoire) Définissez une mot de passe pour plus de sécurité - Les mots de passe doivent avoir au moins 8 caractères - Utilisez le chiffrement AES-256-GCM 5. Attendez que le serveur P2P soit initialisé ```mermaid graph TD A[Ouvrir Note] --> B[Cliquer sur bouton Partager] B --> C[Sélectionner P2P Partager] C --> D{Definir mot de passe ?} D -->|Oui| E[Entrer mot de passe ≥8 caractères] D -->|Non| F[Ignorer chiffrement] E --> G[Initialiser serveur P2P] F --> G G --> H[Generer Link de partage et Code QR] ``` ### Étape 2 : Partager le lien de connexion Une fois le serveur P2P lancé, Noterich génère : - **Un lien partageable unique** contenant les paramètres de connexion - **Un code QR** pour une reconnaissance rapide sur mobile Le format du lien ressemble à : ``` https://noterich.com/#dbshare=<infoHash>&server=<signaling-server> ``` **Méthodes de partage : | Méthode | Idéal pour | Comment le faire | |--------|----------|--------| | 🔗 Copier le lien | Courriel, applications de messagerie | Cliquez sur "Copier le lien" | | 📱 Code QR | Appareils mobiles | Scanné avec la caméra de l'appareil | | 📧 Courriel | Collaborateurs à distance | Coller le lien dans un courriel | ### Étape 3 : Recevoir sur l'appareil cible Sur l'appareil récepteur : 1. **Ouvrir le lien de partage** - Cliquez directement sur le lien, OU - Scannez le code QR avec votre appareil mobile 2. **Vérifier les notes reçues** - Présenter les titres de notes et les métadonnées - Vérifier les informations de l'expéditeur 3. **Entrer le mot de passe** (si chiffré) - Entrer le mot de passe fourni par l'expéditeur - Les données sont déchiffrées localement sur votre appareil 4. **Sélectionner le workspace de destination** - Choisir un workspace existant, OU - Créer un nouveau workspace pour les notes importées 5. **Confirmer l'importation** - Les notes sont déchiffrées et sauvegardées dans IndexedDB - L'index de recherche est reconstruit automatiquement ```mermaid graph TD A[Ouvrir Link] --> B[Se connecter à l'expéditeur] B --> C{Chiffré ?} C -->|Oui| D[Entrer mot de passe] C -->|Non| E[Recevoir Métadonnées] D --> E E --> F[Présenter Notes] F --> G[Choisir Workspace] G --> H[Import & Index] H --> I[Synchronisation complète !] style I fill:#4CAF50,color:#fff ``` ## Fonctionnalités avancées ### Transferts chiffrés Pour les notes sensibles, Noterich propose un chiffrement end-to-end optionnel : **Procédure de chiffrement :** ```javascript // Mot de passe → Clé de chiffrement (PBKDF2) password + salt → deriveKey() → Clé AES-256-GCM // Données de note → Buffer chiffré noteData + clé + iv → encrypt() → encryptedBuffer // Paquet de transfert { encryptedBuffer: ArrayBuffer, salt: Uint8Array, // Pour la dérivation de la clé iv: Uint8Array // Vecteur de départ } ``` **Caractéristiques de sécurité :** - 🔐 100 000 itérations PBKDF2 pour la dérivation de la clé - 🔐 Salte et IV aléatoires pour chaque transfert - 🔐 Chiffrement authentifié AES-256-GCM - 🔐 Le mot de passe n'est jamais transmis — utilisé uniquement localement ### Synchronisation par lots Transférer plusieurs notes de manière efficace : 1. Accéder à **Transfer de base de données** dans les paramètres 2. Sélectionner le mode **"P2P Sync"** 3. Choisir les notes à synchroniser 4. Le récepteur reçoit une vue à la carte avec des options de sélection **Optimisation de performance :** - Les notes sont transférées par gros lots (512KB chacun) - Le traitement asynchrone sans blocage de l'UI empêche le blocage - Suivi du progrès avec précision byte-by-byte - Annuler à tout moment sans corruption des données ### Résolution de conflits Lors de la synchronisation de notes présentes sur les deux appareils : ```mermaid graph TD A[Detecter Conflit] --> B{Comparaison des dates d'évaluation} B -->|Plus récent local| C[Conserver la version locale] B -->|Plus récent distant| D[Shower dialogue de conflit] D --> E[Choisir Version] E --> F[Local] E --> G[Distant] E --> H[Mélanger manuellement] B -->|Tous supprimés| I[Skip] style C fill:#2196F3,color:#fff style F fill:#2196F3,color:#fff style G fill:#4CAF50,color:#fff ``` **Types de conflits gérés :** - `local-newer` : Votre version est plus récente - `remote-newer` : La version reçue est plus récente - `local-deleted` : Vous avez supprimé cette note localement - `remote-deleted` : La note a été supprimée sur l'appareil de l'expéditeur - `remote-restored` : La note supprimée précédemment a été restaurée ## Résolution des problèmes ### Problèmes courants et solutions #### ❌ "Bibliothèque PeerJS non chargée" **Cause** : Bloquage du réseau par le CDN de PeerJS ou le serveur de signalisation **Solutions :** 1. Vérifier la connexion à internet 2. Vérifier que le pare-feu permet les connexions WebRTC 3. Essayer un réseau alternatif ( hotspot mobile ) 4. Assurer que le navigateur prend en charge WebRTC #### ❌ "Délai de connexion" **Cause** : NAT/Firewall empêchant la connexion directe **Solutions :** 1. Les deux appareils étant sur le même réseau aide 2. Désactiver VPN temporairement 3. Vérifier les paramètres WebRTC du routeur 4. Utiliser le code QR pour les connexions mobiles #### ❌ "Déchiffrement échoué" **Cause** : Mot de passe incorrect ou transfert corrompu **Solutions :** 1. Vérifier que le mot de passe correspond exactement (case-sensitive) 2. Demander un nouveau lien de partage à l'expéditeur 3. Assurer une connexion stable pendant le transfert 4. Essayer des tailles de lot plus petites #### ❌ Erreur "Synchronisation en cours" **Cause** : Plusieurs tentatives de synchronisation simultanées **Solutions :** 1. Attendre que la synchronisation en cours soit terminée 2. Fermer d'autres fenêtres/tab Noterich 3. Refresher la page et essayer à nouveau 4. Effacer la cache du navigateur si le problème persiste ### Indicateurs de statut de connexion | Statut | Signification | Action | |--------|---------|--------| | 🔵 En cours de connexion | Établissement de connexion peer | Attendre 5-10 secondes | | 🟡 Comparaison | Analyse des différences de notes | Processus normal | | 🟠 Attente du utilisateur | Mot de passe ou confirmation nécessaire | Vérifier les dialogues modaux | | 🟢 Application | Importation des notes dans la base de données | Ne pas fermer la fenêtre | | ✅ Success | Synchronisation réussie | Prêts à utiliser les notes | | 🔴 Erreur | Connexion ou transfert échoué | Vérifier les problèmes de résolution | ## Bonnes pratiques de sécurité ### Protéger vos données Bien que la synchronisation P2P soit intrinsèquement sécurisée, suivez ces directives : 1. **Utilisez des mots de passe forts** - Au moins 8 caractères (recommandés 12+) - Mélange majuscules, minuscules, chiffres, symboles - Ne réutilisez jamais de mots de passe d'autres services 2. **Vérifier les destinataires** - Partagez uniquement les liens avec des appareils de confiance - Utilisez des codes QR pour les transferts à proximité physique - Évitez de partager des liens dans des canaux publics 3. **Surveiller les connexions actives** - Vérifier les pairs connectés pendant la synchronisation - Déconnecter après transfert réussi - Révoquer les liens partagés si compromis 4. **Backups réguliers** - Exportez régulièrement les notes importantes - Stockez les backups dans un endroit sécurisé - Testez régulièrement les procédures de restauration ### Comprendre les limites du chiffrement **Ce qui est chiffré :** - ✅ Contenu de la note (texte, formatage, métadonnées) - ✅ Attachés et médias intégrés - ✅ Structure de la base de données pendant le transfert **Ce qui n'est pas chiffré :** - ⚠️ Métadonnées de connexion (temps, taille des données) - ⚠️ Adresses IP (visibles au serveur de signalisation) - ⚠️ Identifiants d'appareils (pour le routage de la connexion) ## Conseils de performance ### Optimiser la vitesse de synchronisation 1. **Conditions de réseau** - Même réseau local = transferts les plus rapides - Wi-Fi 5GHz préféré à 2.4GHz - Ethernet câblé pour les appareils de bureau 2. **Taille des lots** - Transferts importants : Diviser en lots plus petits - Surveiller l'indicateur de progression - Annuler et essayer à nouveau si bloqué 3. **Performance du navigateur** - Maintenir la fenêtre de Noterich active pendant la synchronisation - Fermer des fenêtres de navigateur inutiles - Mettre à jour à la dernière version du navigateur 4. **Ressources de l'appareil** - Assurer suffisamment d'espace de stockage - Fermer des applications consommatrices de mémoire - Redémarrer le navigateur si la synchronisation ralentit ### Gestion de la mémoire Noterich implémente une gestion intelligente des lots pour éviter les bloquements du navigateur : ```javascript // Traitement asynchrone des lots avec setTimeout async function asyncBatchProcessor(items, processor, batchSize = 10) { // Traitement des items par lots de 10 // Donne le contrôle toutes les 10ms pour garder la UI réactive // Évite le blocage du thread principal pendant les importations importantes } ``` **Recommandations :** - Limiter les transferts individuels à 100 notes maximum - Attendre 30 secondes entre de grands lots de synchronisation - Effacer la cache du navigateur périodiquement ## Questions fréquentes ### Q : Puis-je synchroniser plus de deux appareils ? **A : Oui ! Initiez des sessions P2P séparées pour chaque paire d'appareils. Pour les workflows multi-appareils : 1. Synchroniser Appareil A → Appareil B 2. Puis synchroniser Appareil B → Appareil C 3. Ou utiliser Appareil A comme hub central pour tous les autres** ### Q : La synchronisation P2P fonctionne hors ligne ? **A : La P2P nécessite une connexion internet initiale pour le handshake du serveur de signalisation. Après l'établissement de la connexion : - ✅ Les transferts sur réseau local fonctionnent sans internet - ✅ Les transferts de données se font directement entre appareils - ❌ La connexion initiale nécessite l'accès au serveur de signalisation** ### Q : Que se passe-t-il si la synchronisation est interrompue ? **A : Noterich gère les interruptions de manière efficace : - Les notes partiellement transférées sont éliminées - Aucune donnée corrompue entre dans votre base de données - Il suffit de redémarrer le processus de synchronisation - Les notes déjà synchronisées restent intactes** ### Q : Puis-je synchroniser avec une instance Noterich d'autre personne ? **A : Absolument ! La synchronisation P2P fonctionne entre tous les utilisateurs Noterich : - Partager des notes individuelles avec des collaborateurs - Pas de lien entre les comptes nécessaire - Chaque transfert est indépendant et sécurisé - Parfait pour partager des notes une fois** ### Q : Y a-t-il une limite de taille des fichiers ? **A : Les limites pratiques dépendent de : - La capacité de la mémoire du navigateur - La stabilité du réseau - Récompense maximale : 50MB par session - Des transferts plus importants : Diviser en plusieurs lots** ### Q : Combien de temps les liens de partage sont-ils valables ? **A : Les liens de partage sont basés sur la session : - Valeurs pendant que la fenêtre de l'expéditeur reste ouverte - Expires lorsque l'expéditeur ferme la fenêtre/feuille de navigateur - Utilisation unique pour sécurité - Générer un nouveau lien pour chaque session de transfert** ## Comparaison : P2P vs Synchronisation en cloud ```mermaid quadrantChart titre "Comparaison des méthodes de synchronisation" axe x "Moins de confidentialité" --> "Plus de confidentialité" axe y "Moins de contrôle" --> "Plus de contrôle" quadrant-1 "Noterich P2P" quadrant-2 "Éviter" quadrant-3 "Synchronisation en cloud traditionnelle" quadrant-4 "Services centralisés" "Noterich P2P": [0.9, 0.9] "Synchronisation en cloud traditionnelle": [0.3, 0.4] "Services centralisés": [0.4, 0.3] ``` | Feature | Noterich P2P | Synchronisation en cloud | |---------|--------------|--------------------------| | **Stockage des données** | Vos appareils uniquement | Serveurs tierces | | **Niveau de confidentialité** | Maximum | Dépend du fournisseur | | **Coût** | Gratuit | Souvent basé sur des abonnements | | **Complexité de la configuration** | Modéré | Simple | | **Vitesse de synchronisation** | Très rapide (direct) | Moyen (via serveur) | | **Accès hors ligne** | Complète | Limité | | **Lock-in avec le fournisseur** | Pas de | Haute | | **Portabilité des données** | Complète | Restreinte | ## Cas d'utilisation réels ### 📚 Base de connaissances personnelle Synchronisez votre système de gestion de connaissances personnelles (PKM) sur : - Bureau pour les travaux profonds - Laptop pour les sessions en café - Tablette pour la lecture et les annotations - Téléphone pour les captures rapides ### 👥 Collaboration en équipe Partagez vos notes de recherche de manière sécurisée au sein des équipes : - Pas besoin d'infrastructure informatique - Transferts chiffrés end-to-end - Historique d'audit via les logs de transfert - Conforme aux réglementations de confidentialité ### 🎓 Recherche académique Collaborez sur des articles et des revues de littérature : - Partagez des PDF annotés et des notes - Maintenir une historique des versions localement - Travailler entre appareils universitaires/personnels - Protéger la recherche non publiée ### 🏢 Déploiement professionnel Déployez Noterich dans des organisations soucieuses de la confidentialité : - Aucun données ne quitte le réseau de l'entreprise - Fonctionne derrière les pare-feux avec configuration - Intègre avec les politiques de sécurité existantes - Réduit les dépendances aux services cloud ## Détail technique (Pour les développeurs) ### Aperçu de l'architecture ```mermaid graph TB sous-réseau A[Appareil expéditeur] A1[Données de note] --> A2[Serialiser avec MessagePack] A2 --> A3[Chiffré ?] A3 -->|Oui| A4[Chiffrer AES-256-GCM] A3 -->|Non| A5[Binary brut] A4 --> A6[Chuck en 512KB] A5 --> A6 A6 --> A7[Canal WebRTC] end sous-réseau B[Appareil récepteur] B1[Canal WebRTC] --> B2[Réassembler les chunks] B2 --> B3[Chiffré ?] B3 -->|Oui| B4[Déchiffrer AES-256-GCM] B3 -->|Non| B5[Binary brut] B4 --> B6[Serialiser avec MessagePack] B5 --> B6 B6 --> B7[Stockage IndexedDB] B7 --> B8[Réconstruire l'index de recherche] end A7 -->|Synchronisation directe P2P| B1 style A4 fill:#FF5722,color:#fff style B4 fill:#FF5722,color:#fff style A7 fill:#4CAF50,color:#fff style B1 fill:#4CAF50,color:#fff ``` ### Principales détails de mise en œuvre **Configuration du serveur de signalisation :** ```javascript const peerConfig = { host: 'www.noterich.com', port: 443, secure: true, key: 'peerjs' } ``` **Procédure de chiffrement :** 1. Générer un selal random (16 bytes) 2. Générer un IV random (12 bytes) 3. Dériver la clé avec PBKDF2 (100k itérations) 4. Chiffrer avec AES-256-GCM 5. Paquet : `{encryptedBuffer, salt, iv}` **Protocole de transfert de données :** ```javascript // Types de messages gérés : { type: 'metadata', payload: {...} } // Liste de notes { type: 'note-chunk', payload: {...} } // Chunk de données de note { type: 'progress', payload: {...} } // Progrès de transfert { type: 'complete', payload: {...} } // Fin du transfert { type: 'cancel-sync-request' } // Demandé par l'utilisateur { type: 'error', message: '...' } // Rapport d'erreur ```