# Noterich P2P Sync ใช้งานง่าย: ส่งข้อมูลระหว่างอุปกรณ์ต่างๆ ได้โดยไม่ต้องใช้คลาวด์ > **ส่งข้อมูลบันทึกระหว่างอุปกรณ์ต่างๆ ได้อย่างปลอดภัย – ไม่จำเป็นต้องใช้คลาวด์** ในยุคที่ความเป็นส่วนตัวของข้อมูลมีความสำคัญมาก Noterich เสนอวิธีการส่งข้อมูลระหว่างอุปกรณ์ต่างๆ ที่น่าทึ่ง ฟีเจอร์ **P2P (Peer-to-Peer) Sync** ของเราทำให้การแบ่งปันบันทึกระหว่างอุปกรณ์ต่างๆ ทำได้อย่างราบรื่นโดยไม่ต้องพึ่งพาเซิร์ฟเวอร์คลาวด์ ข้อมูลของคุณจะยังคงเป็นของคุณเสมอ ## ทำไมควรเลือก P2P Sync? แอปบันทึกแบบดั้งเดิมจะเก็บข้อมูลบนเซิร์ฟเวอร์กลาง ซึ่งอาจก่อให้เกิดความเสี่ยงด้านความเป็นส่วนตัว ค่าใช้จ่ายในการสมัครสมาชิก และการพึ่งพาโครงสร้างพื้นฐานของบุคคลที่สาม Noterich ใช้วิธีการที่แตกต่างออกไป: ```mermaid graph LR A[อุปกรณ์ของคุณ] <-->|การเชื่อมต่อโดยตรง| B[อุปกรณ์อื่นของคุณ] C[เซิร์ฟเวอร์คลาวด์] -.->|ไม่จำเป็น| A C -.->|ไม่จำเป็น| B style A fill:#4CAF50,color:#fff style B fill:#4CAF50,color:#fff style C fill:#9E9E9E,color:#fff,stroke-dasharray: 5 5 ``` ### ข้อได้เปรียบหลัก - **🔒 ความเป็นส่วนตัวเป็นสิ่งสำคัญ**: บันทึกของคุณจะไม่สัมผัสกับเซิร์ฟเวอร์ของบุคคลที่สาม - **⚡ เร็วและตรงไปตรงมา**: อุปกรณ์ต่างๆ สื่อสารกันโดยตรงเพื่อการส่งข้อมูลที่รวดเร็วขึ้น - **💰 ไม่มีค่าใช้จ่ายในการสมัครสมาชิก**: สามารถส่งข้อมูลได้ฟรีโดยไม่ต้องใช้ระดับพรีเมียม - **🌐 ใช้งานได้ทุกที่**: สามารถส่งข้อมูลผ่านเครือข่ายท้องถิ่นหรืออินเทอร์เน็ตได้ - **📱 ใช้งานได้กับหลายแพลตฟอร์ม**: สามารถใช้งานได้ระหว่างเดสก์ท็อป ลากโทรศัพท์ แท็บเล็ต และมือถือ ## วิธีการทำงานของ P2P Sync Noterich ใช้ **เทคโนโลยี WebRTC** ร่วมกับ **PeerJS** เพื่อสร้างการเชื่อมต่อโดยตรงระหว่างอุปกรณ์ต่างๆ เมื่อคุณเริ่มการส่งข้อมูล: ```mermaid sequenceDiagram participant D1 as อุปกรณ์ A (ผู้ส่ง) participant S as เซิร์ฟเวอร์สัญญาณ participant D2 as อุปกรณ์ B (ผู้รับ) D1->>S: ขอการเชื่อมต่อ ID S-->>D1: สร้าง ID ห้อง D1->>D2: แบ่งปันลิงก์การเชื่อมต่อ (QR/URL) D2->>S: เชื่อมต่อโดยใช้ ID ห้อง S-->>D2: สร้างการเชื่อมต่อระหว่าง peer D1->>D2: เข้ารหัสและส่งบันทึก D2->>D2: ถอดรหัสและนำบันทึกเข้ามา Note over D1,D2: การส่งข้อมูลที่เข้ารหัสโดยตรง<br/>ไม่มีข้อมูลถูกเก็บไว้บนเซิร์ฟเวอร์ ``` ### เทคโนโลยีที่อยู่เบื้องหลัง การใช้งาน P2P ของ Noterich ใช้เทคโนโลยีดังนี้: 1. **ไลบรารี PeerJS**: จัดการกับความซับซ้อนของ WebRTC สำหรับการสื่อสารระหว่างเบราว์เซอร์ 2. **การเข้ารหัส AES-GCM**: การเข้ารหัสระดับทหารสำหรับข้อมูลบันทึกของคุณ 3. **การสร้างคีย์ด้วย PBKDF2**: การสร้างคีย์การเข้ารหัสแบบพาสเวิร์ดอย่างปลอดภัย 4. **การเข้ารหัสด้วย MessagePack**: การเข้ารหัสข้อมูลแบบไบนารีที่มีประสิทธิภาพสำหรับการส่งข้อมูลที่รวดเร็ว 5. **การจัดเก็บข้อมูลด้วย IndexedDB**: เว็บไซต์สำหรับการเข้าถึงข้อมูลแบบออฟไลน์ ## การเริ่มต้นใช้งาน P2P Sync ### ข้อกำหนดก่อนเริ่มต้น ก่อนที่คุณจะเริ่มต้น ให้ตรวจสอบว่าคุณมี: - ✅ Noterich ถูกติดตั้งบนอุปกรณ์ทั้งสองเครื่อง - ✅ อุปกรณ์ทั้งสองเชื่อมต่อกับอินเทอร์เน็ต (หรือเครือข่ายท้องถิ่นเดียวกัน) - ✅ เบราว์เซอร์เว็บสมัยใหม่ (Chrome, Firefox, Edge, Safari) ### ขั้นตอนที่ 1: เริ่มการแบ่งปันจากอุปกรณ์ต้นทาง 1. เปิดบันทึกที่คุณต้องการแบ่งปันใน Noterich 2. คลิกปุ่ม **Share** บนแถบเมนู 3. เลือกตัวเลือก **"P2P Share"** 4. (เฉพาะทาง) ตั้งรหัสผ่านเพื่อความปลอดภัยเพิ่มเติม - รหัสผ่านต้องมีอย่างน้อย 8 ตัวอักษร - ใช้การเข้ารหัส AES-256-GCM 5. รอให้เซิร์ฟเวอร์ P2P เริ่มต้น ```mermaid graph TD A[เปิดบันทึก] --> B[คลิกปุ่ม Share] B --> C[เลือก P2P Share] C --> D{ตั้งรหัสผ่านหรือไม่?} D -->|ใช่| E[ป้อนรหัสผ่าน ≥8 ตัวอักษร] D -->|ไม่ใช่| F[ข้ามขั้นตอนการเข้ารหัส] E --> G[เริ่มต้นเซิร์ฟเวอร์ P2P] F --> G G --> H[สร้างลิงก์แบ่งปันและ QR Code] ``` ### ขั้นตอนที่ 2: แบ่งปันลิงก์การเชื่อมต่อ เมื่อเซิร์ฟเวอร์ P2P เริ่มทำงาน Noterich จะสร้าง: - **ลิงก์ที่สามารถแบ่งปันได้** ที่มีพารามิเตอร์การเชื่อมต่อ - **QR Code** สำหรับการสแกนบนมือถือได้อย่างรวดเร็ว รูปแบบของลิงก์มีดังนี้: ``` https://noterich.com/#dbshare=<infoHash>&server=<signaling-server> ``` **วิธีการแบ่งปัน:** | วิธีการ | เหมาะสำหรับ | วิธีการใช้งาน | |--------|----------|--------| | 🔗 คัดลอกลิงก์ | อีเมล, แอปพลิเคชันส่งข้อความ | คลิกปุ่ม “คัดลอกลิงก์” | | 📱 QR Code | มือถือ | สแกนด้วยกล้องของอุปกรณ์ | | 📧 อีเมล | ผู้ร่วมงานระยะไกล | คัดลอกลิงก์เข้าไปในอีเมล | ### ขั้นตอนที่ 3: รับข้อมูลบนอุปกรณ์ปลายทาง บนอุปกรณ์ปลายทาง: 1. **เปิดลิงก์แบ่งปัน** - คลิกลิงก์โดยตรง, หรือ - สแกน QR Code ด้วยอุปกรณ์มือถือ 2. **ตรวจสอบข้อมูลที่ได้รับ** - เลือกชื่อบันทึกและข้อมูลเมตาดาต้า - ตรวจสอบข้อมูลของผู้ส่ง 3. **ป้อนรหัสผ่าน** (ถ้ามีการเข้ารหัส) - ป้อนรหัสผ่านที่ผู้ส่งกำหนด - ข้อมูลจะถูกถอดรหัสที่อุปกรณ์ของคุณ 4. **เลือกงานที่จะเก็บข้อมูล** - เลือกงานที่มีอยู่แล้ว, หรือ - สร้างงานใหม่สำหรับข้อมูลที่นำเข้ามา 5. **ยืนยันการนำเข้า** - บันทึกจะถูกถอดรหัสและเก็บไว้ใน IndexedDB - การค้นหาจะถูกสร้างขึ้นใหม่โดยอัตโนมัติ ```mermaid graph LR A[เปิดลิงก์] --> B[เชื่อมต่อกับผู้ส่ง] B --> C{เข้ารหัสหรือไม่?} C -->|ใช่| D[ป้อนรหัสผ่าน] C -->|ไม่ใช่| E[รับข้อมูลเมตาดาต้า] D --> E E --> F[ดูบันทึก] F --> G[เลือกงานที่จะเก็บข้อมูล] G --> H[นำเข้าและสร้างดัชนี] H --> I[การส่งข้อมูลเสร็จสิ้น!] style I fill:#4CAF50,color:#fff ``` ## คุณสมบัติขั้นสูง ### การส่งข้อมูลแบบเข้ารหัส สำหรับบันทึกที่มีความสำคัญ Noterich มีตัวเลือกการเข้ารหัสแบบ end-to-end ได้: **กระบวนการเข้ารหัส:** ```javascript // รหัสผ่าน → คีย์การเข้ารหัส (PBKDF2) password + salt → deriveKey() → คีย์ AES-256-GCM // ข้อมูลบันทึก → บัฟเฟอร์ที่ถูกเข้ารหัส noteData + key + iv → encrypt() → encryptedBuffer // การส่งข้อมูล { encryptedBuffer: ArrayBuffer, salt: Uint8Array, // สำหรับการสร้างคีย์ iv: Uint8Array // ตัวแปรเริ่มต้น } ``` **คุณสมบัติด้านความปลอดภัย:** - 🔐 การสร้างคีย์ด้วย PBKDF2 ถึง 100,000 ครั้ง - 🔐 การใช้ salt และ IV แบบสุ่มสำหรับการส่งข้อมูลแต่ละครั้ง - 🔐 การเข้ารหัสแบบ AES-256-GCM ที่ได้รับการยืนยันความปลอดภัย - 🔐 รหัสผ่านไม่ถูกส่งออกไป — ใช้เฉพาะในอุปกรณ์ของคุณ ### การส่งข้อมูลแบบบรรจุภัณฑ์ ส่งข้อมูลหลายบันทึกได้อย่างมีประสิทธิภาพ: 1. เข้าถึง **Database Transfer** จากการตั้งค่า 2. เลือกโหมด **"P2P Sync"** 3. เลือกบันทึกที่จะส่งข้อมูล 4. ผู้รับจะได้รับการดูบันทึกแบบบรรจุภัณฑ์พร้อมตัวเลือกการเลือก **การปรับปรุงประสิทธิภาพ:** - ข้อมูลถูกส่งเป็นชิ้นๆ (512KB ต่อชิ้น) - การประมวลผลแบบ non-blocking ป้องกันการหยุดการทำงานของหน้าจอ - การติดตามความก้าวหน้าแบบระดับไบต์ - สามารถยกเลิกได้ตลอดเวลาโดยไม่ทำให้ข้อมูลเสียหาย ### การแก้ไขข้อขัดแย้ง เมื่อมีการส่งข้อมูลที่อยู่ในอุปกรณ์ทั้งสองเครื่อง: ```mermaid graph TD A[ตรวจสอบข้อขัดแย้ง] --> B{เปรียบเทียบเวลา} B -->|เวอร์ชันท้องถิ่นที่ใหม่กว่า| C[เก็บเวอร์ชันท้องถิ่น] B -->|เวอร์ชันที่ใหม่กว่าในอุปกรณ์ปลายทาง| D[แสดงข้อขัดแย้ง] D --> E[เลือกเวอร์ชัน] E --> F[เวอร์ชันท้องถิ่น] E --> G[เวอร์ชันปลายทาง] E --> H[รวมข้อมูลด้วยตัวเอง] B -->|ทั้งสองถูกลบ| I[ข้ามไป] style C fill:#2196F3,color:#fff style F fill:#2196F3,color:#fff style G fill:#4CAF50,color:#fff ``` **การจัดการข้อขัดแย้ง:** - `local-newer`: เวอร์ชันของคุณใหม่กว่า - `remote-newer`: เวอร์ชันของผู้รับใหม่กว่า - `local-deleted`: คุณลบบันทึกนี้ท้องถิ่น - `remote-deleted`: บันทึกถูกลบจากอุปกรณ์ผู้ส่ง - `remote-restored`: บันทึกที่ถูกลบก่อนหน้านี้ถูกนำกลับมา ## การแก้ไขปัญหา ### ปัญหาที่พบบ่อยและวิธีแก้ไข #### ❌ “ไลบรารี PeerJS ไม่ถูกโหลด” **สาเหตุ**: การบล็อกเครือข่ายของ PeerJS CDN หรือเซิร์ฟเวอร์สัญญาณ **วิธีแก้ไข:** 1. ตรวจสอบการเชื่อมต่ออินเทอร์เน็ต 2. ตรวจสอบว่าไฟร์วอลล์อนุญาตให้ใช้งาน WebRTC หรือไม่ 3. ลองใช้งานเครือข่ายอื่น (เช่น hotspot บนมือถือ) 4. ตรวจสอบว่าเบราว์เซอร์รองรับ WebRTC หรือไม่ #### ❌ “เวลาการเชื่อมต่อล่าช้า” **สาเหตุ**: NAT/ไฟร์วอลล์ขัดขวางการเชื่อมต่อโดยตรง **วิธีแก้ไข:** 1. อุปกรณ์ทั้งสองอยู่ในเครือข่ายเดียวกันช่วยได้ 2. ปิด VPN ชั่วคราว 3. ตรวจสอบการตั้งค่า WebRTC ของเราเตอร์ 4. ใช้ QR code สำหรับการเชื่อมต่อบนมือถือ #### ❌ “การเข้ารหัสล้มเหลว” **สาเหตุ**: รหัสผ่านไม่ถูกต้องหรือการส่งข้อมูลเสียหาย **วิธีแก้ไข:** 1. ตรวจสอบว่าการป้อนรหัสผ่านถูกต้องหรือไม่ 2. ขอลิงก์แบ่งปันใหม่จากผู้ส่ง 3. ตรวจสอบว่าการเชื่อมต่อมีความเสถียรหรือไม่ 4. ลองใช้จำนวนชิ้นข้อมูลที่น้อยลง #### ❌ “เกิดข้อความแสดงข้อผิดพลาดขณะส่งข้อมูล” **สาเหตุ**: มีการส่งข้อมูลหลายครั้งในเวลาเดียวกัน **วิธีแก้ไข:** 1. รอให้การส่งข้อมูลเสร็จสิ้น 2. ปิด 탭/หน้าต่าง Noterich อื่นๆ 3. รีเฟรชหน้าเว็บและลองอีกครั้ง 4. ล้างข้อมูลแคชของเบราว์เซอร์ถ้ายังมีปัญหา ### ตัวบ่งชี้สถานะการเชื่อมต่อ | สถานะ | ความหมาย | วิธีการดำเนินการ | |--------|---------|--------| | 🔵 กำลังเชื่อมต่อ | กำลังสร้างการเชื่อมต่อระหว่าง peer | รอ 5-10 วินาที | | 🟡 กำลังเปรียบเทียบ | กำลังวิเคราะห์ความแตกต่างของบันทึก | กระบวนการปกติ | | 🟠 กำลังรอการยืนยันจากผู้ใช้ | ต้องมีรหัสผ่านหรือการยืนยัน | ตรวจสอบหน้าต่างแจ้งเตือน | | 🟢 กำลังนำข้อมูลเข้าสู่ฐานข้อมูล | กำลังนำบันทึกเข้าสู่ฐานข้อมูล | อย่ายุติหน้าต่าง | | ✅ สำเร็จ | การส่งข้อมูลเสร็จสิ้น | พร้อมใช้งานบันทึก | | 🔴 ข้อผิดพลาด | การเชื่อมต่อหรือการส่งข้อมูลล้มเหลว | ตรวจสอบการแก้ไขปัญหา | ## หลักการปฏิบัติด้านความปลอดภัย ### การปกป้องข้อมูลของคุณ แม้ว่า P2P Sync จะมีความปลอดภัยอยู่แล้ว แต่ก็ควรปฏิบัติตามหลักการต่อไปนี้: 1. **ใช้รหัสผ่านที่แข็งแรง** - อย่างน้อย 8 ตัวอักษร (แนะนำให้ใช้ 12 ตัวอักษรขึ้นไป) - ผสมกันของตัวอักษรตัวพิมพ์ใหญ่/ตัวพิมพ์เล็ก ตัวเลข และสัญลักษณ์ - อย่าใช้รหัสผ่านจากบริการอื่นซ้ำกัน 2. **ตรวจสอบผู้รับ** - แบ่งปันลิงก์กับอุปกรณ์ที่น่าเชื่อถือเท่านั้น - ใช้ QR code สำหรับการส่งข้อมูลในสถานที่ที่มีการเข้าถึงกันจริง - หลีกเลี่ยงการแบ่งปันลิงก์ในช่องทางสาธารณะ 3. **ติดตามการเชื่อมต่อที่กำลังทำงานอยู่** - ตรวจสอบ peer ที่กำลังเชื่อมต่อขณะส่งข้อมูล - ถอดสัญญาณหลังจากการส่งข้อมูลเสร็จสิ้น - ยกเลิกการแบ่งปันลิงก์หากมีการรั่วไหล 4. **ทำการสำรองข้อมูลเป็นประจำ** - ออกแบบสำเนาข้อมูลที่สำคัญเป็นประจำ - เก็บสำเนาไว้ในที่ปลอดภัย - ทดสอบการคืนข้อมูลเป็นประจำ ### ทำความเข้าใจข้อจำกัดของการเข้ารหัส **สิ่งที่ถูกเข้ารหัส:** - ✅ เนื้อหาบันทึก (ข้อความ รูปแบบ การแสดงข้อมูลเมตาดาต้า) - ✅ ไฟล์แนบและสื่อที่บันทึกไว้ - ✅ โครงสร้างฐานข้อมูลขณะส่งข้อมูล **สิ่งที่ไม่ถูกเข้ารหัส:** - ⚠️ ข้อมูลเมตาดาต้าของการเชื่อมต่อ (เวลา ขนาดข้อมูล) - ⚠️ ที่อยู่ IP (สามารถมองเห็นได้จากเซิร์ฟเวอร์สัญญาณ) - ⚠️ ตัวระบุอุปกรณ์ (สำหรับการกำหนดเส้นทางการเชื่อมต่อ) ## เคล็ดลับด้านประสิทธิภาพ ### การปรับปรุงความเร็วในการส่งข้อมูล 1. **สภาพเครือข่าย** - เชื่อมต่อกับเครือข่ายท้องถิ่นเดียวกัน = การส่งข้อมูลที่รวดเร็วที่สุด - เชื่อมต่อกับ Wi-Fi 5GHz จะดีกว่า 2.4GHz - อุปกรณ์เดสก์ท็อปใช้ Ethernet ผ่านสายเคเบิล 2. **ขนาดของชิ้นข้อมูล** - การส่งข้อมูลในปริมาณมาก: แบ่งเป็นชิ้นเล็กๆ - ตรวจสอบตัวชี้การดำเนินการ - ยกเลิกและลองอีกครั้งหากเกิดการล่าช้า 3. **ประสิทธิภาพของเบราว์เซอร์** - ให้เปิดหน้าต่าง Noterich ไว้ขณะส่งข้อมูล - ปิดแท็บเบราว์เซอร์ที่ไม่จำเป็น - อัปเดตเบราว์เซอร์เป็นเวอร์ชันล่าสุด 4. **ทรัพยากรของอุปกรณ์** - ตรวจสอบว่ามีพื้นที่จัดเก็บข้อมูลเพียงพอหรือไม่ - ปิดแอปพลิเคชันที่ใช้ทรัพยากรหน่วยความจำมากเกินไป - รีสตาร์ทเบราว์เซอร์หากการส่งข้อมูลช้าลง ### การจัดการหน่วยความจำ Noterich ใช้การจัดการหน่วยความจำแบบอัจฉริยะเพื่อป้องกันการค้างของเบราว์เซอร์: ```javascript // การประมวลผลแบบอัตโนมัติด้วย setTimeout async function asyncBatchProcessor(items, processor, batchSize = 10) { // ประมวลผลชิ้นข้อมูลเป็นชุด 10 ชิ้น // ให้การควบคุมทุก 10 วินาทีเพื่อรักษาประสิทธิภาพของหน้าจอ // ป้องกันการค้างของหน้าจอระหว่างการนำเข้าข้อมูลจำนวนมาก }