核心用法
PrivateApp 是一款面向开发者的个人 PWA(Progressive Web App)仪表板系统,采用 FastAPI 后端 + React/Vite 前端架构,支持插件化扩展。用户通过 scripts/install.sh 一键部署,可选择 systemd(Linux)或 launchd(macOS)作为服务管理,也可手动启动。安装后需复制配置文件并调整端口、数据目录、VAPID 推送邮箱等参数。
服务启动后,系统暴露 RESTful API,内置应用包括系统监控(sysmon)与文件浏览器(files)。开发者可通过创建 apps/{app-id}/ 目录快速添加自定义插件,需遵循 app.json 元数据规范、FastAPI 异步路由约定及前端构建流程。任何前端变更后需重新构建并重启服务。
推送通知功能依赖 VAPID 密钥,通过 commons.push_client 模块调用。数据存储位于用户本地目录 ~/.local/share/privateapp/,包含 SQLite 数据库与密钥文件。
显著优点
1. 自托管与隐私优先:完全本地运行,数据不出机器,适合敏感场景
2. 插件架构灵活:约定优于配置,新增应用只需遵循目录结构与 API 规范
3. 现代技术栈:FastAPI 提供高性能异步接口,React/Vite 确保前端开发体验
4. 跨平台服务管理:原生支持 systemd 与 launchd,降低运维门槛
5. PWA 特性:可安装为原生应用体验,支持离线能力与推送通知
潜在缺点与局限性
1. 技术门槛较高:需同时掌握 Python 后端与 Node.js 前端构建流程
2. 无内置权限系统:所有访问默认开放,需自行在反向代理层补充认证
3. 插件生态空白:目前仅内置两个基础应用,第三方插件稀缺
4. 构建依赖重:前端变更需完整 rebuild,开发迭代效率受限
5. 文档简略:关键安全配置(如 VAPID、网络绑定)缺乏详细说明
适合人群
- 具备全栈开发能力的个人开发者
- 需要私有化仪表盘的技术爱好者
- 熟悉 systemd/launchd 服务管理的 Linux/macOS 用户
- 愿意自行维护插件生态的早期采用者
常规风险
- 网络暴露风险:默认绑定
0.0.0.0且缺乏认证,公网部署易被未授权访问 - 推送密钥泄露:VAPID 私钥以明文存储于本地,权限不当可能导致伪造推送
- 构建时依赖漏洞:Node.js 与 Python 依赖包未锁定版本,存在供应链攻击面
- 数据备份缺失:SQLite 与文件浏览器直接操作用户目录,无自动备份机制
- 系统服务权限:install.sh 修改用户级 systemd/launchd 配置,误操作可能影响系统稳定性