PaperPhone Plus
微信风格的端对端加密即时通讯应用。
使用 React 19 + TypeScript + Vite 前端和 Rust (Axum) 后端重写,
获得极致性能和类型安全。
安全模型
- 无状态 ECDH + XSalsa20-Poly1305 — 逐消息临时密钥,前向保密无需会话状态同步
- 零知识服务器 — 仅存储密文,私钥仅在设备本地,永不上传
- 四层密钥持久化 — 内存 → localStorage → sessionStorage → IndexedDB,Android WebView 重启后仍可恢复
功能亮点
- 📹 视频/语音通话 — WebRTC P2P(1:1)+ Mesh 多人(≤6 人)
- 🎙️ 变声功能 — 语音消息 / 1v1 通话 / 群组通话均支持实时变声,3 档可选(0.8x 低沉 / 1.0x 正常 / 1.2x 尖锐),基于 Web Audio API 音频处理链
- 👥 群聊 — 最多 2000 人群组,纯文本消息,免打扰模式,成员管理
- 🌐 朋友圈 — 文字 + 最多 9 张图或 1 个视频(≤10 分钟),点赞、评论、标签可见性控制
- 👤 个人资料 — 联系人资料页(朋友圈动态 +「不看此人朋友圈」与「不让他看我的朋友圈」双向隐私控制)
- 📰 时间线 — 小红书风格公开发帖区,双列瀑布流布局,最多50个图片/视频+2000字文字,支持匿名发帖、点赞、评论
- ⏱️ 消息自动删除 — 5 档可选(永不/1天/3天/1周/1月)
- 🔔 消息推送 — Web Push (VAPID) + FCM + OneSignal + ntfy 四通道(国产安卓免 Google 服务)
- 🌐 多语言 — 中文、英文、日语、韩语、法语、德语、俄语、西班牙语
- 📱 iOS 永久免签 — Safari「添加到主屏幕」,无需企业证书
- 💬 富文本消息、图片、视频、文档文件(PDF/DOCX/XLSX 等带类型图标)、语音、Emoji(200+,8 分类)、Telegram 贴纸包、送达回执、打字状态
- 🗂️ Cloudflare R2 对象存储(图片、语音与视频)
- 🏷️ 好友标签 — 标签分类筛选通讯录 + 朋友圈可见性控制
- 🎭 Telegram 贴纸包 — 动态贴纸包管理,可自定义包列表,数量无上限
- 🔑 两步验证 (2FA) — Google Authenticator TOTP,8 个恢复码
- 📷 扫码加好友/入群 — 扫一扫二维码添加好友、加入群聊,群二维码可设置有效期(1周/1月/3月)
- 👫 好友系统 — 添加好友需对方审核,支持 512 字验证消息;备注名称;好友标签分组
- 📤 文件上传 — 单文件最大 500MB,支持 Cloudflare R2 或本地存储,带进度条动画
- 🌐 代理设置 — 支持 SOCKS5 / HTTP / HTTPS 代理协议,登录页和设置页均可配置(地址、端口、用户名、密码)
部署后操作
- 打开分配给 client 服务的域名。
- 注册账号 — 密钥在本地设备生成。
- (可选)在 server 服务设置
R2_* 变量,启用图片/语音/视频上传功能。
- (可选)配置 Cloudflare TURN 以支持跨公网视频通话。
- (可选)设置
VAPID_* 变量启用浏览器推送通知,FCM_* 启用原生 Android 推送(Capacitor)。
- (可选)设置
TELEGRAM_BOT_TOKEN 和 STICKER_PACKS 启用 Telegram 贴纸包功能。
进阶方案:Zeabur + Vercel 混合部署
部署完成后,可以手动删除 Zeabur 上的 client 服务,改用 Vercel 部署前端。
这样 server/MySQL/Redis 由 Zeabur 托管,前端由 Vercel CDN 加速,全球访问更快。
Vercel 中设置环境变量 VITE_API_URL 指向 Zeabur 上 server 服务的公网域名即可。