2026 OpenClaw MeshMac 실전: Linear Webhook으로 공유 빌드 브로드캐스트·요약 회신
Linear 트리거를 게이트웨이 한 곳에서 서명 검증한 뒤 공유 큐·임의 MeshMac 노드로 빌드하고, 채널 브로드캐스트와 (선택) 이슈 요약까지 한 흐름으로 묶는 최소 단계입니다. 본문은 약 800–1500자 분량으로 압축했습니다.
Mac마다 웹훅을 두면 시크릿·감사·재시도가 N배로 불어납니다. 게이트웨이 단일 인그레스 + 큐 뒤 실행이면 노드 교체·LB 드레인 시에도 Linear URL을 바꿀 필요가 없습니다. 심화는 페일오버·메시 협업을 참고하세요.
| 항목 | Mesh | 노드별 URL |
|---|---|---|
| 확장 | 워커·큐만 | URL 재설정 |
| 장애 | 드레인 | 수동 DNS |
게이트웨이 설치 및 헬스 체크
Linear POST는 TLS·본문 상한·타임아웃이 있는 엣지(게이트웨이)에만 두고, 빌더 재부팅과 무관하게 URL을 고정합니다.
- 1단계 — 클러스터 가이드로 게이트웨이에 OpenClaw,
OPENCLAW_CONFIG_ROOT, 재기동 유지 프로세스를 둡니다. - 2단계 —
https://…/hooks/linear만 프록시에 매핑합니다. TLS는 Nginx·Caddy 매트릭스. - 3단계 —
doctor·/health(헬스 프로브)로 레디니스를 고정합니다. - 4단계 — 동시성은 rate limit 가이드에 맞추고, 패턴은 공유 빌드 알림·OpenClaw 허브를 참고합니다.
Linear 서명 검증
원본 바디로 HMAC → 그다음 JSON 파싱. 먼저 파싱하면 Linear-Signature가 깨집니다.
- 1단계 — Signing Secret을 0440·최소 권한 파일(예:
…/linear/webhook_hmac)에만 둡니다. - 2단계 — Linear 문서대로 HMAC-SHA256, 헤더 상수 시간 비교, 가능하면 타임스탬프 창으로 리플레이 완화.
- 3단계 — 실패 시
401, 시크릿은 로그 금지(Teams 웹훅과 동일). - 4단계 —
200은 큐에 durable enqueue 후에만. 멱등·순서는 큐 동기화.
핸들러는 ack 수준으로 짧게, 긴 빌드는 워커가 처리합니다.
공유 빌드 스크립트와 연동
페이로드를 이슈·ref·멱등 키(delivery id 또는 이슈+전환+분 창)로 정규화하면 어느 노드든 동일 스크립트를 돌리고 웹훅은 하나로 유지됩니다.
실패 재시도 및 알림
인바운드(Linear→큐)와 아웃바운드(채널·Linear API) 재시도 규칙을 분리합니다.
FAQ
- curl은 되는데 운영만 서명 실패
- WAF·압축·파서 순서 의심. 원본 바이트 캡처로 재현하세요.
- 칸반을 빠르게 옮기면 빌드 중복
- 디바운스 또는 라벨 게이트. 멱등 키에 컬럼·시간 버킷 포함.
- 빌드 성공인데 코멘트 없음
- 키 권한·
issueId·GraphQL 오류 확인. - Linear 호출은 게이트웨이만?
- 권장. 빌더는 워커로 교체하고 노드 추가 시 큐만 키우면 됩니다.
한 줄 정리
게이트웨이·HMAC·멱등 큐·단일 브로드캐스트·요약 다섯 축이면 Mesh 확장 시 Linear를 다시 묶지 않습니다. 홈·블로그·OpenClaw 허브·도움말은 공개 페이지입니다.