这篇给出一套可直接落地的公开博客部署方案:前台在 Vercel,后台用 Decap CMS,可视化编辑后写回 GitHub 仓库。

部署封面示意

架构

  • 前端:Next.js(App Router)
  • 托管:Vercel
  • 内容:Markdown(content/posts
  • 后台:Decap CMS(/admin
  • 登录:GitHub OAuth(仅仓库有写权限的人可发布)

一次性配置

1) GitHub OAuth App

在 GitHub 创建 OAuth App:

  • Homepage URL:https://blog.fesnkie.com
  • Authorization callback URL:https://blog.fesnkie.com/api/auth/callback

2) Vercel 环境变量

在 Vercel 项目里添加:

  • GITHUB_CLIENT_ID
  • GITHUB_CLIENT_SECRET

添加后执行一次 Redeploy 让变量生效。

3) Decap 配置

public/admin/config.ymlpublic/config.yml 使用同一套后端:

yml
backend:
  name: github
  repo: FrankieChiu/fesnkie-blog
  branch: main
  base_url: https://blog.fesnkie.com
  auth_endpoint: api/auth

发布流程(每天使用)

  1. 打开后台:https://blog.fesnkie.com/admin/
  2. 用 GitHub 登录
  3. 新建或编辑文章
  4. 点击 Publish
  5. Decap 写入 GitHub,Vercel 自动触发部署

常见问题

登录成功但不进后台

优先检查:

  • https://blog.fesnkie.com/config.yml 是否 200
  • Vercel 环境变量是否已配置并 redeploy
  • OAuth callback 是否精确为 /api/auth/callback

安全提醒

如果在控制台或聊天里泄露过 token,务必立刻撤销对应 GitHub OAuth 授权并重新登录。