把 GitHub Webhook 接到 OpenClaw 風格閘道,常見落差是公網路徑與驗證語意:localhost 可過、正式遞送 401;簽章用到被改寫的 body;同步工作過長逾時。順序可依 SSH 複現。見 OpenClaw 遠端 Mac 部署實操、GitHub Actions 多機協作手冊。
一、公網回呼:TLS、Host、反代
GitHub 只打公開 URL;本機 curl 127.0.0.1 成功不代表邊界正確。核對 DNS、TLS 鏈/SNI、反代 X-Forwarded-Proto/Host。邊緣 零信任/Basic Auth 應納入遞送設計——常見 401 來源。
POST 重放,路徑/標頭與 GitHub 一致;勿只用 loopback。二、簽章:X-Hub-Signature-256 與 raw body
GitHub 以 Secret 對原始 body做 HMAC-SHA256。中介層先解析 JSON 再序列化會讓簽章失敗。驗證層請讀位元組級內容並時間常數比對;Webhook 路由獨立於一般表單。
三、時間戳與重送
時間窗檢查需 NTP 正常;偏移數分鐘即誤判過期。GitHub 可能重送,請以 delivery id 或事件指紋做幕等,容忍窗納入冷啟動。
四、401 收斂
核對 URL 尾斜線、Secret 版本、邊緣 Basic Auth,以及驗證是否早於 raw body。公網以最小 POST 重放;log 輸出失敗原因枚舉(簽章/時間戳/權杖)。
五、逾時與紅色遞送
單次遞送有逾時上限;同步重活改佇列並快回 2xx,或拆分收事件與工作流。冷啟動與連線池納入 SLO;launchd 常駐時留意健康檢查與重啟尾延遲。
六、工單檢查清單
- 公網
curl -v與遞送狀態碼一致。 - raw body 重算 HMAC,對齊
X-Hub-Signature-256。 - NTP、容忍窗、重送幕等鍵就緒。
- 401 能對應中介層或 Secret 版本;處理端非阻塞。
Webhook 閘道與 Mac mini
TLS、簽章、時間戳抖動會放大成遞送噪音。Mac mini 在 Apple Silicon 上具可預測效能與低待機功耗,適合 7×24 承接閘道;原生 Unix 讓 curl/openssl 驗證可在 SSH 完成;macOS 的 Gatekeeper、SIP、FileVault 有助收斂攻擊面。
若要把公網回呼跑在更安靜、長期成本更低的硬體,Mac mini M4 是兼顧體積與餘裕的起點;現在就把獨享遠端 Mac 納入評估,開啟 Macstripe 首頁 比對區域與機型。