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-algoliapackage.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_NAME 和 ALGOLIA_INDEX_FILE 写进 toml 避免 Netlify 扫描误判。SECRETS_SCAN_OMIT_KEYS 是因为 Netlify 会误判公开的 App ID 为密钥泄漏。
环境变量
Netlify → Site configuration → Environment variables:
| Key | Value | 勾 Secret |
|---|---|---|
ALGOLIA_APP_ID | 6GZCZ0KA2C | 否 |
ALGOLIA_ADMIN_KEY | 你的 Admin API Key | ✅ 必须 |
ALGOLIA_INDEX_NAME | linchuan | 否 |
⚠️
ALGOLIA_INDEX_NAME不要勾 Secret——netlify.toml 和原子输里都已经有它,勾了会被当密钥泄漏扫描出来导致构建失败。
Github 的密钥处理
hugo.toml 会提交到 GitHub。里面只有 appID 和 searchKey,两个都是公开密钥——暴露了不影响安全。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)