대상: 원격 Mac에서 OpenClaw 게이트웨이를 자체 호스팅하는 개발자·소규모 운영. 키워드: OpenClaw, gateway, 원격 Mac, 헬스체크, 데몬(LaunchAgent). H2는 사전 조건·환경 변수, 기동·바인딩, 헬스 템플릿, FAQ. CI 프리플라이트에 헬스를 걸면 의존성 사전 풀과 본빌드를 분리한다. 하드닝은 보안 실전, 사전 풀 자동화는 ClawHub·CI 단계, 노드 비교는 요금.
2026 자체 호스팅 게이트웨이에서 자주 터지는 리스크
0.0.0.0 바인딩은 공인 노출 리스크가 크니 127.0.0.1·프록시·터널이 기본입니다. 토큰은 chmod 600·launchd 주입으로만 쓰고 로그에 남기지 않습니다. 업데이트는 스테이징·백업·롤백을 짧게라도 적어 두면 데몬 재시작 루프를 줄입니다. 의존성 풀·빌드 스크립트는 게이트웨이가 살아 있을 때만 돌게 프리플라이트를 두는 편이 안전합니다.
사전 조건·환경 변수
Node는 문서 버전으로 고정하고 which node가 LaunchAgent와 같게 맞춥니다. OPENCLAW_GATEWAY_TOKEN·포트·로그는 plist EnvironmentVariables에만 두고, WorkingDirectory는 workspace 루트, StandardOutPath·StandardErrorPath로 tail 지점을 고정합니다.
게이트웨이 기동·바인딩 전략
포그라운드로 한 번 띄운 뒤 동일 인자를 ProgramArguments에 옮깁니다.
| 바인딩 | 장점 | 주의 |
|---|---|---|
| 127.0.0.1 | 로컬·터널·프록시와 맞물리기 쉬움 | 원격에서 직접 붙으려면 터널·프록시 필수 |
| 사설 NIC | 팀 내부망만 노출 | 라우팅·SG 규칙과 포트 중복 점검 |
0.0.0.0 |
접속은 단순 | 인증·TLS·ACL 없으면 고위험 |
순찰(헬스체크) 스크립트 템플릿
문서 경로·Bearer로 curl HTTP 코드를 보면 프리플라이트에서 본빌드 전에 걸러집니다.
#!/usr/bin/env bash
set -euo pipefail
URL="${OPENCLAW_HEALTH_URL:-http://127.0.0.1:포트/경로}"
TOK="${OPENCLAW_GATEWAY_TOKEN:?}"
c=$(curl -sS -o /dev/null -w "%{http_code}" -H "Authorization: Bearer $TOK" "$URL"||true)
[[ "$c" =~ ^2 ]]||exit 1
HowTo 재현 순서:
- plist와 동일 Node·경로로 workspace에서 게이트웨이를 수동 기동·검증.
RunAtLoad·KeepAlive·ThrottleInterval넣고launchctl bootstrap gui/$UID.kickstart -k gui/$UID/라벨로 재시작 시험.- 이 셸을
StartInterval또는 CI 첫 단계에 연결·업데이트 시 백업 후ProgramArguments만 교체.
로그 위치와 최소화 트러블슈트 체크리스트
5분 안에 보는 순서
StandardErrorPath꼬리·lsof -nP -iTCP포트.- plist와 셸의
PATH·env·curl대상이 바인딩과 같은지.
흔한 오류 FAQ
Q. 즉시 종료? Node·WorkingDirectory·토큰 권한·ThrottleInterval.
Q. 헬스 401? 토큰·헤더·설정 한 글자 diff. 업데이트 후엔 헬스로 게이트웨이부터 가른 뒤 사전 풀 로그. 고객 지원(로그인 불필요).