自托管 Next.js 博客 CMS 实战指南(2026)
· 阅读需 4 分钟

「我们要一个自托管的 Next.js 博客」听起来简单。实操上往往会拆成三个项目:CMS、Admin、主题 — 外加备份、SEO 与鉴权。本指南给出一条务实的 2026 路径:数据留在自有基础设施上,体验仍像产品,而不是周末硬拼。
一句话: 用已经接好 Admin + API + Next.js 主题的发布平台。ReactPress 的 reactpress init 约 60 秒拉起本地栈,默认 SQLite(无需 Docker)。
相关文档: 面向 React 的自托管 CMS · 60 秒 Next.js 博客 · 生产部署
「自托管 Next.js CMS」应包含什么
| 层级 | 为什么重要 |
|---|---|
| Next.js 访客站 | SSR/ISR 支撑 SEO 与 Core Web Vitals |
| Admin | 非 Git 的编辑发布 |
| API / 数据库 | 你能掌控的持久内容 |
| 媒体 | 上传到本地磁盘或对象存储 |
| SEO 管道 | 标题、canonical、sitemap、OG |
| 运维 | 备份、doctor/logs、反代 |
少任何一层,你又回到 Strapi + create-next-app + 自研上传路由。
方案 A — DIY(灵活,慢)
典型栈:
- Strapi / Payload / 仓库里的 MDX
- 自建 Next.js App Router 站点
- 预览模式、Webhook 重建、图片流水线
- 自研鉴权与角色
优点: 控制力最大。缺点: 编辑能安全发文前可能要数周;每个 CVE 与升级都归你。
DIY 适合平台团队,对公司博客往往过贵。
方案 B — ReactPress(产品化自托管)
ReactPress 是面向 React 开发者的开源发布系统:
- NestJS API(默认 Headless REST)
- Vite Admin(文章、页面、媒体、评论、主题、插件)
- 带 SSR SEO 的 Next.js 主题
- Hook 插件(SEO、摘要、图片优化等)
- 可选 Electron 桌面端离线写作
npm i -g @fecommunity/reactpress@beta
mkdir my-blog && cd my-blog
reactpress init
| 界面 | 地址 |
|---|---|
| 博客 | http://localhost:3001 |
| Admin | http://localhost:3001/admin/ |
| API | http://localhost:3002/api |
默认账号:请立即修改 admin / admin。
自托管的数据库选择
| 阶段 | 建议 |
|---|---|
| 笔记本 / 小站 | SQLite(默认)— 零运维 |
| 增长 / 共享库 | MySQL |
| 容器 | Docker 指南 |
务必备份数据库 + uploads/。配置说明:配置项。
自托管 Next.js 博客 SEO 清单
- 启用 SEO 插件并填写单篇 meta
- 确认主题
/sitemap.xml与robots.txt - 生产环境写好公网站点 URL
- 使用 SSR/ISR — 避免纯客户端文章页
- 压缩图片(内置 image-optimizer 可辅助)
详情:站点设置与 SEO。
生产环境提纲
- VPS 或 Node 主机 + 反代(Caddy/Nginx)
- 进程管理或 Docker 跑 API + 主题
- TLS、限制 Admin 暴露、轮换密钥
- 定时备份 DB + uploads
- 部署后跑
reactpress doctor
完整指南:生产环境部署。
自托管 vs SaaS
| 自托管 ReactPress | SaaS Headless | |
|---|---|---|
| 数据驻留 | 你的磁盘 / 你的库 | 厂商云 |
| 成本模型 | 仅基础设施(MIT 软件) | 席位 + API + 流量 |
| 访客站 | 内置 Next 主题 | 通常另建 |
| 离线写作 | 桌面客户端 | 少见 |
要零运维选 SaaS;要数据主权与 React 栈统一选自托管。
常见问题
需要 Kubernetes 吗?
不需要。很多博客跑在单台 VM 上。
能保留自己的 Next.js 应用吗?
可以 — Headless API + API Key。见 Headless API。
4.0 能上生产吗?
active beta;请先预发。FAQ · 3→4 迁移。
从这里开始
npm i -g @fecommunity/reactpress@beta
mkdir my-blog && cd my-blog
reactpress init
接着阅读 ReactPress 是什么? 与 面向 React 的自托管 CMS。
