안전한 설치 (이 방법만 쓰세요)
Docker 격리로 OpenClaw을 안전하게 설치하세요. 알려진 취약점으로부터 컴퓨터를 보호하는 보안 강화 단계별 안내.
🔄 Quick Recall: 이전 레슨에서 135,000개 이상의 OpenClaw 인스턴스가 인터넷에 노출됐다고 했어요. 이론적 위험이 아니에요 — 기본 설치 방식 때문에 실제로 일어난 일이에요.
무슨 일이 있었냐면: OpenClaw의 기본 설정이 0.0.0.0:18789에 바인딩돼요. 쉽게 말하면 “어떤 네트워크에서든 나에게 연결하세요"라는 뜻이에요. 사람들이 빠른 시작 가이드를 따라하고, 이 설정을 바꾸지 않아서, 자신의 AI 에이전트 — 그리고 이메일, 캘린더, 파일 — 을 인터넷 전체에 공개했어요.
이 레슨은 당신이 135,001번째가 되지 않기 위해 존재해요.
이 레슨을 마치면:
- 컴퓨터에 Docker를 설치할 수 있어요
- 안전한 Docker 컨테이너 안에서 OpenClaw을 실행할 수 있어요
- 가장 흔한 공격 벡터를 차단하는 보안 강화를 적용할 수 있어요
Docker란? (60초 버전)
집에 방을 세놓는다고 상상해보세요. 두 가지 옵션이 있어요:
옵션 A: 오픈 액세스. 세입자가 침실에 들어가고, 금고를 열고, 우편을 읽고, 신용카드를 쓸 수 있어요. OpenClaw을 컴퓨터에 직접 설치하는 거예요.
옵션 B: 밀봉된 원룸. 세입자는 자기 방에만 있어요. 별도 입구, 별도 시설이 있고 나머지 집에 접근 불가. 어질러놓으면 철거하고 몇 분 만에 새로 지을 수 있어요. 이게 Docker예요.
Docker는 컨테이너를 만들어요 — 컴퓨터에서 실행되지만 개인 파일, 비밀번호, 다른 앱에 접근할 수 없는 밀봉된 격리 환경이에요. OpenClaw이 컨테이너 안에서 침해돼도 공격자는 컨테이너에 갇혀요.
완벽한가요? 아니에요. CVE-2026-24763은 고급 공격자가 PATH 조작으로 Docker를 탈출할 수 있음을 보여줬어요. 하지만 Docker는 보안 수준을 극적으로 높여요 — 현관문을 활짝 열어두는 것과 잠금장치를 거는 것의 차이예요.
✅ Quick Check: 원룸 비유에서 “철거하고 몇 분 만에 새로 짓는다"는 무엇을 의미하나요? Docker 컨테이너를 삭제하고 재생성하는 거예요 — 잠재적 침해를 깨끗이 지우고 새로 시작해요.
1단계: Docker 설치
Mac:
- docker.com에서 Docker Desktop for Mac 다운로드
- 파일을 열고 Docker를 응용 프로그램 폴더로 드래그
- 응용 프로그램에서 Docker Desktop 실행
- 메뉴 바에 고래 아이콘이 나타나면 Docker가 실행 중
Windows:
- docker.com에서 Docker Desktop for Windows 다운로드
- 설치 프로그램 실행 (WSL 2 활성화가 필요할 수 있어요)
- 안내에 따라 컴퓨터 재시작
- Docker Desktop 실행
Linux: docs.docker.com에서 공식 가이드를 따라 설치하세요.
설치 확인: 터미널(Mac/Linux) 또는 명령 프롬프트(Windows)를 열고 입력:
docker --version
Docker version 27.x.x 같은 결과가 나오면 성공. 에러가 나면 Docker가 실행 중이 아니에요.
2단계: Docker에 OpenClaw 설치 (안전한 방법)
# 1. OpenClaw 폴더 생성
mkdir ~/openclaw && cd ~/openclaw
# 2. Docker Compose 파일 다운로드
curl -fsSL https://openclaw.ai/docker-compose.yml -o docker-compose.yml
아무것도 실행하기 전에 다음 섹션을 읽으세요. 기본 설정은 충분히 안전하지 않아요.
3단계: 보안 강화 (필수)
대부분의 가이드가 여기서 멈추고, 대부분의 사람이 침해당해요. 5가지 보안 레이어를 적용해요:
레이어 1: 로컬호스트 전용 바인딩
docker-compose.yml 파일의 포트 섹션을 바꾸세요:
# 위험한 기본값:
ports:
- "0.0.0.0:18789:18789"
# 안전:
ports:
- "127.0.0.1:18789:18789"
이 한 가지 변경으로 OpenClaw이 자기 컴퓨터에서만 연결을 받아요 — 인터넷에서가 아니라.
레이어 2: 비루트 사용자 실행
공식 Docker 이미지는 이미 비루트 node 사용자로 실행돼요. 확인하세요:
user: "node"
레이어 3: 모든 권한 삭제
컨테이너 정의에 이 보안 플래그를 추가:
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
cap_drop: ALL은 모든 특수 권한을 제거하고, no-new-privileges는 새 권한 획득을 차단해요.
레이어 4: 읽기 전용 파일시스템
read_only: true
tmpfs:
- /tmp:rw,noexec,nosuid,size=64M
컨테이너 파일시스템을 읽기 전용으로 만들어요. 공격자가 들어와도 악성코드를 설치할 수 없어요.
레이어 5: 강력한 게이트웨이 토큰
온보딩 과정에서 게이트웨이 토큰을 설정해요. 이게 비밀번호예요:
- 랜덤 비밀번호 생성기 사용 (최소 32자)
- 절대 공유 금지
- 다른 곳에서 쓰는 비밀번호 사용 금지
✅ Quick Check: 5가지 강화 레이어 중 OpenClaw이 인터넷에서 접근 가능한 것을 막는 건? 레이어 1 — 0.0.0.0 대신 127.0.0.1에 바인딩하는 거예요.
4단계: 온보딩 위저드 실행
# 컨테이너 시작
docker compose up -d
# 온보딩 위저드 실행
docker exec -it openclaw openclaw onboard --install-daemon
위저드가 안내해요:
- AI 제공업체 선택 (Claude, GPT, DeepSeek)
- API 키 입력
- 게이트웨이 토큰 생성
- 제어 인터페이스 설정 (
http://127.0.0.1:18789/)
중요: 메시징 채널 설정은 지금 건너뛰세요. 모든 것이 작동하는지 확인한 후 레슨 4에서 설정해요.
완성된 보안 강화 docker-compose.yml
5가지 보안 레이어가 모두 적용된 최종 파일:
version: '3.8'
services:
openclaw:
image: openclaw/openclaw:latest
container_name: openclaw
user: "node"
ports:
- "127.0.0.1:18789:18789"
volumes:
- openclaw-data:/app/data
environment:
- NODE_ENV=production
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
read_only: true
tmpfs:
- /tmp:rw,noexec,nosuid,size=64M
restart: unless-stopped
volumes:
openclaw-data:
하지 않은 것 (그리고 이유)
웹사이트의 원라인 설치를 사용하지 않았어요:
# 이렇게 하지 마세요:
curl -fsSL https://openclaw.ai/install.sh | bash
이 명령은 Docker 없이 컴퓨터에 직접 설치해요. OpenClaw에 파일, 비밀번호, 이메일 전체에 접근을 줘요. 원룸 비유에서 옵션 A — 세입자가 집 전체를 돌아다니는 거예요.
Simon Willison이 말했어요: “Mac에서 직접 OpenClaw을 돌릴 용기가 없어요.”
그를 따르세요. Docker 전용.
문제가 생기면
컨테이너가 안 시작돼요: docker logs openclaw으로 에러 메시지 확인. 대부분 잘못된 API 키나 포트 충돌이에요.
제어판에 접근 불가: Docker가 실행 중인지 확인하고 http://127.0.0.1:18789/를 방문하세요.
처음부터 다시: Docker의 장점이에요:
docker compose down -v
docker compose up -d
컨테이너를 삭제하고 새로 만들어요. 30초 만에 원룸을 철거하고 다시 짓는 거예요.
핵심 정리
- 항상 Docker 사용 — 컴퓨터에 직접 설치하지 마세요
- 127.0.0.1에 바인딩 — 가장 중요한 보안 변경 (인터넷 노출 방지)
- 5가지 강화 레이어 모두 적용: 로컬호스트 바인딩, 비루트 사용자, 권한 삭제, 읽기 전용 파일시스템, 강력한 토큰
- 원라인 설치 건너뛰기 — 시스템 전체에 무제한 접근을 줘요
- Docker는 완벽하지 않지만 “문을 활짝 열어둔 것"과 “잠금장치를 건 것"의 차이예요
Up Next: OpenClaw이 설치되고 강화됐어요. 다음 레슨에서 메시징 앱을 연결하고 AI 에이전트와 첫 번째 대화를 나눠요.
이해도 체크
먼저 위의 퀴즈를 완료하세요
레슨 완료!