# Caddy 복붙 실습 — 따라하면 완성됩니다

강의 2부 실습 자료입니다. **타이핑할 것은 없습니다 — 전부 복사·붙여넣기입니다.**
잘못돼도 컴퓨터가 망가지지 않습니다. 모든 것은 이 실습 폴더 안에서만 동작하고, 언제든 원점으로 되돌릴 수 있습니다.

## 사전 준비 (강의 전에 해오시면 좋습니다)

1. **Docker Desktop 설치** — https://www.docker.com/products/docker-desktop/ 에서 내려받아 설치 후 실행
   - Windows: "WSL 2 설치가 필요하다"는 안내가 나오면 안내에 따라 확인을 눌러 진행
   - 설치 후 고래 아이콘이 화면 우하단(Windows)/우상단(Mac)에 떠 있으면 준비 끝
2. **실습 폴더 내려받기** — 안내받은 저장소 페이지에서 초록색 **Code 버튼 → Download ZIP** 클릭 → 압축 풀기
   - git이라는 도구는 몰라도 됩니다. ZIP이면 충분합니다.

## 실습 0 — 준비 확인 (2분)

터미널을 엽니다:
- **Windows**: 압축 푼 폴더의 `demo` 폴더에서 주소창에 `cmd` 입력 후 Enter (또는 폴더에서 Shift+우클릭 → "터미널에서 열기")
- **Mac**: `demo` 폴더를 우클릭 → "폴더에서 새로운 터미널 열기"

아래 한 줄을 복사해 붙여넣고 Enter:

```bash
docker compose version
```

`Docker Compose version ...`이 나오면 준비 완료. 안 나오면 Docker Desktop이 실행 중인지 확인하세요.

## 실습 1 — 복붙 한 줄로 HTTPS 사이트 띄우기 (5분)

```bash
docker compose up -d
```

처음엔 내려받는 데 1~2분 걸립니다. 끝나면 브라우저 주소창에 직접 입력:

```
https://localhost
```

**성공 기준**: "축하합니다 🎉" 페이지가 보이면 완료. 여러분은 지금 웹 서버를 운영 중입니다.

### 경고 화면이 떠도 정상입니다

"주의 요함" / "연결이 비공개로 설정되어 있지 않습니다" 경고는 **연습용 자물쇠**라서 뜨는 것입니다. localhost는 공인 인증서를 받을 수 없어 Caddy가 스스로 만든 인증서를 쓰는데, 브라우저가 처음 보는 발급자라 경고할 뿐입니다. 내가 방금 띄운 사이트이므로 안전합니다.

- Chrome/Edge: **고급 → localhost(안전하지 않음)으로 이동**
- 이동 버튼이 안 보이면: 경고 화면에서 키보드로 `thisisunsafe` 입력 (입력창 없이 그냥 타이핑)
- 진짜 도메인을 연결하면 공인 자물쇠가 자동으로 달려서 경고가 없습니다
- ⚠️ 단, **모르는 사이트**에서 같은 경고가 뜨면 들어가지 마세요 — 구분 기준은 "누가 띄운 사이트인가"입니다

## 실습 2 — 내 페이지로 바꾸기 (5분)

1. `demo/site/index.html` 파일을 메모장(또는 아무 편집기)으로 엽니다
2. "여기를 내 문장으로 바꿔보세요!" 부분을 원하는 문장으로 수정하고 저장
3. 브라우저에서 새로고침 (F5)

**성공 기준**: 내가 쓴 문장이 그대로 보이면 완료. site 폴더에 넣는 것이 곧 내 사이트가 됩니다 — AI로 만든 HTML 파일을 통째로 넣어도 됩니다.

## 실습 3 (선택) — 문지기의 교통정리 (5분)

`Caddyfile`의 내용을 `answers/Caddyfile.step3`의 내용으로 바꾸고 반영합니다:

```bash
copy answers\Caddyfile.step3 Caddyfile
```

(Mac/리눅스는 `cp answers/Caddyfile.step3 Caddyfile`)

```bash
docker compose exec caddy caddy reload -c /etc/caddy/Caddyfile
```

브라우저에서 확인:
- `https://localhost/a` → app-a 응답
- `https://localhost/b` → app-b 응답
- `https://localhost` → 여전히 내 페이지

**확인할 것**: 문(주소)은 하나인데 경로에 따라 다른 곳으로 안내됩니다 — 이것이 강의에서 본 "문지기의 교통정리(경로 라우팅)"입니다.

## 정리 — 실습 끝내기

```bash
docker compose down
```

이 한 줄이면 전부 꺼지고 원점입니다. 참고로 끄지 않아도 오늘 실습은 **내 컴퓨터 안에서만** 도는 상태라, 인터넷에 공개된 것이 아닙니다.

## 문제 해결

| 증상 | 원인·해결 |
|---|---|
| `docker compose version`이 안 됨 | Docker Desktop이 실행 중인지 확인 (고래 아이콘) — 설치 직후엔 재부팅이 필요할 수 있음 |
| `port is already allocated` | 80/443 포트를 다른 프로그램이 사용 중 — 해당 프로그램 종료 후 다시 `docker compose up -d` |
| 브라우저에 아무것도 안 뜸 | 주소창에 `https://`까지 직접 입력했는지 확인 (`https://localhost`) |
| 실습 2에서 수정이 반영 안 됨 | 파일을 저장했는지 확인 후 새로고침 — 그래도 안 되면 Ctrl+F5 (강력 새로고침) |
| 실습 3에서 반영 안 됨 | Caddyfile 교체 여부 확인 후 reload 명령 다시 실행 |
| 그 외 에러 | 에러 메시지를 그대로 복사해 AI(ChatGPT·Claude 등)에게 붙여넣고 물어보세요 — 이것도 오늘 배운 기술입니다 |
