Plainpad 1.2.0 介绍与选型指南

自托管笔记应用 Plainpad(alextselegidis/plainpad v1.2.0,PHP/Laravel+MySQL)认知溯源篇:概述、三层架构、功能边界与服务端加密模型,双部署形态与 Memos/SilverBullet/Many Notes/Blinko 量化选型对比,全部事实标注来源与查询日期 2026-11-02。

PlainpadPlainpad笔记自托管PHP2026/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」三层结构:

  1. Web 服务器层:Apache 或 Nginx 均可。要点是站点根目录只暴露 public/;Nginx 配置中没有 index.php——应用外壳是 index.html,PHP 前端控制器是 api.php(try_files $uri $uri/ /api.php?$query_string),这与常见 Laravel 部署习惯不同,是官方文档明确强调的差异化配置(来源:/docs/admin/installation/)。
  2. 应用层(Laravel):路由集中在 v1 API 命名空间,资源包括 sessions(登录换 token)、notes、users、settings 与根资源(安装/更新)。认证为 Bearer Token(来源:仓库 docs/api.md 与实测,见 《Plainpad 1.2.0 API 使用详解》 篇)。
  3. 前端层(SPA/PWA):构建产物带 manifest.json,可安装为手机/桌面应用(官方文档:安装为应用需要 HTTPS)。
  4. 数据层:MySQL/MariaDB,核心表为 users、notes、settings、sessions、password_resets(迁移文件 2019_11_19 起,2026_10_19 新增查找索引)。
  5. 自动更新机制: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 向导

  1. 从 GitHub Releases 下载 1.2.0 发布包,上传到服务器;
  2. Web 服务器只暴露 public/ 目录;
  3. 浏览器打开 https://notes.example.com/setup.php,填入空库的数据库信息,向导自动创建 .env、生成随机应用密钥并建表播种;
  4. 用默认管理员 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.0MemosSilverBulletMany Notes
星数45264k6.4k1.1k
语言/框架PHP 8.2+/Laravel 12Go + SQLiteDeno/TypeScriptPHP/Laravel
笔记模型纯文本单列表短记/Markdown 流Markdown 页面+双链Markdown 笔记+Vault
数据落盘MySQL/MariaDBSQLite 单文件.md 文件数据库+文件双写
多用户有(彼此隔离)有弱(单用户为主)有(含 OIDC)
服务端加密用户级 at-rest无无(明文 .md)无
对外 APIREST(v1)gRPC+REST客户端 APIREST+协作广播
部署最小组合PHP+MySQL 或官方镜像+MySQL单二进制/单服务单二进制镜像+MariaDB
许可GPL-3.0MITMITMIT
站内详解本专栏《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 的加密定位是「服务端静态加密」这一档。

八、参考链接

Plainpad 1.2.0 介绍与选型指南 - Quzuo