개요
Excalidraw는 손으로 그린 듯한 스타일의 다이어그램을 만들 수 있는 오픈소스 가상 화이트보드 도구입니다. 브라우저에서 바로 실행되며, 별도의 계정 생성이나 로그인 없이 즉시 사용할 수 있습니다. 직관적인 UI와 빠른 속도로 아이디어 스케치, 아키텍처 다이어그램, 플로우차트 등을 손쉽게 만들 수 있어 개발자와 디자이너에게 큰 인기를 얻고 있습니다.
GitHub: https://github.com/excalidraw/excalidraw
공식 사이트: https://excalidraw.com
GitHub Stars: 95,000+
라이선스: MIT
Excalidraw란?
Excalidraw는 “생각의 속도로 스케치하기”를 목표로 하는 화이트보드 도구입니다. 깔끔한 벡터 다이어그램 대신 손으로 그린 듯한 스타일을 제공하여, 완성된 결과물보다 아이디어 전달에 집중할 수 있게 해줍니다.
핵심 컨셉
- Hand-drawn Style: 손그림 느낌의 친근한 다이어그램
- Zero Friction: 로그인/가입 없이 바로 사용
- Privacy First: 모든 데이터는 브라우저에 저장 (서버 전송 없음)
- Real-time Collaboration: 링크 공유로 실시간 협업
주요 특징
1. 직관적인 UI
- 학습 곡선 거의 없음, 바로 사용 가능
- 깔끔한 미니멀 인터페이스
- 키보드 단축키 지원 (빠른 작업)
2. 손그림 스타일 다이어그램
- 독특한 Hand-drawn 느낌
- 브레인스토밍, 아이디어 스케치에 최적
- 완벽함보다 아이디어 전달에 집중
3. 다양한 도형 및 도구
- 기본 도형 (사각형, 원, 삼각형, 다이아몬드)
- 화살표 및 연결선
- 자유 그리기 (펜 도구)
- 텍스트 입력
- 이미지 삽입
4. 실시간 협업
- 링크 공유로 즉시 협업 시작
- End-to-End 암호화
- 동시 편집 지원
5. 다양한 내보내기 형식
- PNG (배경 포함/제외)
- SVG (벡터 형식)
- Excalidraw JSON (재편집 가능)
- 클립보드 복사
6. 라이브러리 시스템
- 커뮤니티 라이브러리 (아이콘, 템플릿)
- 자주 쓰는 요소 저장
- 라이브러리 공유 가능
7. 프라이버시 중심
- 브라우저 로컬 스토리지 사용
- 서버에 데이터 전송 없음
- 셀프 호스팅 시 추적 코드 없음
유사 도구 비교
| 항목 | Excalidraw | Draw.io | Miro | FigJam |
|---|---|---|---|---|
| 스타일 | 손그림 (Hand-drawn) | 정형화된 다이어그램 | 다양한 스타일 | 플레이풀 |
| 가격 | 무료 (Plus $6/월) | 무료 | 프리미엄 ($8~/월) | 프리미엄 |
| 셀프 호스팅 | ✅ 가능 | ✅ 가능 | ❌ | ❌ |
| 협업 | ✅ 실시간 | ✅ (제한적) | ✅ 강력 | ✅ 강력 |
| 로그인 필요 | ❌ 불필요 | ❌ 불필요 | ✅ 필요 | ✅ 필요 |
| 오프라인 | ✅ 지원 | ✅ 지원 | ❌ | ❌ |
| 학습 곡선 | 매우 낮음 | 낮음 | 중간 | 낮음 |
| 주요 용도 | 스케치, 브레인스토밍 | 기술 다이어그램 | 워크샵, 협업 | 디자인 협업 |
| 통합 | 제한적 | Atlassian, Google | 150+ 앱 | Figma |
언제 Excalidraw를 선택할까?
Excalidraw가 적합한 경우:
- 빠르게 아이디어를 스케치하고 싶을 때
- 손그림 스타일의 친근한 다이어그램이 필요할 때
- 로그인/가입 없이 바로 시작하고 싶을 때
- 프라이버시가 중요할 때
- 개발자/엔지니어가 아키텍처를 빠르게 그릴 때
다른 도구가 적합한 경우:
- 정형화된 기술 다이어그램 → Draw.io
- 대규모 팀 워크샵 및 협업 → Miro
- Figma와 통합된 디자인 협업 → FigJam
- 엔터프라이즈 기능 및 보안 → Miro, Lucidchart
Docker Compose 설치
사전 요구사항
- Docker 및 Docker Compose 설치
- 최소 512MB RAM
- 저장 공간 100MB+ (이미지 제외)
기본 설치 (가장 간단)
Excalidraw는 Stateless 애플리케이션으로, 모든 데이터가 브라우저에 저장됩니다. 별도의 데이터베이스나 볼륨 설정이 필요 없어 설치가 매우 간단합니다.
1. 디렉토리 생성
mkdir -p ~/docker/excalidraw
cd ~/docker/excalidraw
2. docker-compose.yml 작성
services:
excalidraw:
image: excalidraw/excalidraw:latest
container_name: excalidraw
ports:
- "5000:80"
restart: unless-stopped
3. 컨테이너 실행
docker compose up -d
4. 접속 확인
브라우저에서 http://서버IP:5000 접속
리버스 프록시 연동 설치 (프로덕션 권장)
HTTPS와 도메인을 사용하는 프로덕션 환경에서 권장되는 설정입니다.
docker-compose.yml (Traefik 연동)
services:
excalidraw:
image: excalidraw/excalidraw:latest
container_name: excalidraw
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.routers.excalidraw.rule=Host(`draw.example.com`)"
- "traefik.http.routers.excalidraw.entrypoints=websecure"
- "traefik.http.routers.excalidraw.tls.certresolver=letsencrypt"
- "traefik.http.services.excalidraw.loadbalancer.server.port=80"
networks:
- traefik-network
networks:
traefik-network:
external: true
Nginx 리버스 프록시 설정
server {
listen 80;
server_name draw.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name draw.example.com;
ssl_certificate /etc/letsencrypt/live/draw.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/draw.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
협업 기능 포함 설치 (커뮤니티 버전)
공식 Docker 이미지는 협업 기능을 지원하지 않습니다. 협업 기능이 필요하다면 커뮤니티에서 제공하는 포크 버전을 사용할 수 있습니다.
excalidraw-collaboration 사용
git clone https://github.com/alswl/excalidraw-collaboration.git
cd excalidraw-collaboration/basic
docker compose up -d
docker-compose.yml (협업 버전 예시)
services:
excalidraw:
image: kiliandeca/excalidraw:latest
container_name: excalidraw
ports:
- "5000:80"
environment:
- VITE_APP_BACKEND_V2_GET_URL=http://localhost:8080/api/v2/scenes/
- VITE_APP_BACKEND_V2_POST_URL=http://localhost:8080/api/v2/scenes/
- VITE_APP_WS_SERVER_URL=http://localhost:8080/
restart: unless-stopped
excalidraw-storage:
image: kiliandeca/excalidraw-storage-backend:latest
container_name: excalidraw-storage
ports:
- "8080:8080"
environment:
- STORAGE_URI=redis://redis:6379
depends_on:
- redis
restart: unless-stopped
redis:
image: redis:7-alpine
container_name: excalidraw-redis
volumes:
- ./redis-data:/data
restart: unless-stopped
참고: 커뮤니티 버전은 공식 지원이 아니므로 안정성을 직접 확인하세요.
컨테이너 관리
기본 명령어
# 시작
docker compose up -d
# 중지
docker compose down
# 로그 확인
docker compose logs -f excalidraw
# 재시작
docker compose restart
# 업데이트
docker compose pull
docker compose up -d
헬스 체크
# 컨테이너 상태 확인
docker ps
# 리소스 사용량 확인
docker stats excalidraw
활용 팁
1. 키보드 단축키
| 단축키 | 기능 |
|---|---|
1 | 선택 도구 |
2 | 사각형 |
3 | 다이아몬드 |
4 | 타원 |
5 | 화살표 |
6 | 선 |
7 | 펜 (자유 그리기) |
8 | 텍스트 |
9 | 이미지 삽입 |
Ctrl+D | 복제 |
Ctrl+G | 그룹화 |
Ctrl+Shift+G | 그룹 해제 |
Ctrl+L | 잠금 |
Alt+드래그 | 복사하며 이동 |
2. 라이브러리 활용
Excalidraw는 다양한 커뮤니티 라이브러리를 제공합니다:
- https://libraries.excalidraw.com 에서 라이브러리 탐색
- AWS, GCP, Azure 아이콘
- 네트워크 다이어그램 요소
- UI/UX 와이어프레임 컴포넌트
- 플로우차트 요소
3. 유용한 활용 사례
| 용도 | 설명 |
|---|---|
| 아키텍처 다이어그램 | 시스템 구조, 마이크로서비스 설계 |
| 플로우차트 | 프로세스 흐름, 의사결정 트리 |
| 와이어프레임 | UI/UX 초기 스케치 |
| 브레인스토밍 | 아이디어 정리, 마인드맵 |
| 회의 노트 | 시각적 회의록, 개념 정리 |
| 교육 자료 | 개념 설명, 튜토리얼 이미지 |
4. 내보내기 팁
PNG 내보내기:
- 배경 포함/제외 선택 가능
- 고해상도(2x, 3x) 내보내기 가능
SVG 내보내기:
- 벡터 형식으로 확대해도 깨지지 않음
- 웹사이트, 문서에 삽입하기 좋음
Excalidraw JSON:
- 나중에 다시 편집 가능
- 팀원과 파일 공유 시 유용
보안 고려사항
셀프 호스팅 시 보안
# 보안 강화 설정 예시
services:
excalidraw:
image: excalidraw/excalidraw:latest
container_name: excalidraw
ports:
- "127.0.0.1:5000:80" # localhost만 바인딩
restart: unless-stopped
read_only: true # 읽기 전용 파일시스템
security_opt:
- no-new-privileges:true
권장 사항
- 리버스 프록시 사용: 직접 노출 대신 Nginx/Traefik 뒤에 배치
- HTTPS 적용: Let’s Encrypt로 SSL 인증서 적용
- 접근 제한: 필요시 Basic Auth 또는 SSO 연동
- 정기 업데이트: 최신 이미지로 주기적 업데이트
트러블슈팅
1. 페이지가 로드되지 않음
# 컨테이너 상태 확인
docker ps
# 로그 확인
docker logs excalidraw
# 포트 확인
netstat -tlnp | grep 5000
2. 협업 기능이 작동하지 않음
공식 Docker 이미지는 협업 기능을 지원하지 않습니다. 협업이 필요하다면:
- 공식 excalidraw.com 사용
- 커뮤니티 포크 버전 사용 (예: kiliandeca/excalidraw)
3. 파일 저장이 안 됨
Excalidraw는 브라우저 로컬 스토리지를 사용합니다:
- 브라우저 데이터 삭제 시 작업 내용 손실
- 중요한 작업은 반드시 파일로 내보내기
.excalidraw파일로 저장하면 나중에 다시 열기 가능
Excalidraw+ (유료 버전)
Excalidraw는 무료 오픈소스이지만, 추가 기능이 포함된 Excalidraw+ 유료 서비스도 있습니다:
| 기능 | 무료 | Excalidraw+ |
|---|---|---|
| 기본 드로잉 | ✅ | ✅ |
| 실시간 협업 | ✅ | ✅ |
| 클라우드 저장 | ❌ | ✅ |
| AI 기능 (Text-to-Diagram) | ❌ | ✅ |
| 프레젠테이션 모드 | ❌ | ✅ |
| 비공개 라이브러리 | ❌ | ✅ |
| 가격 | 무료 | ~$6/월 |
마무리
Excalidraw는 “완벽한 다이어그램”보다 “빠른 아이디어 전달”에 초점을 맞춘 도구입니다. 손그림 스타일의 친근한 느낌이 오히려 브레인스토밍이나 초기 설계 단계에서 부담을 줄여주고, 협업을 더 자연스럽게 만들어줍니다.
추천 대상
- 아이디어를 빠르게 시각화하고 싶은 개발자
- 아키텍처 다이어그램을 자주 그리는 엔지니어
- 회의 중 실시간 스케치가 필요한 팀
- 프라이버시를 중시하는 사용자
- Miro/Figma가 과한 느낌인 분
- 로그인 없이 바로 사용하고 싶은 분
Excalidraw의 철학
“The goal is to make it feel like you’re sketching on paper, but with the benefits of digital tools.”
3분이면 설치하고, 바로 그리기 시작할 수 있습니다!