openclaw onboard·openclaw doctor로 경로가 정리된 편이라, 원격 Mac에서 게이트웨이를 띄운 뒤 Telegram·Slack으로 알림·CI 결과를 붙이는 일이 빈번합니다. 이 글은 개념 설명이 아니라 명령·설정 키·검증 단계 위주입니다. 연관 읽기: 게이트웨이 보안, 헬스·LaunchAgent, Git·미러 국경 간 풀 가속. 공개 고객 지원·도움말·홈은 로그인 없이 이용할 수 있습니다.
① 사전 점검: 버전·포트·로컬 바인딩 vs 리버스 프록시
Node는 2026년 기준 팀 표준으로 22 LTS 이상을 고정합니다. 설치 경로는 공식 인스톨러·npm i -g openclaw 등 조직 Runbook에 맞춰 하나만 택하세요.
node -v which openclaw openclaw doctor openclaw onboard --help
게이트웨이 listen.host가 127.0.0.1이면 외부 Webhook은 리버스 프록시(Caddy·nginx)로 TLS 종료 후 백엔드로 전달하는 패턴이 안전합니다. 공인 인터페이스에 직접 바인딩할 경우 방화벽·소스 IP 제한·강한 인증을 동시에 적용하세요. 공식 문서에 안내된 설치 경로로 CLI를 맞춘 뒤 openclaw onboard로 워크스페이스·게이트웨이 초기값을 생성하고, 이상 징후는 openclaw doctor 출력을 Runbook에 붙여 두면 재현이 빨라집니다.
# 예: 게이트웨이 포트(문서·openclaw.json 기준 값으로 교체) lsof -nP -iTCP:18765 -sTCP:LISTEN curl -sf -H "Authorization: Bearer $OPENCLAW_GATEWAY_TOKEN" \ http://127.0.0.1:18765/health
| 모드 | 점검 명령·설정 | 메모 |
|---|---|---|
| 본机 바인딩 | openclaw.json → gateway.listen.host = 127.0.0.1 | 프록시 뒤에 두기 쉬움. |
| 리버스 프록시 | 프록시 proxy_pass·read_timeout·실제 Upstream 포트 일치 | Webhook 본문이 잘리지 않게 타임아웃 정렬. |
| SSH 터널 | ssh -L 18765:127.0.0.1:18765 user@remote-mac | 임시 검증용; 상시 운영엔 프록시 권장. |
② Telegram 봇: 생성·토큰·환경 분리·최소 권한
BotFather로 봇을 만들고 HTTP API 토큰을 발급합니다. 토큰은 레포에 넣지 말고 전용 env(권한 chmod 600) 또는 시크릿 저장소에만 둡니다.
install -m 600 /dev/null ~/.config/openclaw/telegram.env # 예시 키 이름은 사용 중인 OpenClaw 채널 플러그인 문서에 맞게 조정 # TELEGRAM_BOT_TOKEN=... # TELEGRAM_DEFAULT_CHAT_ID=...
최소 권한 체크리스트: 그룹·채널에 넣을 때는 봇에게 필요한 명령만 허용하고, 관리자 권한은 주지 않습니다. Webhook을 쓸 경우 secret_token을 설정해 수신 시 X-Telegram-Bot-Api-Secret-Token 일치를 강제합니다.
- 설정 파일 후보:
openclaw.json내channels·telegram계열 블록(버전별 키명 상이) - 런타임 주입: launchd
EnvironmentVariables또는ProgramArguments전에source하는 래퍼 스크립트 - 검증: 봇으로 자기 자신에게
/start후 chat id 확인·로그에 토큰 미출력
③ Slack: Incoming Webhook vs 앱(Bot) 방식 비교
| 항목 | Incoming Webhook | Slack 앱·Bot 토큰 |
|---|---|---|
| 보안 면 | URL만 알면 POST 가능 → URL 유출 시 위험 | Signing Secret·OAuth 스코프로 축소 가능 |
| 감사·추적 | 채널 단위 고정 메시지 위주 | 앱 설치·토큰 범위가 워크스페이스 감사에 남기 쉬움 |
| 레이트 리밋 | 워크스페이스 정책에 종속, 버스트 시 429 | 동일; 큐·백오프를 게이트웨이 측에 둠 |
| 운영 난이도 | 가장 빠른 스모크 테스트 | 스코프 설계·재승인 필요 |
프로덕션 알림은 가능하면 Signing Secret 검증(X-Slack-Signature, X-Slack-Request-Timestamp)이 있는 앱 엔드포인트를 권장합니다. Incoming Webhook만 쓸 때는 URL을 시크릿 등급으로 취급하고 로그·티켓에 붙이지 마세요.
④ 단계별 재현: openclaw에서 첫 테스트 메시지까지
아래는 팀 Runbook에 붙여 넣기 좋은 최소 뼈대입니다. 실제 서브커맨드 이름은 설치된 CLI 버전에 맞게 조정하세요.
# 1) 원격 Mac에서 게이트웨이 사용자로 로그인
openclaw doctor
# 2) 채널용 env 준비(텔레그램·슬랙 각각)
chmod 600 ~/.config/openclaw/*.env
# 3) openclaw.json에 gateway.listen + channels.* 반영 후 기동
# (launchd plist 또는 터미널에서 포그라운드로 먼저 검증)
# 4) 로컬 헬스
curl -sf -H "Authorization: Bearer $OPENCLAW_GATEWAY_TOKEN" \
http://127.0.0.1:18765/health
# 5) 공인 Webhook 경로가 프록시 뒤로 도달하는지(예시 URL은 교체)
curl -v -X POST "https://gw.example.com/openclaw/hooks/telegram" \
-H "Content-Type: application/json" \
-d '{"ping":true}'
첫 메시지는 스테이징 채널·mute 알림으로 보내 잡음을 줄입니다. 성공 후에만 프로덕션 채널 ID로 바꿉니다. 프록시가 요청 본문 크기를 제한하면 대형 CI 아티팩트 링크가 잘리므로 client_max_body_size 등 상한을 게이트웨이 문서 권장치와 맞춥니다. OpenClaw 쪽에서 채널별 큐나 rate limit 키를 노출한다면 키 이름을 팀 위키에 고정해 두고, 장애 시 grep 한 번으로 설정 파일을 교차 확인할 수 있게 합니다.
⑤ FAQ: 수신 실패·리플레이·토큰 로테이션·CI 콜백
| 비교 축 | 자체 게이트웨이(원격 Mac) | 호스팅형·패널 일체 솔루션(개념) |
|---|---|---|
| 데이터 주권 | 토큰·로그가 우리 디스크 | 벤더 정책·리전에 종속 |
| 운영 부담 | launchd·프록시·패치 직접 | 업데이트·가용성 일부 위임 |
| Webhook 검증 | 직접 구현·미들웨어 선택 자유 | 플랫폼이 정한 헤더·경로 |
| 비용 모델 | Mac·대역만 | 좌석·메시지 과금 가능 |
메시지가 전혀 안 옵니다. lsof로 LISTEN 확인 → 프록시 오류 로그 → Telegram getUpdates(폴링 잔존 시)·Slack Delivery 로그 순으로 좁힙니다. 방화벽에서 업스트림이 ESTABLISHED만 허용되는지도 봅니다.
리플레이 공격. Telegram secret_token 헤더 검증, Slack 서명·타임스탬프 윈도(예: 5분) 거부, Idempotency-Key 헤더를 CI에서 한 번만 소비하도록 게이트웨이에 캐시합니다.
토큰 로테이션. 새 토큰 발급 → env·plist 동시 갱신 → launchctl kickstart 또는 서비스 재시작 → 스테이징 채널로 테스트 → 구 토큰 폐기.
CI 콜백. GitHub Actions·GitLab 등에서는 시크릿 이름을 OPENCLAW_GATEWAY_TOKEN과 채널 토큰으로 분리하고, curl·jq 출력에 URL이 섞이지 않게 -sS·마스킹 스텝을 둡니다. 재시도 정책은 슬랙 429·텔레그램 429 응답에 지수 백오프를 겁니다.
요약 및 원격 Mac 노드 선택
OpenClaw 게이트웨이는 Node·openclaw doctor로 기준선을 맞춘 뒤, 127.0.0.1 + 리버스 프록시·Webhook 시크릿 검증·채널별 최소 권한만으로도 운영 품질이 크게 달라집니다. 알림은 스테이징에서 먼저 끝내고 프로덕션 채널로 승격하세요.
안정적인 출구·전용 Apple Silicon·SSH 브레이크 글래스가 있는 원격 Mac을 쓰면 동일 Runbook을 여러 프로젝트에 재사용하기 쉽습니다. 구매·요금·OpenClaw 블로그 모음·Docker·CI 배포 글을 이어서 보세요.