
Hello, Publa!
Publa 是什么?
Publa(读作 /ˈpʌb.la/,也可以叫它「帕布啦」)是一个轻量级的动态博客系统,基于 Next.js 开发,可用于个人博客、独立开发者、小团队官网、产品更新日志等场景,或者任何需要长期沉淀内容的小型站点。
在博客系统的选择上,我们常常面临两难:静态博客系统轻量但功能受限,无法原生支持评论、定时发布、历史记录等功能;而传统的动态博客系统虽然功能完善,但往往过于笨重,部署和维护成本高。
Publa 试图在两者之间找到平衡:既保持动态博客的完整功能,又让部署和维护尽可能简单。
Publa 不是一个只能托管在某个平台上的封闭服务,而是一个可以真正由你自己掌控的博客系统。它基于 MIT 协议开源,你可以免费安装、自由使用,也可以根据自己的需要修改它。

核心特性
优秀的写作体验
Publa 自带后台管理界面,你可以在浏览器里创建文章、编辑页面、管理分类和标签,不需要每次打开代码编辑器,也不需要手动处理文件和构建流程。
灵活的编辑器
编辑器支持富文本、Markdown 和 HTML,你可以用最顺手的方式写作:想快速排版,就用富文本;想保留 Markdown 工作流,也可以直接写 Markdown;需要嵌入特殊内容时,还可以切到 HTML。
富文本编辑器基于 TipTap 开发,支持内容自动保存:每隔 5 秒会将编辑器中的内容保存到 localStorage,每隔 30 秒会自动将内容保存到云端草稿箱。如果连续三次自动保存失败(比如网络中断)会在顶部显示通知。因此,你可以放心地在 Publa 后台撰写文章,而不用担心内容丢失。
草稿和历史版本
在后台写作过程中,你可以随时离开或中断,下次再打开页面时可以从之前离开时的版本继续写,直到内容准备好再发布。
发布之后,如果发现旧版本更好,也可以随时查看或回退到某个历史版本。已经发布的文章可以继续修改,修改的版本会以草稿的形式保存,直到你点击发布,不必担心还没完成的内容出现在前台。
后台还会定期为变化的内容保存历史版本,如有需要可随时查看或恢复到之前的版本。

动态博客的优势
和常见的静态博客不同,Publa 是动态博客。文章、页面、评论、留言、菜单、主题等内容都存储在数据库中,你不需要每写一篇文章就重新构建整个站点,也不需要使用第三方的评论或留言工具。
自带评论和留言板
Publa 不只是一个单向发布工具,也为读者互动预留了空间。
你可以开启文章评论,也可以启用留言板。评论支持默认显示,也可审核后再显示,留言可以在后台统一查看和处理。对于个人博客和小团队站点来说,这些功能足够覆盖日常互动,不必再额外接入第三方评论等服务。
实时更新,无需重新构建
静态博客每次更新内容都需要重新生成整个站点,而 Publa 可以实时发布、实时更新。你还可以利用动态博客的优势,实现定时发布、站内搜索、访问统计等静态博客难以实现的功能。

完整的内容管理
文章和独立页面
除了文章,Publa 也支持添加独立页面,比如「关于我」「项目介绍」「友情链接」「隐私政策」等内容,都可以作为页面来维护。
页面可以使用普通站点布局(带页头、页尾),也可以使用空白模板完全自定义,比如纯文本文件、特殊说明页,或者轻量的落地页。你可以任意添加自定义页面,并指定访问路径,只要这个路径与已有页面不重复即可。
附件管理
Publa 内置支持 AWS S3、Cloudflare R2、阿里云 OSS、腾讯云 COS。如果你有这些平台的账号,可在 Publa 后台添加配置,之后便可以直接在附件管理页面上传和查看附件了。也可以直接在编辑器中粘贴图片,Publa 会自动将图片上传到你配置的平台。
Publa 会管理通过它上传的文件,如果你在 Publa 后台删除了文件,对应的存储平台上的文件也会同时删除。
随着高分屏的普及,我们给屏幕截图时,得到的图片尺寸通常是截图区域的两倍大小。在 Publa 的编辑器中,插入图片后,点击选中图片,图片上方便会浮现一个快捷工具栏,其中有一个将图片一键设为 1/2 尺寸的按钮。如果你使用高分屏并经常要在文章中插入屏幕截图,这个功能会很有用。

部署简单,低运行成本
Publa 保持了很低的部署门槛。你可以克隆 Publa 在 GitHub 上的仓库然后在 Node.js 环境中运行,也可以直接使用 Docker 运行。
Publa 同时支持 SQLite 和 PostgreSQL 两种数据库,你可以根据需要选择。
由于支持 SQLite,如果你想开发调试 Publa 非常简单,只需从 GitHub 上下载源码,安装依赖,然后使用 npm run dev 即可启动测试服务器。在没有指定数据库的情况下,Publa 会自动创建并使用本地 SQLite 以便尽快开始开发调试工作。
值得一提的是,Publa 不仅支持本地 SQLite,还支持 Turso 提供的在线 SQLite 服务。Turso 有足够小项目使用的免费额度,因此,对大多数个人博客或小团队博客来说,可以将 Publa 部署在 Vercel 上并使用 Turso 提供的数据库,完全零成本运行。

自定义外观
Publa 内置浅色、深色和空白主题,也支持自定义主题和自定义 CSS。
如果你只想快速开始,可以直接使用默认主题;如果你希望博客更有个人风格,也可以逐步调整颜色、排版和细节。主题和自定义样式还支持导入导出,方便迁移和复用。
在后台设置中,还开放了自定义 HTML 片段的功能,支持在 <head> 末尾、<body> 开头或末尾等位置插入自定义 HTML。理论上来说,你可以根据偏好,自定义 Publa 博客前台页面的所有外观样式。
数据迁移与备份
Publa 博客的数据可以一键导出为 JSON 文件,也支持导入对应的 JSON 文件,方便数据的迁移与备份。
导入、导出数据的格式是公开的,你可以将其他博客的内容简单转换之后批量导入 Publa。如果使用 Publa 一段时间之后你想迁移到其他博客平台,也只需轻松地导出数据,再转换为其他平台的格式即可。
这意味着你不会被某个托管平台或数据库绑定。
团队协作
如果你的博客不是一个人维护,Publa 也提供了基本的用户角色:站长、管理员和编辑。
编辑可以专注于内容管理,包括评论留言处理,管理员可以维护站点设置,站长则拥有最高权限。对于小团队、工作室或产品团队来说,这样的权限划分足够覆盖大多数日常场景。
其他实用功能
一个博客真正运行起来后,除了写作和展示文章,常常还有一些额外的需求,比如管理菜单、配置链接跳转、查看文章的访问趋势、处理邮件通知等等。在 Publa 后台,这些常用功能都已经准备就绪。
其中,链接跳转功能对迁移博客的场景很有用。比如你从其他博客系统迁移到 Publa 后,旧文章地址可能和新的文章地址不一致,这时就可以在后台设置跳转规则,让用户访问老链接时自动跳到新链接,而不是看到 404 页面。
这对已经运营过一段时间的博客尤其重要:过去分享出去的链接、搜索引擎收录的页面、其他网站引用的地址,都可以自动跳转而不是出错。

除此之外,RSS、站点地图、站内搜索、访问统计、邮件通知等功能也都已内置,其中邮件通知支持 Resend 服务或者传统的 SMTP,只需简单配置便可开始。
Publa 适合谁?
如果你想要一个轻量、可控、开源的博客系统,又不想在静态站点生成、评论系统、后台管理、数据库迁移之间来回折腾,Publa 会是一个很合适的选择。
它适合:
想搭建个人博客的人
想维护团队文章和产品更新的小团队
想把内容和评论都掌握在自己手里的站长
想要一个简单后台,而不是完整 CMS 的用户
想从免费或低成本部署开始,再逐步扩展的项目

最后
Publa 的定位很明确:做一个简单、现代、可长期使用的博客系统。它不会试图变成一个庞大的内容平台,也不会把简单的写作流程变复杂。
Publa 正在持续开发和完善中,如果你在使用过程中发现了问题,欢迎在 GitHub 上提 issue!
希望 Publa 能帮你更好地完成博客写作!❤️
评论: