# Noterich P2P Sync 教程:無需雲端即可跨設備同步 > **在各設備間安全同步筆記——無需雲端儲存.** 在數據隱私日益重要的時代,Noterich 提供了跨設備同步的創新方式。我們的 **P2P(異端對異端)同步**功能能夠讓您在不同設備間無縫共享筆記,且不需要依賴任何雲端伺服器。您的數據永遠屬於您。 ## 為何選擇 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 同步,無需付費等級 - **🌐 隨時使用**:透過本地網路或網際網路同步 - **📱 跨平台**:適用於桌面、筆記本電腦、平板電腦和行動裝置 ## 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: 建立異端連接 D1->>D2: 加密並傳送筆記 D2->>D2: 解密並導入筆記 Note over D1,D2: 直接加密傳送<br/>無數據儲存在伺服器上 ``` ### 背後的技術 Noterich 的 P2P 實現利用了: 1. **PeerJS 函式庫**:處理瀏覽器間的 WebRTC 通訊複雜性 2. **AES-GCM 加密**:軍用級加密技術,用於保護筆記數據 3. **PBKDF2 密鑰生成**:安全的基於密碼的加密鍵生成 4. **MessagePack 序列化**:高效的二進位數據編碼,實現快速傳輸 5. **IndexedDB 儲存**:本地先進的數據庫,適用於離線存取 ## 開始使用 P2P Sync ### 先決條件 開始之前,請確保您已經: - ✅ 在兩台設備上安裝了 Noterich - ✅ 兩台設備已連接到網際網路(或同一本地網路) - ✅ 使用現代網頁瀏覽器(Chrome、Firefox、Edge、Safari) ### 第 1 步:從源設備開始共享 1. 開啟您想要共享的筆記在 Noterich 中 2. 點擊工具列中的 **共享** 按鈕 3. 選擇 **"P2P 共享"** 選項 4. (選擇性)設定密碼以增加安全性 - 密碼至少需 8 個字符 - 使用 AES-256-GCM 加密 5. 等待 P2P 伺服器初始化 ```mermaid graph TD A[開啟筆記] --> B[點擊共享按鈕] B --> C[選擇 P2P 共享] C --> D{設定密碼?} D -->|是| E[輸入密碼 ≥8 個字符] D -->|否| F[跳過加密] E --> G[初始化 P2P 伺服器] F --> G G --> H[生成共享鏈接和 QR 碼] ``` ### 第 2 步:分享連接鏈接 當 P2P 伺服器開始運作後,Noterich 會生成: - **一個包含連接參數的獨特可共享鏈接** - **一個 QR 碼**,用於手機快速掃描 鏈接格式如下: ``` https://noterich.com/#dbshare=<infoHash>&server=<signaling-server> ``` **分享方式**: | 方式 | 最適合於 | 如何操作 | |--------|----------|--------| | 🔗 複製鏈接 | 電子郵件、消息應用程式 | 點擊“複製鏈接”按鈕 | | 📱 QR 碼 | 手機設備 | 用設備相機掃描 | | 📧 電子郵件 | 遠端合作者 | 將鏈接貼入電子郵件 | ### 第 3 步:在目標設備上接收 在接收設備上: 1. **開啟共享鏈接** - 直接點擊鏈接,或 - 用手機設備掃描 QR 碼 2. **檢視收到的筆記** - 預覽筆記標題和元數據 - 確認發送方信息 3. **輸入密碼**(如果已加密) - 輸入發送方提供的密碼 - 數據在您的設備上本地解密 4. **選擇目標工作空間** - 選擇現有的工作空間,或 - 為導入的筆記創建新工作空間 5. **確認導入** - 筆記被解密並儲存到 IndexedDB 中 - 搜索索引自動重建 ```mermaid graph TD 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 提供選擇性的端到端加密: **加密過程:** ```javascript // 密碼 → 加密鍵 (PBKDF2) password + salt → deriveKey() → AES-256-GCM 鍵 // 筆記數據 → 加密後的緩存 noteData + key + iv → encrypt() → encryptedBuffer // 傳輸包 { encryptedBuffer: ArrayBuffer, salt: Uint8Array, // 用於鍵導出 iv: Uint8Array // 初始化向量 } ``` **安全功能:** - 🔐 100,000 PBKDF2 次迭代用於鍵導出 - 🔐 每次傳輸使用隨機的鹽水和 IV - 🔐 AES-256-GCM 認證加密 - 🔐 密碼永遠不傳輸——僅在本地使用 ### 批量筆記同步 高效傳輸多個筆記: 1. 從設定中訪問 **數據庫傳輸** 2. 選擇 **"P2P 同步"** 模式 3. 選擇要同步的筆記 4. 接收方可獲得帶有選擇选项的批量預覽 **性能優化:** - 筆記以 512KB 大小分批傳輸 - 非阻塞的同步處理防止畫面卡頓 - 以位元級精度追蹤進度 - 隨時取消,不會造成數據損壞 ### 衝突解決 在兩台設備上同時同步筆記時: ```mermaid graph TD A[檢測衝突] --> B{比較時間戳} B -->|本地更新| C[保留本地版本] B -->|遠端更新| D[顯示衝突對話框] D --> E[選擇版本] E --> F[本地] E --> G[遠端] E --> H[手動合併] B -->|兩者都已刪除| I[跳過] ``` ### 狀態指示 | 狀態 | 含義 | 行動 | |--------|---------|--------| | 🔵 正在連接 | 建立異端連接 | 等待 5-10 秒 | | 🟡 正在比較 | 分析筆記差異 | 正常流程 | | 🟠 需要用户输入密碼 | 需要密碼或確認 | 查看對話框 | | 🟢 正在導入 | 將筆記導入數據庫 | 不要關閉標籤 | | ✅ 成功 | 同步完成成功 | 準備使用筆記 | | 🔴 錯誤 | 連接或傳輸失敗 | 檢查故障排除 | ## 安全最佳實踐 ### 保護您的數據 雖然 P2P 同步本身具有安全性,但請遵循以下指南: 1. **使用強健的密碼** - 至少 8 個字符(建議 12 個以上) - 混合大寫、小寫、數字、符號 - 永遠不要重複使用其他服務的密碼 2. **驗證接收方** - 只與可信設備共享鏈接 - 使用 QR 碼進行物理距離上的傳輸 - 避免將鏈接發布在公共頻道中 3. **監控活躍的連接** - 在同步過程中檢查連接的異端 - 成功傳輸後斷開連接 - 如果鏈接被破壞,撤銷共享鏈接 4. **定期備份** - 定期匯出重要的筆記 - 將備份儲存在不同安全的位置 - 定期測試恢復程序 ### 了解加密限制 **被加密的內容:** - ✅ 筆記內容(文本、格式、元數據) - ✅ 附件和嵌入的媒體 - ✅ 傳輸過程中的數據庫結構 **未被加密的內容:** - ⚠️ 連接元數據(時間、數據大小) - ⚠️ IP 地址(可被信號伺服器看到) - ⚠️ 設備識別碼(用於連接路由) ## 性能建議 ### 優化同步速度 1. **網路狀況** - 相同的本地網路 = 最快的傳輸 - 5GHz WiFi 比 2.4GHz 更優先 - 桌面設備使用有線以太網 2. **批量大小** - 大規模傳輸:分為小批量進行 - 監控進度指示 - 如果停滯,取消並重試 3. **瀏覽器性能** - 在同步期間保持 Noterich 標籤激活 - 關閉不必要的瀏覽器標籤 - 更新到最新版本的瀏覽器 4. **設備資源** - 確保有足夠的儲存空間 - 關閉耗盡記憶體的應用程式 - 如果同步變慢,重新啟動瀏覽器 ## 疑難排解 ### 常見問題及解決方案 #### ❌ “PeerJS 函式庫未載入” **原因**:網路阻斷了 PeerJS CDN 或信號伺服器 **解決方案:** 1. 檢查網際網路連線 2. 確認防火牆允許 WebRTC 連接 3. 嘗試其他網路方式(如行動熱點) 4. 確保瀏覽器支持 WebRTC #### ❌ “連接時間超長” **原因**:NAT/防火牆阻止直接連接 **解決方案:** 1. 兩台設備在同一網路中更有幫助 2. 暫時禁用 VPN 3. 檢查路由器 WebRTC 設定 4. 使用 QR 碼進行手機連接 #### ❌ “解密失敗” **原因**:錯誤的密碼或損壞的傳輸 **解決方案:** 1. 確認密碼完全正確(區分大小寫) 2. 向發送方請求新的共享鏈接 3. 確保傳輸過程中連接穩定 4. 嘗試更小的批次大小 #### ❌ “同步中”錯誤 **原因**:同時進行多個同步嘗試 **解決方案:** 1. 等待目前的同步完成 2. 關閉其他 Noterich 標籤/視窗 3. 刷新頁面並重試 4. 如果問題持續,清除瀏覽器缓存 ## 狀態指示 | 狀態 | 含義 | 行動 | |--------|---------|--------| | 🔵 正在連接 | 建立異端連接 | 等待 5-10 秒 | | 🟡 正在比較 | 分析筆記差異 | 正常流程 | | 🟠 需要用户输入密碼 | 需要密碼或確認 | 查看對話框 | | 🟢 正在導入 | 將筆記導入數據庫 | 不要關閉標籤 | | ✅ 成功 | 同步完成成功 | 準備使用筆記 | | 🔴 錯誤 | 連接或傳輸失敗 | 檢查故障排除 | ## 安全最佳實踐 ### 保護您的數據 雖然 P2P 同步本身具有安全性,但請遵循以下指南: 1. **使用強健的密碼** - 至少 8 個字符(建議 12 個以上) - 混合大寫、小寫、數字、符號 - 永遠不要重複使用其他服務的密碼 2. **驗證接收方** - 只與可信設備共享鏈接 - 使用 QR 碼進行物理距離上的傳輸 - 避免將鏈接發布在公共頻道中 3. **監控活躍的連接** - 在同步過程中檢查連接的異端 - 成功傳輸後斷開連接 - 如果共享鏈接被破壞,撤銷共享鏈接 4. **定期備份** - 定期匯出重要的筆記 - 將備份儲存在不同安全的位置 - 定期測試恢復程序 ### 了解加密限制 **被加密的內容:** - ✅ 筆記內容(文本、格式、元數據) - ✅ 附件和嵌入的媒體 - ✅ 傳輸過程中的數據庫結構 **未被加密的內容:** - ⚠️ 連接元數據(時間、數據大小) - ⚠️ IP 地址(可被信號伺服器看到) - ⚠️ 設備識別碼(用於連接路由) ## 性能建議 ### 優化同步速度 1. **網路狀況** - 相同的本地網路 = 最快的傳輸 - 5GHz WiFi 比 2.4GHz 更優先 - 桌面設備使用有線以太網 2. **批量大小** - 大規模傳輸:分為小批量進行 - 監控進度指示 - 如果停滯,取消並重試 3. **瀏覽器性能** - 在同步期間保持 Noterich 標籤激活 - 關閉不必要的瀏覽器標籤 - 更新到最新版本的瀏覽器 4. **設備資源** - 確保有足夠的儲存空間 - 關閉耗盡記憶體的應用程式 - 如果同步變慢,重新啟動瀏覽器 ## 常見問題 ### Q: 我可以同步多於兩台設備嗎? **A:** 可以!為每對設備分別啟動 P2P 同步。對於多設備工作流程: 1. 同步設備 A → 設備 B 2. 然後同步設備 B → 設備 C 3. 或者將設備 A 作為所有其他設備的中心節點 ### Q: P2P 同步可以在離線模式下使用嗎? **A:** P2P 需要初始的網際網路連接以進行信號伺服器的握手。建立連接後: - ✅ 本地網路傳輸可以在無網際網路情況下進行 - ✅ 數據可以直接在設備之間傳輸 - ❌ 初始連接需要信號伺服器的訪問權限 ### Q: 如果同步中斷了會怎麼樣? **A:** Noterich 能夠妥善處理中斷情況: - 部分傳輸的筆記會被丟棄 - 沒有損壞的數據會進入您的數據庫 - 只需重新開始同步流程 - 已同步的筆記將保持不變 ### Q: 我可以與他人的 Noterich 實體同步嗎? **A:** 當然可以!P2P 同步可以在任何 Noterich 用戶之間進行: - 與合作者共享個別筆記 - 不需要連接帳戶 - 每次傳輸都是獨立且安全的 - 非常適用於一次性筆記共享 ### Q: 有文件大小限制嗎? **A:** 實際限制取決於: - 瀏覽器記憶體可用性 - 網路穩定性 - 建議最大大小:每次 50MB - 更大的傳輸:分為多個批次 ### Q: 共享鏈接的有效期是多久? **A:** 共享鏈接是依據會話的: - 在發送方的 Noterich 標籤開啟期間有效 - 當發送方關閉標籤/瀏覽器時失效 - 建議一次使用,以保護安全 - 每次傳輸時生成新的鏈接 ## 比較:P2P 與雲端同步 ```mermaid quadrantChart title "同步方式比較" x-axis "較低隱私" --> "較高隱私" y-axis "較低控制" --> "較高控制" quadrant-1 "Noterich P2P" quadrant-2 "避免" quadrant-3 "傳統雲端" quadrant-4 "集中式服務" "Noterich P2P": [0.9, 0.9] "傳統雲端": [0.3, 0.4] "集中式服務": [0.4, 0.3] ``` | 功能 | Noterich P2P | 雲端同步 | |--------|--------------|------------| | **數據儲存** | 僅限您的設備 | 第三方伺服器 | | **隱私等級** | 最高 | 依賴提供方 | | **成本** | 免費 | 通常需要付費 | | **設定複雜度** | 中等 | 簡單 | | **同步速度** | 非常快(直接) | 中等(通過伺服器) | | **離線存取** | 完全 | 有限 | | **商業鎖定** | 無 | 高 | | **數據可移植性** | 完全 | 受限 | ## 實際應用案例 ### 📚 個人知識庫 在以下設備同步您的 PKM 系統: - 家用桌面用於深度工作 - 筆記本電腦用於咖啡廳時的作業 - 平板電腦用於閱讀和作記錄 - 手機用於快速攝影 ### 👥 團隊合作 在團隊內部安全共享研究筆記: - 不需要任何技術基礎設施 - 端到端加密的傳輸 - 通過傳輸日志進行稽核 - 符合隱私規範 ### 🎓 學術研究 合作撰寫論文和文獻回顧: - 共享註釋了的文件和筆記 - 在本地維護版本歷史 - 在學校或個人設備上工作 - 保護未發表的研究 ### 🏢 企業部署 在注重隱私的組織中部署 Noterich: - 數據不會離開公司網路 - 能夠在防火牆後面通過配置運作 - 與現有安全政策整合 - 減少對雲端服務的依賴 ## 技術深入解析(適用於開發者) ### 架構概覽 ```mermaid graph TB subgraph 發送方["發送方設備"] A1[筆記數據] --> A2[MessagePack 序列化] A2 --> A3{已加密?} A3 -->|是| A4[AES-256-GCM 加密] A3 -->|否| A5[原始二進位] A4 --> A6[分塊到 512KB] A5 --> A6 A6 --> A7[WebRTC 數據通道] end subgraph 接收方["接收方設備"] B1[WebRTC 數據通道] --> B2[重新組合塊] B2 --> B3{已加密?} B3 -->|是| B4[AES-256-GCM 解密] B3 -->|否| B5[原始二進位] B4 --> B6[MessagePack 反序列化] B5 --> B6 B6 --> B7[IndexedDB 儲存] B7 --> B8[重新建立搜索索引] end A7 -.->|直接 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 ```