# Guida all'uso di Noterich P2P Sync: Sincronizzazione tra dispositivi senza cloud > **Sincronizza le tue note tra dispositivi in modo sicuro — senza bisogno di storage cloud.** In un’epoca in cui la privacy dei dati è più importante che mai, Noterich offre un metodo rivoluzionario per la sincronizzazione tra dispositivi. La nostra funzione **P2P (Peer-to-Peer) Sync** permette una condivisione delle note tra i dispositivi senza dover affidarsi a server cloud. I tuoi dati rimangono tuoi — sempre. ## Perché scegliere P2P Sync? Le app tradizionali per la gestione delle note memorizzano i dati su server centralizzati. Questo crea rischi per la privacy, costi di abbonamento e dipendenza da infrastrutture esterne. Noterich prende un percorso diverso: ```mermaid graph LR A[Dispositivo Tuo] <-->|Connessione Diretta| B[Il tuo altro dispositivo] C[Server Cloud] -.->|Non necessario| A C -.->|Non necessario| B style A fill:#4CAF50,color:#fff style B fill:#4CAF50,color:#fff style C fill:#9E9E9E,color:#fff,stroke-dasharray: 5 5 ``` ### Benefici principali - **🔒 Prima della privacy**: Le tue note non toccano mai server esteri - **⚡ Veloce e diretto**: I dispositivi comunicano direttamente per una sincronizzazione più rapida - **💰 Nessun abbonamento**: Sincronizzazione P2P gratuita, senza livelli premium - **🌐 Funziona ovunque**: Sincronizzazione tramite rete locale o internet - **📱 Cross-Platform**: Funziona tra desktop, laptop, tablet e mobile ## Come funziona P2P Sync Noterich utilizza la **tecnologia WebRTC** combinata con **PeerJS** per stabilire connessioni dirette tra i dispositivi. Quando inizi a sincronizzare: ```mermaid sequenceDiagram participant D1 as Dispositivo A (Invia) participant S as Server di Segnale participant D2 as Dispositivo B (Ricevitore) D1->>S: Richiesta connessione ID S-->>D1: Genera ID della stanza D1->>D2: Condividi link di connessione (QR/URL) D2->>S: Connetti usando ID della stanza S-->>D2: Stabilisci connessione peer D1->>D2: Cifra e invia note D2->>D2: Decifra e importa note Note over D1,D2: Trasferimento cifrato diretto<br/>Nessun dato memorizzato sul server ``` ### La tecnologia dietro le quinte L'implementazione P2P di Noterich utilizza: 1. **Biblioteca PeerJS**: Gestisce la complessità di WebRTC per la comunicazione tra browser 2. **Cifratura AES-GCM**: Cifratura di livello militare per i dati delle note 3. **Generazione di Chiave PBKDF2**: Generazione sicura di chiavi di cifratura basate su password 4. **Serializzazione MessagePack**: Codifica efficiente dei dati binari per trasferimenti veloci 5. **Storage IndexedDB**: Database locale per accesso offline ## Come iniziare con P2P Sync ### Prerequisiti Prima di iniziare, assicurati di avere: - ✅ Noterich installato su entrambi i dispositivi - ✅ Entrambi i dispositivi connessi a internet (o nella stessa rete locale) - ✅ Un browser web moderno (Chrome, Firefox, Edge, Safari) ### Passo 1: Iniziate la condivisione dal dispositivo di partenza 1. Apri la nota che desiderate condividere in Noterich 2. Cliccate sul **Share** nel pannello delle opzioni 3. Selezionate l'opzione **"P2P Share"** 4. (Opcionale) Impostate una password per maggiore sicurezza - Le password devono avere almeno 8 caratteri - Utilizza cifratura AES-256-GCM 5. Aspettate che il server P2P si inizii ```mermaid graph TD A[Apri Nota] --> B[Clicca sul pulsante Share] B --> C[Seleziona P2P Share] C --> D{Imposta password?} D -->|Sì| E[Inserisci password ≥8 caratteri] D -->|No| F[Ignora la cifratura] E --> G[Inizializza il server P2P] F --> G G --> H[Genera link di condivisione e codice QR] ``` ### Passo 2: Condividi il link di connessione Una volta che il server P2P è iniziato, Noterich genera: - **Un link di condivisione unico** contenente parametri di connessione - **Un codice QR** per una scansione rapida sul mobile Il formato del link è come segue: ``` https://noterich.com/#dbshare=<infoHash>&server=<signaling-server> ``` **Metodi di condivisione:** | Metodo | Migliore per | Come farlo | |--------|----------|--------| | 🔗 Copia il link | Email, app di messaggistica | Clicca sul pulsante "Copia link" | | 📱 Codice QR | Dispositivi mobili | Scansiona con la fotocamera del dispositivo | | 📧 Email | Colaboratori remoti | Inserisci il link nell'email | ### Passo 3: Ricevi sul dispositivo di destinazione Su il dispositivo di destinazione: 1. **Apri il link di condivisione** - Clicca direttamente sul link, O - Scansiona il codice QR con il tuo dispositivo mobile 2. **Revisa le note in arrivo** - Prevedi i titoli e i metadati delle note - Verifica le informazioni dell'inviatore 3. **Inserisci la password** (se cifrata) - Inserisci la password fornita dall'inviatore - I dati vengono decifrati localmente sul tuo dispositivo 4. **Seleziona lo spazio di lavoro di destinazione** - Scegli uno spazio di lavoro esistente, O - Crea uno spazio di lavoro nuovo per le note importate 5. **Conferma l'importazione** - Le note vengono decifrate e salvate in IndexedDB - L'indice di ricerca viene ricostruito automaticamente ```mermaid graph TD A[Apri Link] --> B[Connetti con l'Invia] B --> C{Cifrato?} C -->|Sì| D[Inserisci la password] C -->|No| E[ ricevi Metadati] D --> E E --> F[Prevedi le Note] F --> G[Seleziona Spazio di Lavoro] G --> H[Importa e Indexa] H --> I[Sincronizzazione completata!] style I fill:#4CAF50,color:#fff ``` ## Funzionalità avanzate ### Trasferimenti cifrati Per le note sensibili, Noterich offre una cifratura end-to-end opzionale: **Processo di cifratura:** ```javascript // Password → Chiave di cifratura (PBKDF2) password + salt → deriveKey() → Chiave AES-256-GCM // Dati della nota → Buffer cifrato noteData + chiave + iv → cifra() → encryptedBuffer // Pacchetto di trasferimento { encryptedBuffer: ArrayBuffer, salt: Uint8Array, // Per la generazione della chiave iv: Uint8Array // Vettore di inizializzazione } ``` **Caratteristiche di sicurezza:** - 🔐 100.000 iterazioni PBKDF2 per la generazione della chiave - 🔐 Salso e IV casuali per ogni trasferimento - 🔐 Cifratura autenticata AES-256-GCM - 🔐 La password non viene mai trasmessa — utilizzata solo localmente ### Sincronizzazione di batch Trasferisci più note in modo efficiente: 1. Accedi alla **trasferimento di database** dalle impostazioni 2. Seleziona il modello **"P2P Sync"** 3. Scegli le note da sincronizzare 4. Il ricevitore riceve una preview in batch con opzioni di selezione **Optimizzazione delle prestazioni:** - Le note vengono trasferite in parti (512KB ciascuna) - Processo asincrono senza blocchi previene il blocco dell'UI - Monitoraggio del progresso con precisione byte - Cancella in qualsiasi momento senza danni ai dati ### Risoluzione dei conflitti Quando si sincronizzano note presenti su entrambi i dispositivi: ```mermaid graph TD A[Riconoscere il conflitto] --> B{Confrontare i tempi} B -->|Più recente locale| C[Conserva la versione locale] B -->|Più recente remoto| D[Mostra dialogo di conflitto] D --> E[Seleziona la versione] E --> F[Locale] E --> G[Remoto] E --> H[Unisci manualmente] B -->|Entrambe eliminate| I[Oggetta] style C fill:#2196F3,color:#fff style F fill:#2196F3,color:#fff style G fill:#4CAF50,color:#fff ``` **Tipi di conflitto gestiti:** - `local-newer`: La tua versione è più recente - `remote-newer`: La versione in arrivo è più recente - `local-deleted`: Hai cancellato questa nota localmente - `remote-deleted`: La nota è stata cancellata sul dispositivo dell'inviatore - `remote-restored`: La nota cancellata in precedenza è stata ripristinata ## Risoluzione dei problemi ### Problemi comuni e soluzioni #### ❌ "Biblioteca PeerJS non caricata" **Causa**: Blocco della rete da parte del CDN di PeerJS o del server di segnale **Soluzioni:** 1. Verifica la connessione internet 2. Verifica che il firewall permetta le connessioni WebRTC 3. Prova una rete alternativa (hotspot mobile) 4. Assicura che il browser supporti WebRTC #### ❌ "Tempo di connessione timeout" **Causa**: NAT/Firewall che impediscono la connessione diretta **Soluzioni:** 1. Entrambi i dispositivi devono essere sulla stessa rete 2. Disattiva temporaneamente la VPN 3. Verifica le impostazioni WebRTC del router 4. Utilizza il codice QR per le connessioni mobili #### ❌ "Cifratura fallita" **Causa**: Parola d'ordine errata o trasferimento danneggiato **Soluzioni:** 1. Verifica che la parola d'ordine corrisponda esattamente (con riguardo alle lettere) 2. Richiedi un nuovo link di condivisione dall'inviatore 3. Assicura una connessione stabile durante il trasferimento 4. Prova dimensioni di trasferimento più piccole #### ❌ Errore "Sincronizzazione in corso" **Causa**: Più tentativi di sincronizzazione contemporanei **Soluzioni:** 1. Aspetti che la sincronizzazione attuale sia completata 2. Chiudi altre finestre/window di Noterich 3. Aggiorna la pagina e prova di nuovo 4. Pulisci la cache del browser se il problema persiste ### Indicazioni dello stato di connessione | Stato | Significato | Azione | |--------|----------|--------| | 🔵 Connessione in corso | Stabilisce connessione peer | Aspetti 5-10 secondi | | 🟡 Analisi dei conflitti | Analizza le differenze tra le note | Processo normale | | 🟠 Bisogna attendere l'utente | Bisogna inserire la password o conferma | Verifica i dialoghi | | 🟢 Applicazione | Importa le note nel database | Non chiudere la finestra | | ✅ Completato | Sincronizzazione completata con successo | Pronti per usare le note | | 🔴 Errore | Connessione o trasferimento fallito | Verifica le soluzioni | ## Pratiche di sicurezza ### Proteggere i tuoi dati Anche se la sincronizzazione P2P è intrinsecamente sicura, segui questi consigli: 1. **Usa password forti** - Almeno 8 caratteri (consigliati 12+) - Mescola maiuscole, minuscole, numeri, simboli - Non riutilizza password da altre servizi 2. **Verifica i destinatari** - Condividi link solo con dispositivi affidabili - Utilizza codici QR per trasferimenti a distanza - Evita di pubblicare link in canali pubblici 3. **Monitora le connessioni attive** - Controlla i peer connessi durante la sincronizzazione - Disconnetti dopo la trasferimento riuscito - Revoca i link condivisi se compromessi 4. **Backup regolari** - Esporta regolarmente note importanti - Conserva i backup in un luogo sicuro - Testa regolarmente le procedure di ripristino ### Comprendere i limiti della cifratura **Cosa è cifrato:** - ✅ Contenuto della nota (testo, formattazione, metadati) - ✅ Allegati e media incorporati - ✅ Struttura del database durante il trasferimento **Cosa non è cifrato:** - ⚠️ Metadati di connessione (tempo, dimensioni dei dati) - ⚠️ Indirizzi IP (visibili al server di segnale) - ⚠️ Identificatori di dispositivo (per il routing della connessione) ## Consigli per le prestazioni ### Ottimizzare la velocità di sincronizzazione 1. **Condizioni della rete** - Stessa rete locale = trasferimenti più veloci - Wi-Fi 5GHz preferito rispetto a 2.4GHz - Ethernet cablato per dispositivi desktop 2. **Dimensioni dei batch** - Trasferimenti di grandi dimensioni: Dividili in batch più piccoli - Monitora l'indicatore di progresso - Cancella e prova di nuovo se blocchi 3. **Prestazioni del browser** - Mantieni aperta la finestra di Noterich durante la sincronizzazione - Chiudi finestre di browser inutili - Aggiorna alla versione più recente del browser 4. **Risorse del dispositivo** - Assicura che ci sia abbastanza spazio di archiviazione - Chiudi applicazioni che consumano molta memoria - Riavvia il browser se la sincronizzazione rallenta ### Gestione della memoria Noterich implementa un processo di batch intelligente per evitare crash del browser: ```javascript // Processo batch asincrono con setTimeout async function asyncBatchProcessor(items, processor, batchSize = 10) { // Processa i items in batch di 10 // Consegna il controllo ogni 10ms per mantenere la risposta del UI // Previene il blocco del thread principale durante importazioni grandi } ``` **Consigli:** - Limita i trasferimenti singoli a 100 note massimo - Aspetti 30 secondi tra grandi batch di sincronizzazione - Pulisci regolarmente la cache del browser ## Domande frequenti ### Q: Posso sincronizzare più di due dispositivi? **A:** Sì! Iniziate sessioni P2P separate per ogni coppia di dispositivi. Per workflow multi-dispositivo: 1. Sincronizza Dispositivo A → Dispositivo B 2. Poi sincronizza Dispositivo B → Dispositivo C 3. O utilizza Dispositivo A come hub centrale per tutti gli altri ### Q: La sincronizzazione P2P funziona offline? **A:** La P2P richiede una connessione internet iniziale per il handshake del server di segnale. Dopo l'instaurazione della connessione: - ✅ I trasferimenti su rete locale funzionano senza internet - ✅ I trasferimenti di dati avvengono direttamente tra dispositivi - ❌ La connessione iniziale richiede accesso al server di segnale ### Q: Cosa succede se la sincronizzazione viene interrotta? **A:** Noterich gestisce i conflitti in modo efficiente: - Le note parzialmente trasferite vengono eliminate - Nessun dato danneggiato entra nel tuo database - Basta riavviare il processo di sincronizzazione - Le note già sincronizzate rimangono invariate ### Q: Posso sincronizzare con un'altra istanza di Noterich? **A:** Assolutamente! La sincronizzazione P2P funziona tra qualsiasi utente Noterich: - Condividi note individuali con collaboratori - Non è necessario collegare account - Ogni trasferimento è indipendente e sicuro - Ideale per condividere note una sola volta ### Q: C'è un limite di dimensioni del file? **A:** I limiti pratici dipendono da: - Memoria del browser - Stabilità della rete - Consigliato max: 50MB per sessione - Trasferimenti più grandi: Divisi in più batch ### Q: Per quanto tempo rimane valido il link di condivisione? **A:** I link di condivisione sono basati sulla sessione: - Valide mentre la finestra di Noterich del mittente rimane aperta - Escono quando il mittente chiude la finestra/browser - Consigliato utilizzo unico per sicurezza - Genera un nuovo link per ogni sessione di trasferimento ## Confronto: P2P vs Sincronizzazione Cloud ```mermaid quadrantChart title "Confronto tra metodi di sincronizzazione" x-axis "Privacy inferiore" --> "Privacy superiore" y-axis "Controlli inferiori" --> "Controlli superiori" quadrant-1 "Noterich P2P" quadrant-2 "Evita" quadrant-3 "Sincronizzazione tradizionale cloud" quadrant-4 "Servizi centralizzati" "Noterich P2P": [0.9, 0.9] "Sincronizzazione cloud tradizionale": [0.3, 0.4] "Servizi centralizzati": [0.4, 0.3] ``` | Caratteristica | Noterich P2P | Sincronizzazione Cloud | |---------|--------------|-------------------------| | **Storage dei dati** | Solo sui dispositivi | Su server cloud | | **Livello di privacy** | Massimo | Dipende dal fornitore | | **Costo** | Gratuito | Spesso basato su abbonamento | | **Complessità di configurazione** | Moderata | Semplice | | **Velocità di sincronizzazione** | Molto veloce (diretta) | Media (via server) | | **Accesso offline** | Completo | Limitato | | **Legame con il fornitore** | Nessuno | Alto | | **Portabilità dei dati** | Completa | Limitata | ## Esempi di utilizzo nella pratica ### 📚 Base di conoscenza personale Sincronizza il tuo sistema di gestione della conoscenza personale (PKM) su: - Desktop per lavori profondi - Laptop per sessioni in bar - Tablet per lettura e annotazioni - Telefono per catture rapide ### 👥 Collaborazione di team Condividi in modo sicuro le note di ricerca all'interno dei team: - Nessuna infrastruttura IT necessaria - Trasferimenti end-to-end cifrati - Traccia delle attività tramite log di trasferimento - Adatta alle normative sulla privacy ### 🎓 Ricerca accademica Collabora su articoli e revisioni bibliografiche: - Condividi PDF annotati e note - Mantieni la cronologia delle versioni localmente - Lavora su dispositivi universitari/personali - Proteggi ricerche non ancora pubblicate ### 🏢 Implementazioni aziendali Implementa Noterich in organizzazioni attente alla privacy: - Nessun dato esce dalla rete aziendale - Funziona dietro firewall con configurazione - Integra con politiche di sicurezza esistenti - Riduce la dipendenza dai servizi cloud ## Approfondimento tecnico (Per sviluppatori) ### Panoramica architetturale ```mermaid graph TB subgraph Sender["Dispositivo mittente"] A1[Dati della nota] --> A2[Serializzazione MessagePack] A2 --> A3{Cifrato?} A3 -->|Sì| A4[Cifra con AES-256-GCM] A3 -->|No| A5[Binario semplificato] A4 --> A6[Chunk in 512KB] A5 --> A6 A6 --> A7[Canale WebRTC] end subgraph Receiver["Dispositivo ricevente"] B1[Canale WebRTC] --> B2[Ricombinare chunk] B2 --> B3{Cifrato?} B3 -->|Sì| B4[Cifra con AES-256-GCM] B3 -->|No| B5[Binario semplificato] B4 --> B6[Serializzazione MessagePack] B5 --> B6 B6 --> B7[Storage IndexedDB] B7 --> B8[Ricostruzione indice] end A7 -.->|Connessione diretta 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 ```