diff --git a/.og/gen/authentik-major-upgrade-gotchas.html b/.og/gen/authentik-major-upgrade-gotchas.html new file mode 100644 index 0000000..c6b6dd9 --- /dev/null +++ b/.og/gen/authentik-major-upgrade-gotchas.html @@ -0,0 +1,96 @@ + + + + + + + +
+
+
Mr Hoelee · blog.hoelee.com
+
+ +
devops · DevOps
+ +
Authentik 2025.8 to 2026.8: The Breakable
Parts Nobody Warns You About
+ +
+ +
$docker compose pull authentik-worker
+
 authorization_flow not found · SSO broken
+
$uptime: 2025.8 → 2026.8fixed ✓
+
+ + + + \ No newline at end of file diff --git a/.og/gen/authentik-major-upgrade-gotchas.png b/.og/gen/authentik-major-upgrade-gotchas.png new file mode 100644 index 0000000..8ce5d32 Binary files /dev/null and b/.og/gen/authentik-major-upgrade-gotchas.png differ diff --git a/.og/gen/hello-world.html b/.og/gen/hello-world.html new file mode 100644 index 0000000..f7435dc --- /dev/null +++ b/.og/gen/hello-world.html @@ -0,0 +1,96 @@ + + + + + + + +
+
+
Mr Hoelee · blog.hoelee.com
+
+ +
notes · DevOps
+ +
Hello, World —
About This Blog
+ +
+ +
$git init hoelee-blog · first commit
+
 technical writing · self-hosting · build log
+
$about → blog.hoelee.com
+
+ + + + \ No newline at end of file diff --git a/.og/gen/hello-world.png b/.og/gen/hello-world.png new file mode 100644 index 0000000..98062f5 Binary files /dev/null and b/.og/gen/hello-world.png differ diff --git a/.og/gen/how-i-built-the-digikedai-telegram-bot.html b/.og/gen/how-i-built-the-digikedai-telegram-bot.html new file mode 100644 index 0000000..081c55a --- /dev/null +++ b/.og/gen/how-i-built-the-digikedai-telegram-bot.html @@ -0,0 +1,96 @@ + + + + + + + +
+
+
Mr Hoelee · blog.hoelee.com
+
+ +
case-studies · DevOps
+ +
How I Built the
DigiKedai Telegram AI Bot
+ +
+ +
$user:"does this course have a free trial?"
+
 bot → yes, here's your account ✓ (24/7, no human)
+
$grammY · LiteLLM · Cloudflare tunnel
+
+ + + + \ No newline at end of file diff --git a/.og/gen/how-i-built-the-digikedai-telegram-bot.png b/.og/gen/how-i-built-the-digikedai-telegram-bot.png new file mode 100644 index 0000000..545f3b9 Binary files /dev/null and b/.og/gen/how-i-built-the-digikedai-telegram-bot.png differ diff --git a/.og/gen/how-i-host-this-blog.html b/.og/gen/how-i-host-this-blog.html new file mode 100644 index 0000000..cad3471 --- /dev/null +++ b/.og/gen/how-i-host-this-blog.html @@ -0,0 +1,96 @@ + + + + + + + +
+
+
Mr Hoelee · blog.hoelee.com
+
+ +
case-studies · DevOps
+ +
How I Host This Blog: Astro,
Gitea Actions, and Self-Hosted CI/CD
+ +
+ +
$git push origin main
+
 Gitea Actions → unRaid runner → nginx → Cloudflare ✓
+
$git-as-CMS · zero-downtime deploy
+
+ + + + \ No newline at end of file diff --git a/.og/gen/how-i-host-this-blog.png b/.og/gen/how-i-host-this-blog.png new file mode 100644 index 0000000..cab45b3 Binary files /dev/null and b/.og/gen/how-i-host-this-blog.png differ diff --git a/public/og/authentik-major-upgrade-gotchas.png b/public/og/authentik-major-upgrade-gotchas.png new file mode 100644 index 0000000..8ce5d32 Binary files /dev/null and b/public/og/authentik-major-upgrade-gotchas.png differ diff --git a/public/og/hello-world.png b/public/og/hello-world.png new file mode 100644 index 0000000..98062f5 Binary files /dev/null and b/public/og/hello-world.png differ diff --git a/public/og/how-i-built-the-digikedai-telegram-bot.png b/public/og/how-i-built-the-digikedai-telegram-bot.png new file mode 100644 index 0000000..545f3b9 Binary files /dev/null and b/public/og/how-i-built-the-digikedai-telegram-bot.png differ diff --git a/public/og/how-i-host-this-blog.png b/public/og/how-i-host-this-blog.png new file mode 100644 index 0000000..cab45b3 Binary files /dev/null and b/public/og/how-i-host-this-blog.png differ diff --git a/scripts/og-gen/generate.mjs b/scripts/og-gen/generate.mjs index 0cc0427..f70bcd4 100644 --- a/scripts/og-gen/generate.mjs +++ b/scripts/og-gen/generate.mjs @@ -38,6 +38,26 @@ const TERMINALS = {
$docker exec monitor python check_notify.py
 telegram sendPhoto failed: 400 nginx/1.30.1
$fix = IPv6 · DNS · multipart→ delivered ✓
`, + + 'hello-world': ` +
$git init hoelee-blog · first commit
+
 technical writing · self-hosting · build log
+
$about → blog.hoelee.com
`, + + 'how-i-host-this-blog': ` +
$git push origin main
+
 Gitea Actions → unRaid runner → nginx → Cloudflare ✓
+
$git-as-CMS · zero-downtime deploy
`, + + 'how-i-built-the-digikedai-telegram-bot': ` +
$user:"does this course have a free trial?"
+
 bot → yes, here's your account ✓ (24/7, no human)
+
$grammY · LiteLLM · Cloudflare tunnel
`, + + 'authentik-major-upgrade-gotchas': ` +
$docker compose pull authentik-worker
+
 authorization_flow not found · SSO broken
+
$uptime: 2025.8 → 2026.8fixed ✓
`, }; const DEFAULT_TERMINAL = ` diff --git a/src/content/posts/authentik-major-upgrade-gotchas.md b/src/content/posts/authentik-major-upgrade-gotchas.md index 8d0d4fd..857c73c 100644 --- a/src/content/posts/authentik-major-upgrade-gotchas.md +++ b/src/content/posts/authentik-major-upgrade-gotchas.md @@ -4,6 +4,7 @@ description: "A year's worth of authentik major-version upgrade pain: storage mo pubDate: 2026-09-09 category: devops tags: [authentik, sso, docker, portainer, self-hosting, oidc, upgrade] +ogImage: /og/authentik-major-upgrade-gotchas.png --- I run authentik as the single sign-on gate in front of my self-hosted stack — diff --git a/src/content/posts/hello-world.md b/src/content/posts/hello-world.md index 580fd22..9f1f420 100644 --- a/src/content/posts/hello-world.md +++ b/src/content/posts/hello-world.md @@ -4,6 +4,7 @@ description: "What this blog is for: technical writing, self-hosting experience, pubDate: 2026-09-05 category: notes tags: [intro] +ogImage: /og/hello-world.png --- Welcome. This is where I write about what I build and learn — mostly diff --git a/src/content/posts/how-i-built-the-digikedai-telegram-bot.md b/src/content/posts/how-i-built-the-digikedai-telegram-bot.md index b6304fa..cf0c401 100644 --- a/src/content/posts/how-i-built-the-digikedai-telegram-bot.md +++ b/src/content/posts/how-i-built-the-digikedai-telegram-bot.md @@ -4,6 +4,7 @@ description: "A customer-support AI bot that answers questions and provisions fr pubDate: 2026-09-06 category: case-studies tags: [telegram, docker, cloudflare, litellm, typescript, ai] +ogImage: /og/how-i-built-the-digikedai-telegram-bot.png --- Digi Kedai sells digital products — online courses, ebooks, and templates — and diff --git a/src/content/posts/how-i-host-this-blog.md b/src/content/posts/how-i-host-this-blog.md index 8c1e19d..3e98cba 100644 --- a/src/content/posts/how-i-host-this-blog.md +++ b/src/content/posts/how-i-host-this-blog.md @@ -4,6 +4,7 @@ description: "A walkthrough of the end-to-end pipeline that builds and serves th pubDate: 2026-09-04 category: case-studies tags: [astro, gitea, ci-cd, self-hosting, docker, cloudflare] +ogImage: /og/how-i-host-this-blog.png --- This blog is itself a project I built to demonstrate the kind of work I do. diff --git a/src/content/posts/zh/authentik-major-upgrade-gotchas.md b/src/content/posts/zh/authentik-major-upgrade-gotchas.md index e85467c..69a3af4 100644 --- a/src/content/posts/zh/authentik-major-upgrade-gotchas.md +++ b/src/content/posts/zh/authentik-major-upgrade-gotchas.md @@ -4,6 +4,7 @@ description: "一年份的 authentik 大版本升级踩坑记录:存储挂载 pubDate: 2026-09-09 category: devops tags: [authentik, sso, docker, portainer, self-hosting, oidc, upgrade] +ogImage: /og/authentik-major-upgrade-gotchas.png --- 我把 authentik 当作自托管体系前面的单点登录闸门——邮箱、仪表盘、Synology diff --git a/src/content/posts/zh/how-i-built-the-digikedai-telegram-bot.md b/src/content/posts/zh/how-i-built-the-digikedai-telegram-bot.md index fda71bf..cbc67bc 100644 --- a/src/content/posts/zh/how-i-built-the-digikedai-telegram-bot.md +++ b/src/content/posts/zh/how-i-built-the-digikedai-telegram-bot.md @@ -4,6 +4,7 @@ description: "一个全天候解答顾客问题、并在 Telegram 和 WhatsApp pubDate: 2026-09-06 category: case-studies tags: [telegram, docker, cloudflare, litellm, typescript, ai] +ogImage: /og/how-i-built-the-digikedai-telegram-bot.png --- Digi Kedai 销售数字产品——在线课程、电子书、模板——每一单都会带来一连串同样的顾客问题:*「这门课有免费试看吗?」「我怎么拿到账号?」「我该买哪个套餐?」*。对一个人的生意来说,人工回复根本忙不过来。于是我打造了一个 AI 客服机器人,全天候解答这些问题,甚至能在无人介入的情况下自动发放免费试用账号。 diff --git a/src/content/posts/zh/how-i-host-this-blog.md b/src/content/posts/zh/how-i-host-this-blog.md index 8f9ffe1..f6c3ca5 100644 --- a/src/content/posts/zh/how-i-host-this-blog.md +++ b/src/content/posts/zh/how-i-host-this-blog.md @@ -4,6 +4,7 @@ description: "这篇文章完整拆解了这个网站背后的构建与部署管 pubDate: 2026-09-06 category: case-studies tags: [astro, gitea, ci-cd, self-hosting, docker, cloudflare] +ogImage: /og/how-i-host-this-blog.png --- 这个博客本身,就是我用来说明「我到底会做什么」的一个项目。下面是完整的