# Tutorial P2P Sync Noterich: Sinkronisasi Antar Perangkat Tanpa Cloud > **Sinkronisasi catatan Anda di berbagai perangkat dengan aman — tanpa perlu menggunakan cloud storage.** Di era ini, privasi data sangat penting, sehingga Noterich menawarkan pendekatan revolusioner untuk sinkronisasi antar perangkat. Fitur **P2P (Peer-to-Peer) Sync** kami memungkinkan berbagi catatan antar perangkat secara lancar tanpa perlu mengandalkan server cloud. Data Anda tetap menjadi milik Anda sendiri — selalu. ## Mengapa Memilih P2P Sync? Aplikasi pencatatan tradisional menyimpan data di server pusat. Hal ini menimbulkan risiko privasi, biaya berlangganan, dan ketergantungan pada infrastruktur pihak ketiga. Noterich menggunakan pendekatan yang berbeda: ```mermaid graph LR A[Perangkat Anda] <-->|Koneksi Langsung| B[Perangkat Anda yang Lain] C[Server Cloud] -.->|Tidak Diperlukan| A C -.->|Tidak Diperlukan| B style A fill:#4CAF50,color:#fff style B fill:#4CAF50,color:#fff style C fill:#9E9E9E,color:#fff,stroke-dasharray: 5 5 ``` ### Keuntungan Utama - **🔒 Privasi Pertama**: Catatan Anda tidak pernah bersentuhan dengan server pihak ketiga - **⚡ Cepat & Langsung**: Perangkat berkomunikasi secara langsung untuk sinkronisasi yang lebih cepat - **💰 Tanpa Langganan**: Sinkronisasi P2P gratis tanpa tiers premium - **🌐 Bekerja di mana saja**: Sinkronisasi melalui jaringan lokal atau internet - **📱 Platform Beragam**: Bekerja antara desktop, laptop, tablet, dan mobile ## Cara Kerja P2P Sync Noterich menggunakan **teknologi WebRTC** yang dikombinasikan dengan **PeerJS** untuk membentuk koneksi langsung antar perangkat. Ketika Anda memulai sinkronisasi: ```mermaid sequenceDiagram participant D1 as Perangkat A (Pengirim) participant S as Server Sinyal participant D2 as Perangkat B (Penerima) D1->>S: Meminta ID koneksi S-->>D1: Menggenerakan ID ruang D1->>D2: Berbagi tautan koneksi (QR/URL) D2->>S: Terhubung menggunakan ID ruang S-->>D2: Membentuk koneksi peer D1->>D2: Mengenkripsi & mengirim catatan D2->>D2: Mendekripsi & mengimpor catatan Note over D1,D2: Transfer terkripta secara langsung<br/>Tidak ada data yang disimpan di server ``` ### Teknologi di Balik Proses Ini Implementasi P2P Noterich menggunakan: 1. **Bibliotek PeerJS**: Menangani kompleksitas WebRTC untuk komunikasi antar browser 2. **Enkripsi AES-GCM**: Enkripsi tingkat militer untuk data catatan Anda 3. **Penghasilan Kunci PBKDF2**: Proses penghasilan kunci enkripsi berbasis kata sandi yang aman 4. **Serialisasi MessagePack**: Encodasi data biner yang efisien untuk transfer cepat 5. **Penyimpanan IndexedDB**: Database lokal untuk akses offline ## Memulai Penggunaan P2P Sync ### Persyaratan Awal Sebelum Anda memulai, pastikan Anda memiliki: - ✅ Noterich terinstal di kedua perangkat - ✅ Kedua perangkat terhubung ke internet (atau menggunakan jaringan lokal yang sama) - ✅ Browser web modern (Chrome, Firefox, Edge, Safari) ### Langkah 1: Memulai Berbagi dari Perangkat Sumber 1. Buka catatan yang ingin Anda bagikan di Noterich 2. Klik tombol **Bagikan** di toolbar 3. Pilih opsi **"P2P Bagikan"** 4. (Opsi) Atur kata sandi untuk keamanan tambahan - Kata sandi harus minimal 8 karakter - Menggunakan enkripsi AES-256-GCM 5. Tunggu server P2P diinisiasi ```mermaid graph TD A[Buka Catatan] --> B[Klik Tombol Bagikan] B --> C[Pilih P2P Bagikan] C --> D{Atur Kata Sandi?} D -->|Ya| E[Masukkan Kata Sandi ≥8 karakter] D -->|Tidak| F[Abaikan Enkripsi] E --> G[Inisiasi Server P2P] F --> G G --> H[Generelkan Tautan Bagikan & QR Code] ``` ### Langkah 2: Berbagi Tautan Koneksi Setelah server P2P diaktifkan, Noterich akan menggenerasikan: - **Tautan bagikan yang unik** yang berisi parameter koneksi - **QR code** untuk pemindaian cepat di perangkat mobile Format tautan terlihat seperti: ``` https://noterich.com/#dbshare=<infoHash>&server=<signaling-server> ``` **Metode Berbagi:** | Metode | Tersedia untuk | Cara Melakukannya | |--------|----------|--------| | 🔗 Menyalin Tautan | Email, aplikasi pesan | Klik tombol “Menyalin Tautan” | | 📱 QR Code | Perangkat mobile | Scan menggunakan kamera perangkat | | 📧 Email | Kolaborator jarak jauh | Tambahkan tautan ke email | ### Langkah 3: Terima di Perangkat Tujuan Di perangkat penerima: 1. **Buka tautan bagikan** - Klik tautan langsung, atau - Scan QR code dengan perangkat mobile 2. **Lihat catatan yang masuk** - Lihat judul dan metadata catatan - Periksa informasi pengirim 3. **Masukkan kata sandi** (jika dienkripsi) - Masukkan kata sandi yang diberikan oleh pengirim - Data akan mendekripsi di perangkat Anda 4. **Pilih workspace tujuan** - Pilih workspace yang sudah ada, atau - Buat workspace baru untuk catatan yang diimpor 5. **Konfirmasi impor** - Catatan akan dienkripsi dan disimpan ke IndexedDB - Indeks pencarian di rebuild secara otomatis ```mermaid graph TD A[Buka Tautan] --> B[Terhubung ke Pengirim] B --> C{Dienkripsi?} C -->|Ya| D[Masukkan Kata Sandi] C -->|Tidak| E[Lihat Metadata] D --> E E --> F[Lihat Catatan] F --> G[Pilih Workspace] G --> H[Import & Indeks] H --> I[Sinkronisasi Selesai!] style I fill:#4CAF50,color:#fff ``` ## Fitur Lanjutan ### Transfer Terkripta Untuk catatan yang sensitif, Noterich menawarkan enkripsi end-to-end opsional: **Proses Enkripsi:** ```javascript // Kata Sandi → Kunci Enkripsi (PBKDF2) password + salt → deriveKey() → Kunci AES-256-GCM // Data Catatan → Buffer Terkripta noteData + key + iv → encrypt() → encryptedBuffer // Paket Transfer { encryptedBuffer: ArrayBuffer, salt: Uint8Array, // Untuk penghasilan kunci iv: Uint8Array // Vector Inisialisasi } ``` **Fitur Keamanan:** - 🔐 100.000 iterasi PBKDF2 untuk penghasilan kunci - 🔐 Salinitas dan IV acak untuk setiap transfer - 🔐 Enkripsi Autentikasi AES-256-GCM - 🔐 Kata Sandi tidak pernah ditransfer — hanya digunakan di perangkat ### Sinkronisasi Catatan Secara Batch Transferkan beberapa catatan secara efisien: 1. Akses **Database Transfer** dari pengaturan 2. Pilih mode **"P2P Sync"** 3. Pilih catatan yang akan disinkronisasi 4. Penerima mendapatkan preview batch dengan opsi pemilihan **Peningkatan Performa:** - Catatan ditransfer dalam blok (512KB per blok) - Pemrosesan non-blocked mencegah UI freeze - Pelacakan progress dengan akurasi byte-level - Batalkan kapan saja tanpa merusak data ### Penyelesaian Konflik Ketika menyinkronkan catatan yang ada di kedua perangkat: ```mermaid graph TD A[Deteksi Konflik] --> B{Perbandingan Tanda Waktu} B -->|Lokal Lebih Baru| C[pertahankan Versi Lokal] B -->|Remote Lebih Baru| D[Tampilkan Dialog Konflik] D --> E[Pilih Versi] E --> F[Lokal] E --> G[Remote] E --> H[Mergi Manual] B -->|Keduanya Dihapus| I[Abaikan] style C fill:#2196F3,color:#fff style F fill:#2196F3,color:#fff style G fill:#4CAF50,color:#fff ``` **Jenis Konflik yang Dihadapi:** - `local-newer`: Versi Anda lebih baru - `remote-newer`: Versi masuk lebih baru - `local-deleted`: Anda menghapus catatan ini di perangkat - `remote-deleted`: Catatan dihapus di perangkat pengirim - `remote-restored`: Catatan yang dihapus sebelumnya dikembalikan ## Penyelesaian Masalah ### Permasalahan Umum & Solusi #### ❌ “Bibliotek PeerJS tidak terbuka” **Penyebab**: Blokir jaringan PeerJS CDN atau server sinyal **Solusi:** 1. Periksa koneksi internet 2. Pastikan firewall mengizinkan koneksi WebRTC 3. Coba jaringan alternatif (hotspot mobile) 4. Pastikan browser mendukung WebRTC #### ❌ “Waktu Koneksi Selesai” **Penyebab**: NAT/Firewall menghalangi koneksi langsung **Solusi:** 1. Kedua perangkat berada di jaringan yang sama membantu 2. Nonaktifkan VPN sementara 3. Periksa pengaturan WebRTC router 4. Gunakan QR code untuk koneksi mobile #### ❌ “Dekripsi Gagal” **Penyebab**: Kata sandi yang salah atau transfer rusak **Solusi:** 1. Periksa apakah kata sandi sesuai (case-sensitive) 2. Meminta tautan bagikan baru dari pengirim 3. Pastikan koneksi stabil selama transfer 4. Coba ukuran batch yang lebih kecil #### ❌ “Sinkronisasi sedang berlangsung” error **Penyebab**: Beberapa proses sinkronisasi dilakukan secara bersamaan **Solusi:** 1. Tunggu sinkronisasi saat ini selesai 2. Tutup tab/window Noterich lainnya 3. Perbarui halaman dan coba lagi 4. Hapus cache browser jika masih terus berlanjut ### Indikator Koneksi | Status | Arti | Tindakan | |--------|---------|--------| | 🔵 Sedang Terhubung | Membentuk koneksi peer | Tunggu 5-10 detik | | 🟡 Sedang Membandingkan | Menganalisis perbedaan catatan | Proses normal | | 🟠 Sedang Menunggu Pengguna | Perlu kata sandi atau konfirmasi | Periksa dialog modal | | 🟢 Sedang Mengimpor | Mengimpor catatan ke database | Jangan tutup tab | | ✅ Berhasil | Sinkronisasi selesai dengan baik | Siap digunakan | | 🔴 Error | Koneksi atau transfer gagal | Periksa penyebab | ## Praktik Keselamatan Terbaik ### Melindungi Data Anda Meskipun sinkronisasi P2P secara alami aman, ikuti petunjuk berikut: 1. **Gunakan Kata Sandi yang Kuat** - Minimal 8 karakter (disarankan 12+) - Campur huruf besar, kecil, angka, simbol - Jangan gunakan kata sandi dari layanan lain 2. **Verifikasi Penerima** - Bagikan tautan hanya dengan perangkat yang dipercaya - Gunakan QR code untuk transfer di dekat - Hindari posting tautan di saluran publik 3. **Monitorkan Koneksi Aktif** - Periksa peer yang terhubung selama proses sinkronisasi - Putuskan setelah transfer berhasil - Hapus tautan jika terbukti terpengaruh 4. **Bakar Data Secara Rutin** - Ekspor catatan penting secara berkala - Simpan backup di lokasi aman - Uji proses restorasi secara rutin ### Memahami Batasan Enkripsi **Apa yang Dikripta:** - ✅ Isi catatan (teks, format, metadata) - ✅ Lampiran dan media yang terkandung - ✅ Struktur database selama transfer **Apa yang Tidak Dikripta:** - ⚠️ Metadata koneksi (waktu, ukuran data) - ⚠️ Alamat IP (terlihat oleh server sinyal) - ⚠️ Identifikasi perangkat (untuk routing koneksi) ## Tips Performa ### Mengoptimalkan Kecepatan Sinkronisasi 1. **Kondisi Jaringan** - Jaringan lokal yang sama = transfer tercepat - Wifi 5GHz lebih baik dari 2.4GHz - Ethernet kabel untuk perangkat desktop 2. **Ukuran Blok** - Transfer besar: Bagi menjadi blok kecil - Periksa indikator proses - Batalkan dan coba lagi jika terhambat 3. **Kinerja Browser** - Pertahankan tab Noterich aktif selama proses sinkronisasi - Tutup tab browser yang tidak diperlukan - Perbarui ke versi browser terbaru 4. **Sumber Daya Perangkat** - Pastikan tersedia ruang penyimpanan yang cukup - Tutup aplikasi yang membutuhkan banyak memori - Restart browser jika sinkronisasi lambat ### Manajemen Memori Noterich menerapkan pengolahan batch cerdas untuk mencegah crash browser: ```javascript // Proses batch asinkron dengan setTimeout async function asyncBatchProcessor(items, processor, batchSize = 10) { // Proses item dalam blok 10 // Memberikan kontrol setiap 10ms untuk menjaga UI responsif // Mencegah thread utama terblokir saat impor besar } ``` **Rekomendasi:** - Batasi transfer tunggal hingga 100 catatan maksimal - Tunggu 30 detik antara sinkronisasi batch besar - Hapus cache browser secara rutin ## FAQ ### Q: Bisakah saya sinkronisasi lebih dari dua perangkat? **A:** Ya! Mulailah sesi P2P terpisah untuk setiap pasangan perangkat. Untuk workflow multi-perangkat: 1. Sinkronisasi Perangkat A → Perangkat B 2. Lalu sinkronisasi Perangkat B → Perangkat C 3. Atau gunakan Perangkat A sebagai pusat untuk yang lainnya ### Q: Apakah P2P sync berfungsi offline? **A:** P2P memerlukan koneksi internet awal untuk handshake server sinyal. Setelah koneksi terbentuk: - ✅ Transfer lokal berjalan tanpa internet - ✅ Data ditransfer langsung antar perangkat - ❌ Koneksi awal memerlukan akses server sinyal ### Q: Apa yang terjadi jika sinkronisasi terputus? **A:** Noterich menangani konflik dengan baik: - Catatan yang terkirim sebagian saja akan dibuang - Tidak ada data rusak yang masuk ke database - Cukup restart proses sinkronisasi - Catatan yang sudah disinkronisasi tidak terganggu ### Q: Bisakah saya sinkronisasi dengan instance Noterich orang lain? **A:** Tentu saja! Sinkronisasi P2P berfungsi antar pengguna Noterich: - Bagikan catatan individu dengan kolaborator - Tidak perlu koneksi akun - Setiap transfer independen dan aman - Sangat cocok untuk berbagi catatan sekali saja ### Q: Apakah ada batasan ukuran file? **A:** Batasan praktis tergantung pada: - Kapasitas memori browser - Stabilitas jaringan - Maksimal: 50MB per sesi - Transfer lebih besar: Bagi menjadi beberapa batch ### Q: Berapa lama tautan bagikan berlaku? **A:** Tautan bagikan berlaku selama sesi: - Berlaku selama tab Noterich pengirim terbuka - Berakhir saat pengirim menutup tab/browser - Disarankan digunakan sekali saja untuk keamanan - Generelkan tautan baru untuk setiap sesi transfer ## Perbandingan: P2P vs Cloud Sync ```mermaid quadrantChart title "Perbandingan Metode Sinkronisasi" x-axis "Privasi Rendah" --> "Privasi Tinggi" y-axis "Kontrol Rendah" --> "Kontrol Tinggi" quadrant-1 "Noterich P2P" quadrant-2 "Abaikan" quadrant-3 "Cloud Tradisional" quadrant-4 "Layanan Terpusat" "Noterich P2P": [0.9, 0.9] "Cloud Tradisional": [0.3, 0.4] "Layanan Terpusat": [0.4, 0.3] ``` | Fitur | Noterich P2P | Cloud Sync | |--------|--------------|------------| | **Penyimpanan Data** | Hanya perangkat Anda | Server pihak ketiga | | **Tingkat Privasi** | Maksimal | Tergantung pada penyedia | | **Biaya** | Gratis | Umumnya berbasis langganan | | **Kompleksitas Pengaturan** | Sedang | Mudah | | **Kecepatan Sinkronisasi** | Sangat cepat (langsung) | Sederhana (melalui server) | | **Akses Offline** | Lengkap | Terbatas | | **Keterikatan Vendor** | Tidak | Tinggi | | **Portabilitas Data** | Lengkap | Terbatas | ## Kasus Penggunaan Nyata ### 📚 Basis Data Pengetahuan Pribadi Sinkronisasi sistem PKM (Personal Knowledge Management) antar: - Desktop rumah untuk pekerjaan mendalam - Laptop untuk sesi di kafe - Tablet untuk membaca dan membuat catatan - Ponsel untuk pencatatan cepat ### 👥 Kolaborasi Tim Bagikan catatan penelitian secara aman dalam tim: - Tidak memerlukan infrastruktur TI - Transfer terkripta end-to-end - Tampilkan catatan melalui log transfer - Sesuai dengan regulasi privasi ### 🎓 Penelitian Akademik Kolaborasi pada makalah dan tinjauan literatur: - Bagikan PDF dan catatan yang diberi catatan - Pertahankan histori versi secara lokal - Bekerja di perangkat universitas/pribadi - Lindungi penelitian yang belum terpublikasi ### 🏢 Penggunaan Enterprise Distribusikan Noterich di organisasi yang peduli privasi: - Tidak ada data yang keluar jaringan perusahaan - Bekerja di balik firewall dengan konfigurasi - Diintegrasikan dengan kebijakan keamanan yang ada - Mengurangi ketergantungan pada layanan cloud ## Pengkajian Teknis (Untuk Pengembang) ### Gambaran Arsitektur ```mermaid graph TB subgraph Sender["Perangkat Pengirim"] A1[Data Catatan] --> A2[Serialisasi MessagePack] A2 --> A3{Dienkripsi?} A3 -->|Ya| A4[Enkripsi AES-256-GCM] A3 -->|Tidak| A5[Binari Bebas] A4 --> A6[Bagikan menjadi 512KB] A5 --> A6 A6 --> A7[Kanal Data WebRTC] end subgraph Receiver["Perangkat Penerima"] B1[Kanal Data WebRTC] --> B2[Reasembungkan Blok] B2 --> B3{Dienkripsi?} B3 -->|Ya| B4[Dekripsi AES-256-GCM] B3 -->|Tidak| B5[Binari Bebas] B4 --> B6[Serialisasi MessagePack] B5 --> B6 B6 --> B7[Penyimpanan IndexedDB] B7 --> B8[Perbaikan Indeks Cari] end A7 -.->|Sinkronisasi Langsung| 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 ``` ### Detail Implementasi Utama **Konfigurasi Server Sinyal:** ```javascript const peerConfig = { host: 'www.noterich.com', port: 443, secure: true, key: 'peerjs' }; ``` **Alur Enkripsi:** 1. Genrekan salinitas acak (16 byte) 2. Genrekan IV acak (12 byte) 3. Hasilkan kunci menggunakan PBKDF2 (100k iterasi) 4. Enkripsi dengan AES-256-GCM 5. Paket: `{encryptedBuffer, salinitas, iv}` **Protokol Transfer Data:** ```javascript // Jenis pesan yang dihandle: { type: 'metadata', payload: {...} } // Daftar catatan { type: 'note-chunk', payload: {...} } // Blok data catatan { type: 'progress', payload: {...} } // Progresi transfer { type: 'complete', payload: {...} } // Transfer selesai { type: 'cancel-sync-request' } // Permintaan pembatalan { type: 'error', message: '...' } // Laporan kesalahan ``` ## Rencana Masa Depan Noterich terus meningkatkan kemampuan P2P: - 🔄 **Sinkronisasi Tanpa Urusan**: Mendeteksi perangkat terdekat dan sinkronisasi secara diam-diam - 🌐 **Jaringan Mesh**: Transfer melalui perangkat perantara - 📦 **Sinkronisasi Selektif**: Pilih bagian catatan yang akan disinkronisasi - 🔔 **Pemberitahuan Push**: Pemberitahuan saat permintaan sinkronisasi datang - 📊 **Analisis Sinkronisasi**: Visualisasi histori sinkronisasi dan data yang dikirim - 📦 **Tautan Deep Link**: Berbagi catatan secara langsung dengan tautan ## Kesimpulan P2P Sync dari Noterich merupakan perubahan paradigma dalam cara kita memikirkan sinkronisasi catatan. Dengan menghilangkan perantara cloud, kita memiliki sistem yang menghormati privasi, mengurangi biaya, dan memberikan kontrol penuh atas data Anda. Baik Anda seorang mahasiswa yang mengelola catatan penelitian, profesional yang mengorganisir dokumen proyek, atau tim yang bekerja sama dalam materi sensitif, P2P Sync menyediakan keamanan dan fleksibilitas yang Anda butuhkan. **Mulailah sinkronisasi dengan lebih cerdas — catatan Anda, perangkat Anda, kontrol Anda.** --- ### Kartu Referensi Singkat ``` ┌─────────────────────────────────────────────────────┐ │ PANDUAN SINKRONISASI P2P NOTERICH │ ├─────────────────────────────────────────────────────┤ │ 1. Buka catatan → Klik Bagikan → Pilih P2P │ │ 2. Atur kata sandi (opsional tapi disarankan) │ │ 3. Salin tautan atau tunjukkan QR code │ │ 4. Di perangkat penerima: Buka tautan / Scan QR │ │ 5. Masukkan kata sandi jika dienkripsi │ │ 6. Pilih workspace → Konfirmasi impor │ │ 7. Tunggu selesai → Mulai bekerja! │ ├─────────────────────────────────────────────────────┤ │ 🔒 Enkripsi: AES-256-GCM + PBKDF2 (100k iterasi) │ │ ⚡ Teknologi: WebRTC + PeerJS + IndexedDB │ │ 📦 Ukuran Blok: 512KB untuk performa optimal │ │ 🌐 Sinyal: www.noterich.com:443 │ └─────────────────────────────────────────────────────┤ ```