PlainApp 中文文档 下载 App

本地优先架构:PlainApp 为什么坚持不碰云端

什么是"本地优先"(Local First)

Local First 是一条产品哲学:用户数据只存在用户自己的设备上,任何操作直接作用于本地副本,绝不依赖中央服务器。

PlainApp 把这条哲学做到了极致——整个产品从架构上就没考虑过"云端存储""账号体系""云同步"。

PlainApp 的架构全貌

 ┌──────────────┐  HTTP + TLS + XChaCha20  ┌─────────────────┐
 │  浏览器 / CLI │ ←——————————————————→  │  安卓手机 PlainApp │
 └──────────────┘                          └────────┬────────┘
                                                     │
                                          手机本地 SQLite 数据库
                                          手机本地文件系统
                                          手机本地 MediaProjection
                                          手机本地 Telephony 栈
                                          手机本地 RSS 缓存
                                          手机本地 APKS 存储
                                                     │
                                                     ▼
                                              不发任何数据到外部

整个系统里没有任何一台中央服务器:

PlainApp 手机 App 本身就是服务器——你访问的那个 https://192.168.x.x:8443 就是你自己手机。

为什么要这么做

开发者在 About 页讲了自己对现状的观察:

1. 算法劫持

主流互联网产品的核心逻辑从"交付价值"变成了"占用屏幕时间"。AI 推荐循环、无限滚动、短视频——这是在制造全球范围的数字成瘾。PlainApp 故意完全移除推荐算法和社交机制,唯一的指标是响应速度和任务完成率。

2. 数据主权丢失

Cloud-first 设计本来是为了方便,但现在经常被用来集中用户数据。很多 App 强制注册账号并上传数据,把个人隐私变成企业资产。PlainApp 用 Local First 路线把控制权还给用户。

3. 工具异化与 App Bloat

为了最大化商业化,原本专注实用的工具(文件管理器、计算器)都塞满了广告、短视频、金融漏斗。PlainApp 不赚这个钱,所以也不需要做这些。

4. 开源工具的易用性差距

Play Store 和 F-Droid 确实有不少好 App,但要么功能碎片化(需要装一堆),要么界面太 Geek(学习成本高)。PlainApp 想做一个整合高频工作流的、普通人也能用的工具。

代价是什么

Local First 路线不是"免费午餐":

好处代价
100% 数据主权❌ 不能跨 Wi-Fi 远程访问(手机不在身边时用不了)
零账号、零追踪❌ 换手机得手动备份(见 APK 备份与换机)
完整免费、无广告❌ 单开发者业余维护,商业化预算为零
所有操作即时、无网络延迟❌ 同一时刻只能一个浏览器面板连 PlainApp(多设备同时连可能冲突)
完全开源可审计❌ 加密细节需要你自己理解(自签名证书警告对普通用户是个认知门槛)

这些代价不是"待实现功能",是路线决定的取舍。开发者明确说了:"PlainApp 团队故意放弃了云同步"。

如果你真的需要跨网络访问

不想接受"必须同一 Wi-Fi"的代价?以下几种方案在 PlainApp 之上叠加:

方案一:Tailscale / WireGuard(推荐)

手机和电脑都装 Tailscale → 自动建立虚拟局域网 → PlainApp 地址变成 https://100.x.x.x:8443 → 无论手机在哪个 Wi-Fi / 移动数据,只要有信号,电脑就能访问。

方案二:端口转发(简单但不推荐)

家里路由器配置端口转发(把 8443 / 8080 转到手机 IP),你在外网就能直接访问。但这意味着 PlainApp 暴露到了公网——必须加强安全(改默认端口、加密码、只开 HTTPS)。

方案三:Nginx + Tailscale

如果你已经有自己的 VPS 跑 Tailscale Exit Node,把 PlainApp 挂在 Tailscale 网络后面更安全。

和 Nextcloud / Syncthing 这类项目的关系

Nextcloud 是云优先的自托管方案(你自己服务器跑 Nextcloud,数据存在你自己的服务器上)。Syncthing 是 P2P 同步方案。PlainApp 是 Local First 方案的另一条路线——它甚至不需要"另一台服务器"。

三种路线的核心差异: