Plainpad 1.2.0 介绍与选型指南
自托管笔记应用 Plainpad(alextselegidis/plainpad v1.2.0,PHP/Laravel+MySQL)认知溯源篇:概述、三层架构、功能边界与服务端加密模型,双部署形态与 Memos/SilverBullet/Many Notes/Blinko 量化选型对比,全部事实标注来源与查询日期 2026-11-02。
Plainpad 1.2.0 介绍与选型指南
目标:把 Plainpad 是什么、架构如何、能力边界与同类差距一次讲清,帮助你在自托管笔记方案中做出选型判断。本文为联网溯源篇,所有事实均标注来源与查询日期(2026-11-02);部署实测见 《Plainpad 1.2.0 Docker Compose 部署实战》 篇(本栏 B2)。
一、环境信息
本文取证环境(均为 2026-11-02 实查):
- 取证渠道:官网 plainpad.org(首页/文档站 /docs/admin/installation/ 与 /docs/admin/docker/)、GitHub 仓库 alextselegidis/plainpad 的 releases.atom 与 README、Docker Hub 官方镜像 alextselegidis/plainpad、shields.io 徽章接口(星数取证,避开 GitHub API 限流)
- 最新稳定版:1.2.0(releases.atom 实查,发布条目更新于 2026-10-26,变更日志标注 2026-10-21)
- 星数:452(shields.io/github/stars/alextselegidis/plainpad 实查)
- 对比对象星数:usememos/memos 64k、silverbulletmd/silverbullet 6.4k、brufdev/many-notes 1.1k(同渠道同日期实查)
二、软件概述
Plainpad 是 Alex Tselegidis(alextselegidis,Easy!Appointments 作者)开发维护的自托管笔记 Web 应用,官方口号是 "Write it down. Own it forever."——笔记存在你自己的服务器上,代码任何人可审(来源:官网首页,2026-11-02)。
- 技术栈:PHP >= 8.2 + Laravel 框架(仓库 composer.json 实查为 laravel/framework ^12.0),前端为独立构建的 SPA(React/CRA 产物,index.html + static/js/main.*.js),数据库 MySQL/MariaDB(来源:GitHub 仓库与官方文档,2026-11-02)
- 许可:代码 GPL-3.0、内容 CC BY 3.0(来源:仓库 README,2026-11-02)
- 版本节奏(releases.atom 实查):项目 2020 年即有 1.0.0-beta 系列,1.0.0 正式版发布于 2024-12-13,1.1.0 于 2026-02-03、1.1.1 于 2026-04-23、1.2.0 于 2026-10-26 发布——近两年转为活跃迭代,且 1.2.0 一次性修复了十余个安全公告相关缺陷(GHSA-qg7c-2q9c-v7hg 登录限流、GHSA-wgcw-8jm6-f847 重置令牌失效、GHSA-fx8g-533q-jp2w 会话吊销等,来源:1.2.0 Release Notes)
- 部署形态:两条官方路径——传统 PHP 主机(FTP 上传发布包 + setup.php 向导)与官方 Docker Hub 镜像(单服务 + MySQL 伴生);官网首页标注 "7.9k+ downloads"(发布包下载量徽章,2026-11-02)
- 商业化:作者提供 Managed Hosting(€20/月起)、白标授权(€50/€500 一次性)等付费服务,核心软件保持免费开源(来源:官网 Pricing/Services 栏,2026-11-02)
💡 技术拓展:「自托管笔记」按数据主权与协作模型常见三类——
类型 特点 代表 纯私有笔记服务 多账号但彼此隔离,无协作 Plainpad、Memos 知识库/Wiki 页面互链、团队空间与权限 Outline、Docmost 本地优先同步 客户端为主、服务器仅同步 Joplin Server、Trilium Plainpad 属于第一类:一个服务器、多个互不可见的账号,定位是「个人笔记的自有云」。
三、核心架构
依据官方文档与仓库结构(2026-11-02 实查),Plainpad 是典型的「Laravel 后端 + 静态 SPA 前端 + REST API」三层结构:
- Web 服务器层:Apache 或 Nginx 均可。要点是站点根目录只暴露
public/;Nginx 配置中没有 index.php——应用外壳是index.html,PHP 前端控制器是api.php(try_files $uri $uri/ /api.php?$query_string),这与常见 Laravel 部署习惯不同,是官方文档明确强调的差异化配置(来源:/docs/admin/installation/)。 - 应用层(Laravel):路由集中在
v1API 命名空间,资源包括 sessions(登录换 token)、notes、users、settings 与根资源(安装/更新)。认证为 Bearer Token(来源:仓库 docs/api.md 与实测,见 《Plainpad 1.2.0 API 使用详解》 篇)。 - 前端层(SPA/PWA):构建产物带
manifest.json,可安装为手机/桌面应用(官方文档:安装为应用需要 HTTPS)。 - 数据层:MySQL/MariaDB,核心表为 users、notes、settings、sessions、password_resets(迁移文件 2019_11_19 起,2026_10_19 新增查找索引)。
- 自动更新机制:
APP_REPOSITORY指向https://cdn.alextselegidis.com/plainpad/updates/stable,应用内 Settings→Update 可拉取官方签名更新包;1.2.0 起发布包使用 Ed25519 签名(.sig文件),校验不通过即拒绝,同时强制 TLS 校验与可信 Origin(来源:1.2.0 Release Notes)。
💡 技术拓展:笔记「加密」在不同产品里含义差别很大——
方案 保护对象 密钥位置 代价 传输加密(TLS) 网络链路 服务器证书 服务器内数据仍是明文 服务端静态加密(at-rest) 磁盘/数据库落盘内容 服务端(应用密钥派生) 服务器被控仍可解密 客户端端到端加密(E2EE) 除客户端外所有环节 仅用户设备 全文搜索/网页端能力受限 Plainpad 提供的是第二档:官网演示「你写的日记」与「数据库里存的密文」对照,开启用户级 encrypt 开关后标题与内容以密文入库(来源:官网 "Private. Actually private." 小节)。它不做 E2EE,全文搜索因此仍可在服务端完成——这是「网页端即用 + 服务端可检索」与「零知识」之间的取舍。
四、功能特性
汇总自官网 Features 页与 1.2.0 变更日志(2026-11-02):
- 极简书写:打开即写、无文件夹树、无格式菜单;随打随存(自动保存),置顶笔记常驻列表顶部,支持深色模式
- 即时检索:输入关键词即按标题与内容过滤全部笔记;1.2.0 新增 Ctrl/Cmd+K 快速搜索浮层,无命中时可直接以关键词建笔记
- 多用户与个人偏好:每账号独立的语言(en-US/de-DE/fr-FR/sv-SE/zh-CN)、视图(compact)、行距、排序、主题偏好;管理员可管理用户
- 用户级加密:per-user
encrypt开关,开启后该用户笔记标题与内容密文入库;1.2.0 修复了「编辑用户时丢失加密标志导致笔记不可读」与「加密切换中途失败留下半加密状态」两个缺陷 - REST API:完整的 notes/users/settings/sessions 资源接口,支持 filter/sort/page/fields 查询助手(详见 《Plainpad 1.2.0 API 使用详解》 篇)
- PWA:manifest 支持安装为独立应用(需 HTTPS)
- 自动更新:应用内一键更新官方发布包,Ed25519 签名校验
- 演示数据:1.2.0 提供独立
DemoSeeder(php artisan db:seed --class=DemoSeeder),生成医学生笔记样例与专用演示账号,不污染默认播种
五、快速开始(官方最小示例)
以下为官方文档给出的两条最小路径(来源:plainpad.org/docs/,2026-11-02 实查;本栏 《Plainpad 1.2.0 Docker Compose 部署实战》 篇有完整实测记录):
路径 A:PHP 主机 + setup.php 向导
- 从 GitHub Releases 下载 1.2.0 发布包,上传到服务器;
- Web 服务器只暴露
public/目录; - 浏览器打开
https://notes.example.com/setup.php,填入空库的数据库信息,向导自动创建.env、生成随机应用密钥并建表播种; - 用默认管理员
admin@example.org / 12345678登录,立即在 Profile 中改邮箱与密码;setup.php在.env存在后自动返回 404。
路径 B:官方 Docker 镜像(docker-compose.yml 节选,官方文档原文)
services:
plainpad:
image: alextselegidis/plainpad:latest
depends_on:
- mysql
ports:
- '80:80'
environment:
- APP_KEY=base64:paste-your-key-here
- BASE_URL=http://localhost
- DEBUG_MODE=FALSE
- DB_HOST=mysql
- DB_NAME=plainpad
- DB_USERNAME=root
- DB_PASSWORD=secret
mysql:
image: mysql:8.0
environment:
- MYSQL_ROOT_PASSWORD=secret
- MYSQL_DATABASE=plainpad
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
⚠️ 注意:官方文档强调
APP_KEY必须固定复用——每次重建若换新密钥,已加密笔记将永久无法解密;且官方文档页标注「当前镜像版本 1.1.1」为滞后表述,实查镜像内应用版本已是 1.2.0(见 《Plainpad 1.2.0 Docker Compose 部署实战》 篇实测)。
六、适用场景与限制
适合:
- 个人/家庭服务器上的「自己的笔记云」:一台 PHP 主机或一个 MySQL 即可跑,资源占用小;
- 学生、旅行、创作、副项目四类官方主推场景(官网 Use cases);
- 需要把笔记接入自有工具链的用户:REST API + PWA 组合便于脚本化读写;
- 对「厂商云」不信任、要求数据不出家门,但又不想上重型知识库的用户。
限制:
- 不是 Markdown 知识库:笔记是纯文本单列表模型(标题+内容+置顶),无文件夹、无双向链接、无页面树——与 SilverBullet/Outline 类产品的核心差异;
- 无官方移动端:靠 PWA 安装网页应用,不原生同步;
- 加密非 E2EE:密钥在服务端,防的是「拖库」而不是「控制服务器的人」;
- 单点架构:无集群方案,高可用靠数据库备份恢复;
- 社区规模小:452 星、Discord 社区 + GitHub Issues 支持,与 Memos(64k 星)生态差距明显;作者以商业服务(托管/白标)为主要可持续模式。
七、同类选型对比
站内已交付的同类笔记专栏择优对比(星数 shields.io 2026-11-02 实查;技术细节引用站内已验真文档):
| 维度 | Plainpad 1.2.0 | Memos | SilverBullet | Many Notes |
|---|---|---|---|---|
| 星数 | 452 | 64k | 6.4k | 1.1k |
| 语言/框架 | PHP 8.2+/Laravel 12 | Go + SQLite | Deno/TypeScript | PHP/Laravel |
| 笔记模型 | 纯文本单列表 | 短记/Markdown 流 | Markdown 页面+双链 | Markdown 笔记+Vault |
| 数据落盘 | MySQL/MariaDB | SQLite 单文件 | .md 文件 | 数据库+文件双写 |
| 多用户 | 有(彼此隔离) | 有 | 弱(单用户为主) | 有(含 OIDC) |
| 服务端加密 | 用户级 at-rest | 无 | 无(明文 .md) | 无 |
| 对外 API | REST(v1) | gRPC+REST | 客户端 API | REST+协作广播 |
| 部署最小组合 | PHP+MySQL 或官方镜像+MySQL | 单二进制/单服务 | 单二进制 | 镜像+MariaDB |
| 许可 | GPL-3.0 | MIT | MIT | MIT |
| 站内详解 | 本专栏 | 《Memos 介绍与选型指南》 | 《SilverBullet 介绍与选型指南》 | 《Many Notes 介绍与选型指南》 |
解读与选择建议:
- 要「打开浏览器就写、随打随存、极简」——Plainpad 的交互模型最接近 Apple Notes 式的单列表;Memos 偏「短记/时间线」,SilverBullet/Many Notes 偏「Markdown 知识管理」,功能密度高但上手成本也高。
- 已有 LAMP/宝塔类 PHP 主机、不想再引入新运行时——Plainpad 与 Many Notes 是唯二「PHP 原生可部署」的选项;Plainpad 更轻(无 Redis/广播依赖),Many Notes 更强(Vault 双写、OIDC、协作)。
- 看重社区与长期维护——Memos 64k 星、迭代最稳;Plainpad 胜在「小而稳 + 作者直接提供付费托管兜底」,1.2.0 的安全修复密度也说明维护者在认真做生产可用。
- 需要端到端零知识加密——四者都不满足,应转向 Notesnook/Standard Notes 类专用产品;Plainpad 的加密定位是「服务端静态加密」这一档。
八、参考链接
- 官网:https://plainpad.org (2026-11-02 实查)
- 官方文档:https://plainpad.org/docs/admin/installation/ 、https://plainpad.org/docs/admin/docker/ (2026-11-02 实查)
- GitHub 仓库:https://github.com/alextselegidis/plainpad (releases.atom 实查,最新稳定 1.2.0)
- 官方镜像:https://hub.docker.com/r/alextselegidis/plainpad
- 站内相关:《Memos 介绍与选型指南》、《SilverBullet 介绍与选型指南》、《Many Notes 介绍与选型指南》、《Blinko 介绍与选型指南》