@KanikaBK (275 좋아요, 2.58만 조회)가 직설적으로 말했어요: “이번 달에만 2,000명 이상이 API 키, 파일, 명령어를 노출하고 있다.”
OpenClaw 기본값이 0.0.0.0:18789에 바인딩돼요. 모든 네트워크 인터페이스, 공용 인터넷 포함이에요. SecurityScorecard가 13만 5천 개 이상 노출된 인스턴스를 발견했어요. Docker가 이걸 고쳐줘요.
이 가이드는 Docker를 한 번도 만져본 적 없어도 10분 안에 보안된 OpenClaw 에이전트를 돌릴 수 있게 해줘요.
왜 Docker인가 (베어메탈 말고)
세 가지 이유예요:
- 격리. 에이전트가 컨테이너 안에서 돌아가요. 폭주해도 호스트 시스템에 접근 못 해요.
- 보안 기본값. Docker로 capability 드롭, 네트워크 제한, 읽기 전용 파일시스템 강제가 가능해요.
- 재현성. 어떤 머신이든 같은 셋업. “내 맥에서는 되는데” 문제 없어요.
@johann_sath (251 좋아요, 1.4만 조회)가 핵심을 짚었어요: “메인 에이전트 = 루트 컨테이너. 서브에이전트 = 격리된 컨테이너. 대부분 1일 차에 봇한테 풀 액세스를 줘요.” 대부분이 되지 마세요.
준비물
세 가지만 있으면 돼요:
- Docker Desktop (Mac/Windows) 또는 Docker Engine (Linux)
- LLM API 키 (Claude, GPT, Gemini, 또는 로컬 모델)
- 10분
Windows 사용자: WSL2 Ubuntu를 쓰세요. @BerzafTe가 확인했어요: “CMD 안 돼요. Git Bash 안 돼요. WSL2 Ubuntu가 유일한 방법이에요.”
1단계: 프로젝트 디렉토리 생성
mkdir ~/openclaw && cd ~/openclaw
2단계: docker-compose.yml 생성
version: '3.8'
services:
openclaw:
image: openclaw/openclaw:latest
container_name: openclaw
restart: unless-stopped
# 보안: localhost에만 바인딩 — 절대 0.0.0.0 안 됨
ports:
- "127.0.0.1:18789:18789"
# 보안: 모든 capability 드롭, 비루트 실행
user: "1000:1000"
cap_drop:
- ALL
security_opt:
- no-new-privileges:true
# 보안: 읽기 전용 파일시스템 + 특정 경로만 쓰기 허용
read_only: true
tmpfs:
- /tmp
# 보안: 네트워크 접근 제한
# 에이전트가 인터넷이 필요하면 (API 호출용) 이 부분 제거
# networks:
# - openclaw-net
volumes:
- ./data:/data
- ./config:/config:ro
environment:
- GATEWAY_HOST=127.0.0.1
- GATEWAY_PORT=18789
- GATEWAY_TOKEN=${GATEWAY_TOKEN}
env_file:
- .env
3단계: .env 파일 생성
# 강력한 게이트웨이 토큰 생성
GATEWAY_TOKEN=$(openssl rand -hex 32)
echo "GATEWAY_TOKEN=$GATEWAY_TOKEN" > .env
# LLM API 키 추가
echo "ANTHROPIC_API_KEY=sk-ant-..." >> .env
# 또는: echo "OPENAI_API_KEY=sk-..." >> .env
# 퍼미션 잠금
chmod 600 .env
중요: .env를 git에 절대 커밋하지 마세요. 즉시 .gitignore에 추가하세요.
4단계: 실행
docker compose up -d
실행 확인:
docker logs openclaw --tail 20
게이트웨이가 127.0.0.1:18789에서 시작되는 게 보여야 해요. 0.0.0.0이라고 뜨면 — 멈추고, 돌아가서 바인딩 주소를 고치세요.
5단계: 보안 확인
# 인터넷에 노출 안 됐는지 확인
curl http://localhost:18789/health # 되어야 함
curl http://내_공인_IP:18789/health # 안 되어야 함 (타임아웃)
5단계 보안 하드닝
@johann_sath (251 좋아요)와 @LyashchMaxim이 추천하는 설정이에요. 어떤 레이어도 건너뛰지 마세요.
레이어 1: Localhost 바인딩
위 compose 파일에서 이미 적용됐어요. 가장 중요한 보안 단계. 공격 표면의 90%를 차단해요.
ports:
- "127.0.0.1:18789:18789" # "18789:18789" 절대 안 됨
레이어 2: 비루트 실행
user: "1000:1000"
cap_drop:
- ALL
security_opt:
- no-new-privileges:true
에이전트가 탈취돼도 권한 상승을 막아요.
레이어 3: 읽기 전용 파일시스템
read_only: true
tmpfs:
- /tmp
volumes:
- ./data:/data # 유일한 쓰기 가능 경로
- ./config:/config:ro # 설정은 읽기 전용
에이전트가 /data와 /tmp에만 쓸 수 있어요. 나머지는 전부 잠김.
레이어 4: 네트워크 제한
에이전트가 API 하나하고만 통신하면:
# docker-compose.yml에 추가:
networks:
openclaw-net:
driver: bridge
internal: true # 인터넷 접근 차단
# 특정 아웃바운드는 iptables나 프록시로 허용
대부분의 경우 더 간단한 방법: 방화벽으로 포트 18789의 외부 접근을 차단하세요.
# UFW (Ubuntu)
sudo ufw deny in 18789
sudo ufw allow from 127.0.0.1 to any port 18789
레이어 5: 강력한 게이트웨이 토큰
.env의 토큰이 인증이에요. 길고 랜덤하게 만드세요:
# 64자 hex 토큰
openssl rand -hex 32
매월 변경하세요. 환경 간에 재사용하지 마세요.
흔한 에러 & 해결법
| 에러 | 원인 | 해결 |
|---|---|---|
| 포트 18789 이미 사용 중 | 다른 서비스나 기존 컨테이너 | docker stop openclaw && docker rm openclaw |
| /data 퍼미션 거부 | 볼륨 소유권 불일치 | sudo chown -R 1000:1000 ./data |
| Windows에서 빌드 실패 | WSL2 안 쓰고 있음 | WSL2 Ubuntu 설치, WSL 안에서 전부 실행 |
| API 키 안 먹힘 | .env 로드 안 됨 | docker compose config로 키 확인 |
| 에이전트가 API에 접속 못 함 | 네트워크 너무 제한적 | 네트워크 설정에서 internal: true 제거 |
| CVE-2026-24763 경고 | Docker PATH 인젝션 | v2026.3.1+로 업데이트 (docker pull openclaw/openclaw:latest) |
@moritzkremb (1.1K 좋아요, 26.8만 조회)가 “설치 후 바로 해야 할 10가지” 가이드를 올렸는데, 커뮤니티에서 “포스트인스톨 바이블"이라 불려요. 가장 큰 고통 포인트: Windows 호환성, 볼륨 퍼미션, 게이트웨이 토큰 잠금 잊어버리기.
비용
| 셋업 | 월 비용 |
|---|---|
| 집 컴퓨터 (Mac/Linux) | 0원 (전기세만) |
| Oracle Cloud 무료 티어 | 0원 (ARM 인스턴스, 24GB RAM) |
| Hetzner CAX11 | ~$4.49/월 (ARM, 4GB RAM) |
| DigitalOcean 드롭렛 | $6/월 (1GB RAM) |
| API 비용 | $5-30/월 (사용량에 따라) |
총 비용: 24/7 AI 에이전트에 월 0~35달러. Perplexity Computer $200/월이나 Claude Max $200/월이랑 비교하면요.
한국에서는 Oracle Cloud 무료 티어가 특히 인기 있어요. 서울 리전이 있어서 레이턴시도 괜찮고, 24GB RAM이면 OpenClaw 돌리기에 충분하거든요. 카페에서 개인 서버 구축하는 느낌이에요 ㅋㅋ
참고: Hetzner가 2026년 4월 1일부터 가격 인상해요 (CAX11: $3.29 → $4.49). 그 전에 잠그세요.
설치 후: 첫 작업
에이전트가 돌아가면 간단한 것부터 시작하세요:
- 읽기 전용 작업부터. “이 파일 요약해줘.” “다운로드 폴더 목록 보여줘.” 쓰기 권한 주기 전에 신뢰를 쌓으세요.
- skills-vetter 스킬 설치. ClawHub 스킬 추가하기 전에 안전하게 검증하세요.
- SOUL.md 규칙 설정. “확인 없이 이메일 절대 보내지 마. 파일 절대 삭제하지 마. /data 밖에 절대 접근하지 마.”
- 보안 감사 실행.
openclaw security audit --deep— 매주 습관으로, 또는 cron job으로 설정하세요.
원격 접근 (필요한 경우)
포트 18789을 인터넷에 노출하지 마세요. 대신:
옵션 A: Tailscale (추천)
# 서버에 Tailscale 설치
curl -fsSL https://tailscale.com/install.sh | sh
tailscale up
# Tailscale 네트워크 내 어디서든 접근
옵션 B: SSH 터널
# 내 노트북에서
ssh -L 18789:localhost:18789 내-서버
# 이제 노트북의 localhost:18789 → 서버
둘 다 게이트웨이를 공용 인터넷에서 떼어놓으면서 원격 접근을 줘요.
더 배우기
무료 강좌:
- OpenClaw 입문 — 설치부터 일상 워크플로까지
- AI 에이전트 보안 — 위협 모델과 퍼미션 설계
- 사이버보안 기초 — AI 사용자를 위한 보안 기초
관련 글:
- OpenClaw 안전한가요? 보안 위험 5가지 — CVE, 폭주 에이전트, 전체 하드닝 체크리스트
- OpenClaw 추천 스킬 15개 — 검증된 스킬과 설치 명령어
- Moltbot: 깃허브 10만 스타의 비밀 — OpenClaw의 전신
출처: OpenClaw Docker 문서, Docker 블로그, SecurityScorecard, X/Twitter 커뮤니티 리서치 via Grok (143 소스). Docker 설정 2026년 3월 22일 검증.