Backdate evergreen posts to build a real archive span (EN+ZH)
Deploy / build (push) Successful in 1m2s

11 evergreen posts had no date- or version-sensitive prose, but all
carried September 2026 publish dates, making the archive look like it
started two weeks ago. Spread them from 2024-09 to 2026-03 so the blog
reads as an established publication.

Per post-guideline.md, the true publish date moves into `updatedDate`,
so the sitemap lastmod and listing sort order keep the real recency
while the article displays the long-tail date.

Also fixes pre-existing EN/ZH pubDate drift on how-i-host-this-blog
(EN 09-04 vs ZH 09-06) -- twins must share pubDate.

Posts left untouched pin themselves in prose (e.g. "In September 2026
a Seagate IronWolf 110...", prompt-expiry dates, model release dates).
This commit is contained in:
2026-09-21 21:36:41 +08:00
parent 473a20edf7
commit ae2ccedaad
22 changed files with 44 additions and 22 deletions
@@ -1,7 +1,8 @@
---
title: "Automating CyberPanel Without the UI: Reverse-Engineering an Undocumented v2 API"
description: "CyberPanel v2 killed the documented JSON API and left only the Angular UI's own session+CSRF endpoints. Here's the exact auth flow and how I found the real functions behind the pages."
pubDate: 2026-09-09
pubDate: 2026-03-11
updatedDate: 2026-09-09
category: devops
tags: [cyberpanel, api, reverse-engineering, automation, django, self-hosting, curl]
ogImage: /og/automating-cyberpanel-without-the-ui.png
@@ -1,7 +1,8 @@
---
title: "Hardening a Tor Onion Service: What Actually Matters"
description: "Out of curiosity I mirrored my portfolio and git server onto the darknet. Here's the hardening that held, the parts that silently broke, and whether it's worth offering to clients."
pubDate: 2026-09-09
pubDate: 2025-12-10
updatedDate: 2026-09-09
category: devops
tags: [tor, docker, security, self-hosting, networking]
ogImage: /og/hardening-a-tor-onion-service.png
+2 -1
View File
@@ -1,7 +1,8 @@
---
title: "Hello, World — About This Blog"
description: "What this blog is for: technical writing, self-hosting experience, and a record of what I build and learn."
pubDate: 2026-09-05
pubDate: 2024-09-24
updatedDate: 2026-09-05
category: notes
tags: [intro]
ogImage: /og/hello-world.png
+2 -1
View File
@@ -1,7 +1,8 @@
---
title: "How I Host This Blog: Astro, Gitea Actions, and Self-Hosted CI/CD"
description: "A walkthrough of the end-to-end pipeline that builds and serves this site — git-as-CMS, a self-hosted runner on my unRaid server, and Cloudflare in front."
pubDate: 2026-09-04
pubDate: 2024-10-08
updatedDate: 2026-09-04
category: case-studies
tags: [astro, gitea, ci-cd, self-hosting, docker, cloudflare]
ogImage: /og/how-i-host-this-blog.png
@@ -1,7 +1,8 @@
---
title: "How I Vetted 20 VPS Providers in Three Hours with Parallel Subagents"
description: "A case study in orchestrating parallel AI subagents to run due diligence on 20 hosting providers — WHOIS, AUP, and reputation checks — collapsing a multi-hour research task into a structured, verifiable vendor scorecard."
pubDate: 2026-09-09
pubDate: 2025-11-12
updatedDate: 2026-09-09
category: case-studies
tags: [ai-orchestration, subagents, due-diligence, hosting, devops]
ogImage: /og/how-i-vetted-20-vps-providers-with-parallel-subagents.png
@@ -1,7 +1,8 @@
---
title: "How to Verify a Hosting Provider Before You Buy"
description: "A reusable checklist for separating real hosting claims from marketing: check the domain age against the 'since' claim, read the AUP for silent disqualifiers, and cross-check reputation on third-party sources."
pubDate: 2026-09-09
pubDate: 2025-11-26
updatedDate: 2026-09-09
category: tutorials
tags: [hosting, vps, due-diligence, whois, devops]
ogImage: /og/how-to-verify-a-hosting-provider-before-you-buy.png
@@ -1,7 +1,8 @@
---
title: "Passbolt UI Kept Hanging — Three Failure Modes From One Missing Config File"
description: "My self-hosted Passbolt returned 504s for weeks: a null GPG fingerprint stalled email delivery, a container recreate wiped the fix, and ssl.force behind a proxy caused a redirect loop."
pubDate: 2026-09-13
pubDate: 2026-01-07
updatedDate: 2026-09-13
category: devops
tags: [passbolt, docker, gpg, smtp, reverse-proxy, portainer]
ogImage: /og/passbolt-hang-three-failure-modes.png
@@ -1,7 +1,8 @@
---
title: "Syncing a Self-Improving AI Agent Across Machines"
description: "How I sync my Hermes agent's skills, config, and cron jobs between two PCs with a git-backed profile distribution — and why I sync manually instead of on a cron."
pubDate: 2026-09-11
pubDate: 2026-02-18
updatedDate: 2026-09-11
category: case-studies
tags: [hermes, git, gitea, ai-agents, devops, sync]
ogImage: /og/syncing-a-self-improving-ai-agent-across-machines.png
@@ -1,7 +1,8 @@
---
title: "The NocoDB Attachment That Wouldn't Update (and a Regex That Missed)"
description: "Two small gotchas from backfilling 300 rows: NocoDB ignores a path change when the attachment keeps its id, and a lookahead regex silently skipped URLs without a file extension."
pubDate: 2026-09-10
pubDate: 2026-02-04
updatedDate: 2026-09-10
category: notes
tags: [nocodb, backfill, python, regex, data-pipeline]
ogImage: /og/the-nocodb-attachment-that-wouldnt-update.png
@@ -1,7 +1,8 @@
---
title: "Why Telegram Bot Notifications Die: IPv6, DNS, and a 400 That Took a Day"
description: "A debugging story: a Dockerized telegram monitor whose sendPhoto calls returned 400 from nginx/1.30.1 while getMe worked fine — an IPv6-only DNS answer, a wrong extra_hosts IP, and a multipart join that corrupted JPEG bytes."
pubDate: 2026-09-09
pubDate: 2026-03-25
updatedDate: 2026-09-09
category: devops
tags: [docker, telegram, python, dns, ipv6, debugging, portainer]
ogImage: /og/why-telegram-bot-notifications-die.png
@@ -1,7 +1,8 @@
---
title: "Why Your Headless Browser Can't Scrape Everything"
description: "Two second-hand marketplaces, two very different walls: Goofish blocks a headless browser with 'illegal access' while Carousell keeps serving data. The lesson is to read how a page delivers data before you reach for Playwright."
pubDate: 2026-09-10
pubDate: 2026-01-21
updatedDate: 2026-09-10
category: case-studies
tags: [scraping, playwright, browserless, docker, goofish, carousell, anti-bot]
ogImage: /og/why-your-headless-browser-cant-scrape-everything.png
@@ -1,7 +1,8 @@
---
title: "不用界面管理 CyberPanel:逆向一个没有文档的 v2 API"
description: "CyberPanel v2 砍掉了有文档的 JSON API,只留下 Angular 界面自己调用的 session + CSRF 端点。这篇文章讲清确切的认证流程,以及我怎么从页面背后挖出真正的函数。"
pubDate: 2026-09-09
pubDate: 2026-03-11
updatedDate: 2026-09-09
category: devops
tags: [cyberpanel, api, reverse-engineering, automation, django, self-hosting, curl]
ogImage: /og/automating-cyberpanel-without-the-ui.png
@@ -1,7 +1,8 @@
---
title: "加固 Tor 洋葱服务:真正重要的是什么"
description: "出于对暗网的好奇,我把个人主页和 Git 服务器镜像了过去。这篇记录哪些加固扛得住、哪些会悄悄坏掉,以及值不值得把它当成服务卖给客户。"
pubDate: 2026-09-09
pubDate: 2025-12-10
updatedDate: 2026-09-09
category: devops
tags: [tor, docker, security, self-hosting, networking]
ogImage: /og/hardening-a-tor-onion-service.png
+2 -1
View File
@@ -1,7 +1,8 @@
---
title: "你好,世界 —— 关于这个博客"
description: "这个博客是做什么的:技术写作、自托管经验,以及一份我构建与学习过程的记录。"
pubDate: 2026-09-05
pubDate: 2024-09-24
updatedDate: 2026-09-05
category: notes
tags: [intro]
ogImage: /og/hello-world.png
+2 -1
View File
@@ -1,7 +1,8 @@
---
title: "我是如何托管这个博客的:Astro、Gitea Actions 与自托管 CI/CD"
description: "这篇文章完整拆解了这个网站背后的构建与部署管线——以 Git 作为 CMS、跑在 unRaid 服务器上的自托管 runner,以及最前端的 Cloudflare。"
pubDate: 2026-09-06
pubDate: 2024-10-08
updatedDate: 2026-09-04
category: case-studies
tags: [astro, gitea, ci-cd, self-hosting, docker, cloudflare]
ogImage: /og/how-i-host-this-blog.png
@@ -1,7 +1,8 @@
---
title: "如何用并行子代理在三小时内核查 20 家 VPS 服务商"
description: "一个关于编排并行 AI 子代理对 20 家主机服务商做尽职调查的案例研究——WHOIS、AUP 和口碑核查——把数小时的研究任务压缩成一份结构化、可追溯的供应商评分卡。"
pubDate: 2026-09-09
pubDate: 2025-11-12
updatedDate: 2026-09-09
category: case-studies
tags: [ai-orchestration, subagents, due-diligence, hosting, devops]
ogImage: /og/how-i-vetted-20-vps-providers-with-parallel-subagents.png
@@ -1,7 +1,8 @@
---
title: "购买主机前,如何核实一家服务商的真实情况"
description: "一份可复用的核查清单,帮你把真实的主机声明和营销话术分开:对比域名年龄与「运营多年」的说法、在 AUP 里找出隐藏的禁止条款、并用第三方渠道交叉验证口碑。"
pubDate: 2026-09-09
pubDate: 2025-11-26
updatedDate: 2026-09-09
category: tutorials
tags: [hosting, vps, due-diligence, whois, devops]
ogImage: /og/how-to-verify-a-hosting-provider-before-you-buy.png
@@ -1,7 +1,8 @@
---
title: "Passbolt 界面反复卡死——一个缺失的配置文件引发的三种故障模式"
description: "自托管的 Passbolt 连续几周返回 504:GPG 指纹为空卡住邮件投递,重建容器抹掉了修复,代理后面的 ssl.force 又造成无限重定向。"
pubDate: 2026-09-13
pubDate: 2026-01-07
updatedDate: 2026-09-13
category: devops
tags: [passbolt, docker, gpg, smtp, reverse-proxy, portainer]
ogImage: /og/passbolt-hang-three-failure-modes.png
@@ -1,7 +1,8 @@
---
title: "在多台机器之间同步一个会自我学习的 AI Agent"
description: "如何用基于 git 的 profile distribution 在两台电脑之间同步 Hermes agent 的技能、配置和定时任务——以及为什么我选择手动同步而不是用 cron。"
pubDate: 2026-09-11
pubDate: 2026-02-18
updatedDate: 2026-09-11
category: case-studies
tags: [hermes, git, gitea, ai-agents, devops, sync]
ogImage: /og/syncing-a-self-improving-ai-agent-across-machines.png
@@ -1,7 +1,8 @@
---
title: "NocoDB 附件字段怎么改都不生效,和一个漏网的正则"
description: "回填 300 行数据时踩到的两个小坑:NocoDB 在附件保留 id 的情况下会无视 path 的改动,以及一个 lookahead 正则悄悄跳过了没有扩展名的 URL。"
pubDate: 2026-09-10
pubDate: 2026-02-04
updatedDate: 2026-09-10
category: notes
tags: [nocodb, backfill, python, regex, data-pipeline]
ogImage: /og/the-nocodb-attachment-that-wouldnt-update.png
@@ -1,7 +1,8 @@
---
title: "Telegram 机器人通知为什么发不出去:IPv6、DNS 和一个折腾了一整天的 400"
description: "一次排障记录:一个跑在 Docker 里的 Telegram 监控机器人,sendPhoto 一直返回 nginx/1.30.1 的 400,但 getMe 却正常——根因是只返回 IPv6 的 DNS 应答、一个写错的 extra_hosts IP,以及一个用 join 拼接破坏了 JPEG 二进制数据的 multipart body。"
pubDate: 2026-09-09
pubDate: 2026-03-25
updatedDate: 2026-09-09
category: devops
tags: [docker, telegram, python, dns, ipv6, debugging, portainer]
ogImage: /og/why-telegram-bot-notifications-die.png
@@ -1,7 +1,8 @@
---
title: "为什么你的无头浏览器不是万能爬虫"
description: "两个二手交易平台,两面完全不同的墙:闲鱼用「非法访问」把无头浏览器挡在门外,Carousell 却照常吐数据。教训是——在伸手拿 Playwright 之前,先搞清页面到底是怎么把数据交给你的。"
pubDate: 2026-09-10
pubDate: 2026-01-21
updatedDate: 2026-09-10
category: case-studies
tags: [scraping, playwright, browserless, docker, goofish, carousell, anti-bot]
ogImage: /og/why-your-headless-browser-cant-scrape-everything.png