# Noterich P2P Sync Tutorial: Cross-Device without Cloud > **Synchronise je aantekeningen over devices veilig – geen cloudopslag nodig.** In een tijd waarin privacy belangrijker wordt dan ooit, biedt Noterich een innovatieve manier om aantekeningen te synchroniseren tussen verschillende devices. Onze **P2P (Peer-to-Peer) Sync**-functie maakt het mogelijk om aantekeningen over devices te delen zonder gebruik te maken van cloudservers. Je gegevens blijven van jou. ## Waarom P2P Sync kiezen? Traditionele aantekeningenappen bewaren je gegevens op centrale servers. Dit brengt risico’s met zich mee op het gebied van privacy, kosten voor abonnementen en afhankelijkheid van externe infrastructuur. Noterich volgt een andere weg: ```mermaid graph LR A[Je Device] <-->|Directe verbinding| B[Je andere Device] C[Cloud Server] -.->|Niet nodig| A C -.->|Niet nodig| B style A fill:#4CAF50,color:#fff style B fill:#4CAF50,color:#fff style C fill:#9E9E9E,color:#fff,stroke-dasharray: 5 5 ``` ### Belangrijkste voordelen - **🔒 Privacy als eerste:** Je aantekeningen raken nooit externe servers aan - **⚡ Snel en direct:** Devices communiceren direct voor snelle synchronisatie - **💰 Geen abonnementen:** Gratis P2P synchronisatie zonder premium levels - **🌐 Werkt overal:** Synchronisatie via lokale netwerk of internet - **📱 Cross-platform:** Werkt tussen desktop, laptop, tablet en mobiele apparaten ## Hoe P2P Sync werkt Noterich gebruikt **WebRTC-technologie** in combinatie met **PeerJS** om directe verbindingen tussen devices tot stand te brengen. Wanneer je een synchronisatie begint: ```mermaid sequenceDiagram participant D1 als Device A (Sender) participant S als Signaling Server participant D2 als Device B (Receiver) D1->>S: Vraag om verbindings-ID S-->>D1: Genereer ruimte-ID D1->>D2: Delen van verbindings-link (QR/URL) D2->>S: Verbinden met ruimte-ID S-->>D2: Stellen van peerverbinding D1->>D2: Versleutelen en verzenden van aantekeningen D2->>D2: Ontcijferen en importeren van aantekeningen Note over D1,D2: Direct versleutelde overdracht<br/>Geen gegevens op server opgeslagen ``` ### De technologie achter de schermen De P2P-implementatie van Noterich maakt gebruik van: 1. **PeerJS Bibliotheek:** Handelt met de complexiteit van WebRTC voor communicatie tussen browsers 2. **AES-GCM Versleuteling:** Militair niveau versleuteling voor je aantekeningengegevens 3. **PBKDF2 Key Derivation:** Veilige versleuteling op basis van wachtwoord 4. **MessagePack Serialisatie:** Efficiënte binairgegevenscodering voor snelle overdrachten 5. **IndexedDB Opslag:** Lokale database voor offline toegang ## Beginnen met P2P Sync ### Voorwaarden Voor je kunt beginnen, moet je ervoor zorgen dat je: - ✅ Noterich is geïnstalleerd op beide devices - ✅ Beide devices zijn verbonden met internet (of dezelfde lokale netwerk) - ✅ Een moderne webbrowser (Chrome, Firefox, Edge, Safari) ### Stap 1: Starten van het delen vanuit de brondevice 1. Open de aantekening die je wilt delen in Noterich 2. Klik op de **Delen**-knop in de toolbalk 3. Kies de **"P2P Delen"** optie 4. (Optioneel) Stel een wachtwoord in voor extra beveiliging - Wachtwoorden moeten minimaal 8 tekens tellen - Gebruikt AES-256-GCM versleuteling 5. Wacht tot de P2P-server is geïnitialiseerd ```mermaid graph TD A[Open Aantekening] --> B[Klik op Delen Knop] B --> C[Kies P2P Delen] C --> D{Set Wachtwoord?} D -->|Ja| E[Invullen Wachtwoord ≥8 tekens] D -->|Nee| F[Overstappen op Versleuteling] E --> G[Initiëren P2P Server] F --> G G --> H[Genereren van Delen Link & QR Code] ``` ### Stap 2: Delen van de verbindingslink Zodra de P2P-server is gestart, genereert Noterich: - **Een unieke delbare link** met verbindingsparameters - **Een QR code** voor snel scannen op mobiele apparaten De link heeft de volgende vorm: ``` https://noterich.com/#dbshare=<infoHash>&server=<signaling-server> ``` **Delingsmethoden:** | Methode | Beste voor | Hoe te doen | |--------|----------|--------| | 🔗 Kopieer link | E-mail, messaging apps | Klik op "Kopieer link" | | 📱 QR code | Mobiele apparaten | Scannen met camera van apparaat | | 📧 E-mail | Verre medewerkers | Plaats link in e-mail | ### Stap 3: Ontvangen op de doeldevice Op de ontvangende device: 1. **Open de delenlink** - Klik rechtstreeks op de link, of - Scannen van het QR code met je mobiele apparaat 2. **Bekijk de ontvangen aantekeningen** - Bekijk titels en metadata van de aantekeningen - Controleer de informatie van de afzender 3. **Vul het wachtwoord in** (als versleuteld) - Voer het wachtwoord in die door de afzender is gegeven - De gegevens worden lokaal ontcijferd op je apparaat 4. **Kies de bestemmingswerkplek** - Kies een bestaande werkplek, of - Maak een nieuwe werkplek voor geïmporteerde aantekeningen 5. **Bevestigen van import** - De aantekeningen worden ontcijferd en opgeslagen in IndexedDB - De zoekindex wordt automatisch opnieuw gecreëerd ```mermaid graph TD A[Open Link] --> B[Verbinden met Sender] B --> C{Versleuteld?} C -->|Ja| D[Vul Wachtwoord] C -->|Nee| E[Ontvangen Metadata] D --> E E --> F[Bekijk aantekeningen] F --> G[Kies Werkplek] G --> H[Import & Index] H --> I[Synchronisatie voltooid!] style I fill:#4CAF50,color:#fff ``` ## Geavanceerde functies ### Versleutelde overdrachten Voor gevoelige aantekeningen biedt Noterich optioneel end-to-end versleuteling: **Versleutelingsproces:** ```javascript // Wachtwoord → Versleutelingssleutel (PBKDF2) password + salt → deriveKey() → AES-256-GCM sleutel // Aantekeningengegevens → Versleutelde buffer noteData + key + iv → encrypt() → encryptedBuffer // Overdrachtspakket { encryptedBuffer: ArrayBuffer, salt: Uint8Array, // Voor sleutelontwikkeling iv: Uint8Array // Initiatierivue } ``` **Beveiligingsfuncties:** - 🔐 100.000 PBKDF2 iteraties voor sleutelontwikkeling - 🔐 Willekeurige salt en IV voor elke overdracht - 🔐 AES-256-GCM geauthenticeerde versleuteling - 🔐 Wachtwoord wordt nooit overgedragen – alleen lokaal gebruikt ### Batch-aantekeningen synchronisatie Overdragen meerdere aantekeningen efficiënt: 1. Gebruik **Database Transfer** vanuit de instellingen 2. Kies **"P2P Sync"** modus 3. Kies aantekeningen om te synchroniseren 4. De ontvanger krijgt een batchpreview met keuzeopties **Prestatieverbetering:** - Aantekeningen worden in groepen overgedragen (512KB per groep) - Non-blocking async verwerking voorkomt UI-verstoring - Progress trackings met byte-niveau nauwkeurigheid - Kan op elk moment worden stopgezet zonder dat gegevens worden beschadigd ### Conflicten oplossen Wanneer aantekeningen op beide devices worden gesynchroniseerd: ```mermaid graph TD A[Detect conflikten] --> B{Vergelijk tijdstippen} B -->|Lokale nieuwer| C[Houden aan lokale versie] B -->|Remote nieuwer| D[Show conflikten dialoog] D --> E[Kies versie] E --> F[Lokale] E --> G[Remote] E --> H[Merge handmatig] B -->|Beide verwijderd| I[Overstappen] style C fill:#2196F3,color:#fff style F fill:#2196F3,color:#fff style G fill:#4CAF50,color:#fff ``` **Gebeide conflikten:** - `lokale-nieuwer`: Je versie is recenter - `remote-nieuwer`: De komende versie is nieuwer - `lokale-verwijderd`: Je hebt deze aantekening lokaal verwijderd - `remote-verwijderd`: Aantekening is verwijderd op de apparaat van de afzender - `remote-hersteld`: Eerder verwijderde aantekening is hersteld ## Oplossingen voor problemen ### Veelvoorkomende problemen & oplossingen #### ❌ "PeerJS bibliotheek niet geladen" **Oorzaak**: Netwerkblokkering van PeerJS CDN of signaling server **Oplossingen:** 1. Controleer de internetverbinding 2. Controleer of de firewall WebRTC-verbindingen toelaat 3. Probeer een alternatieve netwerk (mobiele hotspot) 4. Zorg dat de browser WebRTC ondersteunt #### ❌ "Connectiviteitstijdout" **Oorzaak**: NAT/firewall belemmert directe verbinding **Oplossingen:** 1. Beide devices moeten op dezelfde netwerkverbinding staan 2. Schakel VPN tijdelijk uit 3. Controleer routers WebRTC-instellingen 4. Gebruik QR code voor mobiele verbindingen #### ❌ "Versleuteling mislukt" **Oorzaak**: Foutief wachtwoord of corrupte overdracht **Oplossingen:** 1. Controleer of het wachtwoord exact overeenkomt (lettergreepgevoelig) 2. Vraag een nieuwe delenlink aan van de afzender 3. Zorg voor een stabiele verbinding tijdens de overdracht 4. Probeer kleinere batchgroottes #### ❌ "Synchronisatie in voltooiing" fout **Oorzaak**: Meerdere synchronisatiepogingen tegelijk **Oplossingen:** 1. Wacht tot de huidige synchronisatie is voltooid 2. Sluit andere Noterich tabs/windows 3. Verwijder de pagina en probeer opnieuw 4. Verwijder de browsercache als het probleem blijft ### Statusindicatoren van de verbinding | Status | Betekenis | Actie | |--------|---------|--------| | 🔵 Verbinding aan het maken | Verbinding wordt gecreëerd | Wacht 5-10 seconden | | 🟡 Vergelijking uitvoeren | Analyseren van verschillen in aantekeningen | Normale procedure | | 🟠 Wacht op gebruiker | Wachtwoord of bevestiging vereist | Kijk naar het dialoogvenster | | 🟢 Overdracht uitvoeren | Aantekeningen worden in de database geïmporteerd | Verwijder geen tab | | ✅ Succesvol | Synchronisatie is voltooid | Klaar om te gebruiken | | 🔴 Fout | Verbinding of overdracht mislukt | Controleer de oplossingen | ## Beveiligingsbest practices ### Je gegevens beschermen Hoewel P2P-synchronisatie inherent veilig is, volg dan deze richtlijnen: 1. **Gebruik sterke wachtwoorden** - Minimaal 8 tekens (12+ wordt aanbevolen) - Mix hoofdletters, kleine letters, cijfers en symbolen - Gebruik nooit wachtwoorden van andere diensten 2. **Controleer de ontvangers** - Delen alleen van links met betrouwbare devices - Gebruik QR codes voor overdrachten op afstand - Vermijd het delen van links in openbare kanalen 3. **Houd een oog op actieve verbindingen** - Controleer verbonden peers tijdens synchronisatie - Verbreed de verbinding na succesvolle overdracht - Verwijder de delenlink als deze is beveiligd 4. **Regelmatig back-ups maken** - Exporteer belangrijke aantekeningen regelmatig - Bewaar back-ups op een veilige plek - Test de herstelprocedure regelmatig ### Inzicht in beperkingen van versleuteling **Wat is versleuteld:** - ✅ Inhoud van de aantekening (tekst, vormgeving, metadata) - ✅ Bijlagen en ingebedde media - ✅ Databasestructuur tijdens overdracht **Wat niet is versleuteld:** - ⚠️ Verbinding metadata (tijdstippen, grootte van gegevens) - ⚠️ IP-adressen (zichtbaar voor signaling server) - ⚠️ Device-identificaties (voor routing van verbindingen) ## Prestatie tips ### Optimeer de synchronisatiesnelheid 1. **Netwerkomstandigheden** - Dezelfde lokale netwerk = snelste overdrachten - 5GHz WiFi wordt aanbevolen boven 2.4GHz - Wired Ethernet voor desktopapparaten 2. **Batchgroottes** - Grote overdrachten: Verdeel in kleinere batches - Houd het progressie-indicatie in de gaten - Stopt en probeer opnieuw als het vertraging heeft 3. **Browserprestaties** - Houd de Noterich-tab actief tijdens synchronisatie - Sluit onnodige browsertabs - Update naar de nieuwste browserversie 4. **Apparatenbronnen** - Zorg voor voldoende opslagruimte - Sluit memory-intensieve applicaties - Herstart de browser als de synchronisatie vertraagt ## Memorybeheer Noterich implementeert slimme batchverwerking om browsercrash te voorkomen: ```javascript // Asynchrone batchverwerking met setTimeout async function asyncBatchProcessor(items, processor, batchSize = 10) { // Verwerkt items in batches van 10 // Geeft controle over 10ms om de UI responsief te houden // Voorkomt dat de hoofdthread wordt geblokkeerd tijdens grote importen } ``` **Aanbevolen:** - Beperk het aantal overdrachten tot maximaal 100 aantekeningen - Wacht 30 seconden tussen grote batchoverdrachten - Verwijder regelmatig de browsercache ## Frequentie ### Q: Kan ik meer dan twee devices synchroniseren? **A:** Ja! Start aparte P2P-sessies voor elke device-paar. Voor meerdere-device workflows: 1. Synchroniseer Device A → Device B 2. Vervolgens synchroniseer Device B → Device C 3. Of gebruik Device A als centrale hub voor alle andere ### Q: Werkt P2P sync offline? **A:** P2P vereist een initiale internetverbinding voor het handshake van de signaling server. Na het opzetten van de verbinding: - ✅ Lokale netwerkoverdrachten werken zonder internet - ✅ Gegevens worden direct overgedragen tussen devices - ❌ Eerste verbinding vereist toegang tot signaling server ### Q: Wat gebeurt er als de synchronisatie wordt onderbroken? **A:** Noterich handelt conflikten elegant: - Gedeeltelijke overdrachten worden weggestort - Geen corrupte gegevens worden in de database opgenomen - Probeer gewoon de synchronisatie te starten opnieuw - Al geïmporteerde aantekeningen blijven onaangetast ### Q: Kan ik synchroniseren met een andere Noterich-instance? **A:** Absoluut! P2P-synchronisatie werkt tussen alle Noterich gebruikers: - Delen van individuele aantekeningen met medewerkers - Geen accountverbindingsvereisten nodig - Elke overdracht is onafhankelijk en veilig - Perfect voor éénmalige aantekeningendeling ### Q: Is er een filegroottebeperking? **A:** Praktische beperkingen hangen af van: - Browsermemoriabeschikking - Netwerkstabiliteit - Aanbevolen maximum: 50MB per sessie - Grotere overdrachten: Verdeel in meerdere batches ### Q: Hoe lang blijven de delenlinks geldig? **A:** Delenlinks zijn per sessie: - Geldend tijdens het openen van de Noterich-tab - Verdwijnen wanneer de tab/browser wordt gesloten - Eénmalige gebruik wordt aanbevolen voor beveiliging - Genereer een nieuwe link voor elke overdrachtsessie ## Vergelijking: P2P vs Cloud Sync ```mermaid quadrantChart title "Synchronisatiemethode Vergelijking" x-axis "Lager privacy" --> "Hoger privacy" y-axis "Lager controle" --> "Hoger controle" quadrant-1 "Noterich P2P" quadrant-2 "Vermijd" quadrant-3 "Traditionele Cloud" quadrant-4 "Gecentraliseerde diensten" "Noterich P2P": [0.9, 0.9] "Traditionele Cloud": [0.3, 0.4] "Gecentraliseerde diensten": [0.4, 0.3] ``` | Feature | Noterich P2P | Cloud Sync | |---------|--------------|------------| | **Gegevensopslag** | Je devices alleen | Externere servers | | **Privacyniveau** | Maximum | Afhankelijk van provider | | **Kosten** | Gratis | Vaak betaald | | **Instructiecomplexiteit** | Gemiddeld | Eenvoudig | | **Snelheid** | Zeer snel (direct) | Gemiddeld (via server) | | **Offline-toegang** | Volledig | Beperkt | | **Vingerluik-aanpassing** | Geen | Hoog | | **Dataleerbaarheid** | Complete | Beperkt | ## Praktische toepassingen ### 📚 Persoonlijke kennisbank Synchroniseer je PKM (Persoonlijke Kennisbeheer) systeem over: - Desktop voor diep werk - Laptop voor sessies in cafés - Tablet voor lezen en annotaties - Telefoon voor snelle notities ### 👥 Teamcollaboratie Delen van onderzoeksnotities veilig binnen teams: - Geen IT-infrastructuur nodig - End-to-end versleutelde overdrachten - Auditverleden via overdrachtslogs - Voldoen aan privacyregels ### 🎓 Academisch onderzoek Samenwerken aan artikelen en literatuuroverzichten: - Delen van geannoteerde PDF’s en notities - Bewaren van versiehistorie lokaal - Werken over universiteits/ persoonlijke apparaten - Beschermen van ongepubliceerde onderzoek ### 🏢 Bedrijfsimplementatie Implementeer Noterich in bedrijven met gevoelige gegevens: - Geen gegevens verlopen via het bedrijfsnetwerk - Werkt achter firewalls met configuratie - Geïntegreerd met bestaande beveiligingsbeleid - Verminder afhankelijkheid van clouddiensten ## Technisch inzicht (Voor ontwikkelaars) ### Overzicht van architectuur ```mermaid graph TB subgraph Sender["Sender Apparaat"] A1[Notitiegegevens] --> A2[MessagePack Serialiseren] A2 --> A3{Versleuteld?} A3 -->|Ja| A4[AES-256-GCM Versleutelen] A3 -->|Nee| A5[Alleen binair] A4 --> A6[Chunk in 512KB] A5 --> A6 A6 --> A7[WebRTC Data Channel] end subgraph Receiver["Ontvangende Apparaat"] B1[WebRTC Data Channel] --> B2[Reassemble Chunks] B2 --> B3{Versleuteld?} B3 -->|Ja| B4[AES-256-GCM Ontcijferen] B3 -->|Nee| B5[Alleen binair] B4 --> B6[MessagePack Deserialiseren] B5 --> B6 B6 --> B7[IndexedDB Opslag] B7 --> B8[Index herstellen] end A7 -.->|Direct 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 ```