# Noterich P2P同步教程:无需云端的跨设备同步
> **在设备上安全同步笔记——无需云存储。**
在数据隐私日益重要的时代,Noterich提供了一种创新的跨设备同步方案。我们的**P2P(点对点)同步**功能使您可以在不同设备之间无缝共享笔记,而无需依赖任何云服务器。您的数据始终属于您自己。
## 为何选择P2P同步?
传统的笔记应用将数据存储在集中式服务器上。这会带来潜在的隐私风险、订阅费用以及对第三方基础设施的依赖。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同步的工作原理
Noterich利用**WebRTC技术**结合**PeerJS**来建立设备之间的直接连接。当您发起同步时:
```mermaid
sequenceDiagram
participant D1 as 设备A(发送方)
participant S as 信号服务器
participant D2 as 设备B(接收方)
D1->>S: 请求连接ID
S-->>D1: 生成房间ID
D1->>D2: 分享连接链接(二维码/网址)
D2->>S: 使用房间ID连接
S-->>D2: 建立对等连接
D1->>D2: 加密并发送笔记
D2->>D2: 解密并导入笔记
D1,D2: 直接加密传输<br/>数据不存储在服务器上
```
### 背后的技术
Noterich的P2P实现利用了:
1. **PeerJS库**:处理浏览器间通信的WebRTC复杂性
2. **AES-GCM加密**:用于笔记数据的军事级加密
3. **PBKDF2密钥生成**:安全的基于密码的加密密钥生成
4. **MessagePack序列化**:高效的二进制数据编码,实现快速传输
5. **IndexedDB存储**:本地优先的数据库,支持离线访问
## 开始使用P2P同步
### 前提条件
在开始之前,请确保您已:
- ✅ 在两种设备上安装了Noterich
- ✅ 两种设备已连接到互联网(或同一局域网)
- ✅ 拥有现代浏览器(Chrome、Firefox、Edge、Safari)
### 第一步:从源设备发起共享
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[生成共享链接和二维码]
```
### 第二步:分享连接链接
当P2P服务器启动后,Noterich会生成:
- **一个包含连接参数的唯一可共享链接**
- **二维码**用于手机快速扫描
链接格式如下:
```
https://noterich.com/#dbshare=<infoHash>&server=<signaling-server>
```
**共享方式**:
| 方式 | 最适合情况 | 操作方式 |
|--------|----------|--------|
| 🔗 复制链接 | 通过电子邮件、消息应用 | 点击“复制链接”按钮 |
| 📱 二维码 | 移动设备 | 使用设备摄像头扫描 |
| 📧 电子邮件 | 远程协作者 | 将链接粘贴到电子邮件中 |
### 第三步:在目标设备接收
在接收设备上:
1. **打开共享链接**
- 直接点击链接,或
- 使用移动设备扫描二维码
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提供可选的端到端加密:
**加密过程:**
```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[跳过]
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库未加载”
**原因**:网络阻塞或信号服务器阻止
**解决方案:**
1. 检查互联网连接
2. 验证防火墙允许WebRTC连接
3. 尝试其他网络(如移动热点)
4. 确保浏览器支持WebRTC
#### ❌ “连接超时”
**原因**:NAT/防火墙阻止直接连接
**解决方案:**
1. 两台设备在同一网络上
2. 暂时禁用VPN
3. 检查路由器WebRTC设置
4. 使用二维码进行移动设备连接
#### ❌ “解密失败”
**原因**:密码错误或传输损坏
**解决方案:**
1. 验证密码完全一致(区分大小写)
2. 向发送方请求新的共享链接
3. 确保传输过程中连接稳定
4. 尝试较小的批量大小
#### ❌ “同步进行中”错误
**原因**:同时尝试多次同步
**解决方案:**
1. 等待当前同步完成
2. 关闭其他Noterich标签页/窗口
3. 刷新页面并重试
4. 如果问题持续,清除浏览器缓存
### 连接状态指示
| 状态 | 含义 | 操作 |
|--------|---------|--------|
| 🔵 正在连接 | 建立对等连接 | 等待5-10秒 |
| 🟡 正在比较 | 分析笔记差异 | 正常流程 |
| 🟠 等待用户 | 需要密码或确认 | 查看对话框 |
| 🟢 正在导入 | 将笔记导入数据库 | 不要关闭标签页 |
| ✅ 成功 | 同步完成 | 可以开始使用笔记 |
| 🔴 错误 | 连接或传输失败 | 检查故障排除 |
## 安全最佳实践
### 保护您的数据
虽然P2P同步本身具有安全性,但仍需遵循以下准则:
1. **使用强密码**
- 至少8个字符(建议12个以上)
- 混合大写字母、小写字母、数字和符号
- 不要重复使用其他服务的密码
2. **验证接收方**
- 仅与可信设备共享链接
- 对于物理距离传输,使用二维码
- 避免在公共频道发布链接
3. **监控活跃连接**
- 在同步过程中检查连接的对等方
- 成功传输后断开连接
- 如果链接被泄露,撤销共享
4. **定期备份**
- 定期导出重要笔记
- 将备份存储在安全的地方
- 定期测试恢复流程
### 了解加密限制
**哪些内容被加密:**
- ✅ 笔记内容(文本、格式、元数据)
- ✅ 附件和嵌入媒体
- ✅ 传输过程中的数据库结构
**哪些内容不被加密:**
- ⚠️ 连接元数据(时间、数据大小)
- ⚠️ IP地址(对信号服务器可见)
- ⚠️ 设备标识符(用于连接路由)
## 性能优化建议
### 优化同步速度
1. **网络条件**
- 同一局域网传输速度最快
- 建议使用5GHz WiFi而非2.4GHz
- 桌面设备使用有线以太网
2. **批量大小**
- 大批量传输时,分成小批次
- 监控进度指示器
- 如果传输停滞,取消并重试
3. **浏览器性能**
- 同步过程中保持Noterich标签页活跃
- 关闭不必要的浏览器标签页
- 更新到最新浏览器版本
4. **设备资源**
- 确保有足够的存储空间
- 关闭占用大量内存的应用
- 如果同步变慢,重启浏览器
## 内存管理
Noterich实现了智能批量处理,以防止浏览器崩溃:
```javascript
// 使用setTimeout异步批量处理
async function asyncBatchProcessor(items, processor, batchSize = 10) {
// 以10毫秒为间隔处理批次
// 每10毫秒传递控制给主线程,以保持界面响应
// 防止大批量导入时主线程阻塞
}
```
**建议:**
- 单次传输最多100条笔记
- 大批量同步之间间隔30秒
- 定期清除浏览器缓存
## 常见问题解答
### 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 | 云同步 |
|---------|--------------|--------|
| **数据存储** | 仅限您的设备 | 第三方服务器 |
| **隐私级别** | 最高 | 依赖提供商 |
| **成本** | 免费 | 通常需要订阅 |
| **设置复杂性** | 中等 | 简单 |
| **同步速度** | 非常快(直接传输) | 中等(通过服务器) |
| **离线访问** | 完全支持 | 有限支持 |
| **供应商锁定** | 无 | 高 |
| **数据可移植性** | 完全可移植 | 受限 |
## 实际应用场景
### 📚 个人知识库
在以下设备同步您的个人知识管理系统:
- 家用桌面用于深度工作
- 笔记本电脑用于咖啡店会议
- 平板电脑用于阅读和注释
- 手机用于快速记录
### 👥 团队协作
在团队内部安全共享研究笔记:
- 无需IT基础设施
- 端到端加密传输
- 通过传输日志进行审计
- 符合隐私法规
### 🎓 学术研究
协作处理论文和文献综述:
- 共享带注释的PDF和笔记
- 本地维护版本历史
- 在大学或个人设备间工作
- 保护未发表的研究
### 🏢 企业部署
在注重隐私的企业中部署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
```
准备好改变您的工作流了吗?
您的私密、AI 驱动
笔记中心已准备就绪
加入数千名信赖 NoteRich 进行私密、强大笔记创作的用户行列。在浏览器中直接体验——无需安装,无需信用卡,您的笔记绝不离开您的设备。
无需信用卡
浏览器内运行
100% 本地笔记
资源与指南
探索我们关于本地优先笔记、隐私架构和高级生产力工作流的深度文章。
- 使用 NoteRich AI 将文本转化为可视化信息图
- 在 NoteRich 中将笔记转化为 AI 记忆
- NoteRich 工作空间与高级搜索教程
- NoteRich 富文本与 Markdown 对比:如何切换与结合使用
- NoteRich P2P 同步教程:无云端跨设备同步
- NoteRich OCR 教程:将纸质笔记扫描为数字文本
- NoteRich 本地优先 AES-GCM 加密机制详解
- NoteRich 本地知识库 RAG 教程
- NoteRich LaTeX 数学公式指南:如何编写公式
- NoteRich 快捷键与生产力提升技巧
- NoteRich 在线笔记的功能与优势
- 如何使用 NoteRich 隐私 AI 进行私密文档总结
- 如何在 NoteRich 中使用 Mermaid.js 绘制流程图 – 完整教程
- 如何在 NoteRich 中插入视频与附件
- 如何在 NoteRich 中导出 PDF 和无水印 HTML
- 如何在 NoteRich 中嵌入交互式 ECharts