目录

Hugo 博客:Algolia 搜索 + Netlify 自动部署

引言

上一篇 搞定了音乐播放器,这一篇记录搜索和部署。

LoveIt 默认用 lunr 本地搜索,文章多了会慢。换成 Algolia 云端搜索,再配上 Netlify 自动部署——git push 即上线。

Algolia 搜索

注册

algolia.com 注册 → Create Application → Free plan → Region 选 United States → 创建 Index 名为 linchuan

Settings → API Keys,拿到三个密钥:

密钥公开/私密用在
Application ID公开hugo.toml
Search-Only API Key公开hugo.toml
Admin API Key私密Netlify 环境变量

hugo.toml

[params.search]
  enable = true
  type = "algolia"
  [params.search.algolia]
    index = "linchuan"
    appID = "你的ApplicationID"
    searchKey = "你的Search-Only API Key"

atomic-algolia

上传 public/index.json 到 Algolia:

npm install --save-dev atomic-algolia

package.json

{
  "scripts": { "algolia": "atomic-algolia" }
}

Netlify 部署

netlify.toml

[build]
  command = "hugo --minify && npm run algolia"
  publish = "public"

[build.environment]
  HUGO_VERSION = "0.161.1"
  HUGO_ENV = "production"
  ALGOLIA_INDEX_NAME = "linchuan"
  ALGOLIA_INDEX_FILE = "public/index.json"
  SECRETS_SCAN_OMIT_KEYS = "ALGOLIA_APP_ID"

[[headers]]
  for = "/*"
  [headers.values]
    X-Frame-Options = "DENY"
    X-Content-Type-Options = "nosniff"
    Referrer-Policy = "strict-origin-when-cross-origin"

ALGOLIA_INDEX_NAMEALGOLIA_INDEX_FILE 写进 toml 避免 Netlify 扫描误判。SECRETS_SCAN_OMIT_KEYS 是因为 Netlify 会误判公开的 App ID 为密钥泄漏。

环境变量

Netlify → Site configuration → Environment variables:

KeyValue勾 Secret
ALGOLIA_APP_ID6GZCZ0KA2C
ALGOLIA_ADMIN_KEY你的 Admin API Key✅ 必须
ALGOLIA_INDEX_NAMElinchuan

⚠️ ALGOLIA_INDEX_NAME 不要勾 Secret——netlify.toml 和原子输里都已经有它,勾了会被当密钥泄漏扫描出来导致构建失败。

Github 的密钥处理

hugo.toml 会提交到 GitHub。里面只有 appIDsearchKey,两个都是公开密钥——暴露了不影响安全。Admin API Key 只存在于 Netlify 服务端的加密环境变量中,永远不会进入代码仓库。

初始化推送

cd 博客目录
git init
git add .
git commit -m "初始化博客"
git branch -M main
git remote add origin https://github.com/你的用户名/仓库名.git
git push -u origin main

修改 baseURL

部署后把 Netlify 给的域名填入 hugo.toml

baseURL = "https://linchuan-blog.netlify.app"

构建流程

git push
  → Netlify 拉取代码
  → hugo --minify(生成站点 + public/index.json)
  → npm run algolia(atomic-algolia 上传索引到 Algolia)
  → 密钥扫描(跳过 ALGOLIA_APP_ID)
  → 发布到 CDN

每次更新文章只需要 git push,全程自动化。

总结

要点说明
Algolia Free plan每月 1 万次搜索,个人博客够用
atomic-algolia一行 npm run algolia,自动读环境变量
Admin Key 安全只存 Netlify 服务端,永远不碰 git
密钥扫描App ID 不敏感,加 OMIT_KEYS 跳过
全自动部署push → 构建 → 上传索引 → 发布,无需干预

评论 (0)