Caddy 강의 — 비개발자편 2시간 · 이해 + 복붙 실습
내 컴퓨터에 잠든 결과물을 세상에 보여주기

Caddy,
내 결과물에 주소를 달아주는 문지기

코딩은 몰라도 됩니다. 오늘은 전부 복사·붙여넣기로 — 여러분 컴퓨터에 직접 웹 서버를 띄워봅니다.

Ch.1 문제 인식 · 1/5

만드는 것까진 됐는데, 그 다음이 막힌다

AI로 만든 미니앱

채팅 몇 번으로 뚝딱 만들었다 — 그런데 내 화면에서만 돈다

팀에 보여줄 대시보드

회의 때마다 내 노트북을 돌려서 보여준다 — 링크 하나 보내면 될 일인데

포트폴리오 페이지

완성한 지 한 달 — 아직 아무도 못 봤다

만든 게 아직 없어도 괜찮습니다 — 오늘 실습이 여러분의 첫 결과물이 됩니다.
Ch.1 문제 인식 · 2/5

localhost의 정체 — "내 컴퓨터"라는 뜻


http://localhost:3000
→ 내 앱이 보인다
→ 링크 전송 →
친구
같은 주소를 열면
친구 자신의 컴퓨터가 열린다
결과
아무것도 안 뜸

localhost는 누구에게나 "자기 자신의 컴퓨터"를 가리키는 특수한 주소.
내 결과물이 잠든 이유는 기능이 아니라 — 남이 부를 수 있는 주소가 없어서다.

Ch.1 문제 인식 · 3/5

남에게 보여주려면 — 세 가지가 필요하다

간판 — 주소

사람이 기억하고 찾아올 수 있는 이름

도메인 mysite.com

자물쇠 — 보안

"진짜 사이트고, 오가는 내용은 암호화된다"는 표시 — 요즘 웹의 기본 예의

HTTPS 주소창의 자물쇠 아이콘

직원 — 안내

찾아온 손님(요청)에게 알맞은 것을 내어주는 프로그램

웹 서버

셋이 모두 갖춰져야 비로소 "남이 볼 수 있는 것"이 된다.
Ch.1 문제 인식 · 4/5

이 셋을 손으로 하면 — 어렵고, 무섭고, 번거롭다

어렵다

서버 설정 파일 수십 줄 — 전문가들도 검색하면서 쓰는 영역

무섭다

내 컴퓨터의 문을 인터넷에 연다? — 뭘 여는 건지 모르면 열면 안 된다

번거롭다

자물쇠(인증서)는 90일마다 갱신 — 예전엔 이걸 사람이 직접 챙겼다

그래서 이 셋을 한 번에 자동으로 처리하는 도구가 나왔다 — 다음 장.
Ch.1 문제 인식 · 5/5

오늘의 답 — 세 가지를 한 번에 하는 문지기

방문자
브라우저
간판
mysite.com
문지기
자물쇠 자동 + 손님 안내
내 결과물들
미니앱 · 대시보드 · 페이지

이 문지기 역할을 해주는 프로그램이 오늘의 주제 — Caddy.
2부에서 여러분 컴퓨터에 복붙만으로 직접 세워봅니다.

Ch.2 Caddy 소개 · 1/3

Caddy — 자물쇠가 자동으로 달리는 웹 서버

mysite.com { reverse_proxy 내앱:3000 }

뜻: "mysite.com으로 오는 손님을 내 앱으로 안내하라" — 이것이 설정의 전부입니다.
자물쇠 발급·90일 갱신·보안 연결까지 알아서. 읽어만 보세요 — 오늘은 전부 복사·붙여넣기로 합니다.

무료 오픈소스 프로그램(2015~) — 이름은 골프장에서 골프백을 들어주는 캐디에서 왔다.
Ch.2 Caddy 소개 · 2/3

Caddy가 대신 해주는 일 — 알아서 다 켜진다

자물쇠 자동

인증서 발급·90일 갱신을 알아서

손님 안내

요청을 알맞은 앱으로 전달

페이지 나눠주기

HTML 폴더를 그대로 사이트로

최신 통신 방식

빠른 프로토콜 기본 지원

짧은 설정

대부분 몇 줄로 끝

무중단 변경

끄지 않고 설정 반영

설치 파일 하나

부품 조립이 필요 없다

철학

설정하지 않아도 안전한 쪽으로 동작한다

Ch.2 Caddy 소개 · 3/3

왜 Caddy인가 — 자동변속기라서

수동변속기 — Nginx 등

전문가용 표준 도구 — 세밀한 조작 가능
대신 설정 수십 줄 + 자물쇠는 별도 도구로

나쁜 게 아니다 — 우리 목적에 안 맞을 뿐

자동변속기 — Caddy

기본값이 곧 정답 — 몇 줄이면 출발
자물쇠 포함 전부 자동

"내 결과물 보여주기"엔 이쪽이 정답

목적지가 같다면 — 운전이 쉬운 차로 가면 된다. 1부 후반부는 원리 그림 세 장입니다.
Ch.3 원리 이해 · 1/5

주소창에 치면 — 이름이 번호가 되어 찾아간다

브라우저
mysite.com 입력
주소록에 문의
DNS — 인터넷의 전화번호부
번호 획득
IP 주소 = 컴퓨터용 번호
문지기 도착
그 컴퓨터의 Caddy

도메인 = 사람용 이름 · IP = 컴퓨터용 번호 — 주소록(DNS)이 둘을 이어준다

도메인을 산다 = 이름을 등록하고 주소록에 내 컴퓨터 번호를 적는 것 (절차는 부록 A2)

Ch.3 원리 이해 · 2/5

문지기의 교통정리 — 경로를 보고 안내한다

mysite.com { handle /menu* { reverse_proxy 식당앱:3000 } handle /gym* { reverse_proxy 헬스장앱:3000 } }

호텔 프런트와 같다 — 정문은 하나, /menu 손님은 식당으로, /gym 손님은 헬스장으로

결과물이 늘어도 간판(도메인)은 하나면 된다 — 안내 규칙만 한 줄 추가

2부 실습 3에서 직접 확인합니다

Ch.3 원리 이해 · 3/5

자물쇠(HTTPS)의 정체 — 사이트의 신분증

자물쇠 아이콘 = 인증서

"이 사이트는 진짜 이 주소의 주인이 운영하고,
오가는 내용은 암호화된다"는 전자 신분증

없으면 브라우저가 "주의 요함" 경고를 띄운다

Caddy는 이걸 자동으로

무료 발급 기관(Let's Encrypt)에서 받아오고
90일마다 갱신도 알아서

예전엔 사람이 달력에 표시해두고 직접 했다

실습의 복선 — localhost는 공인 신분증이 안 나와서 연습용 자물쇠를 쓴다. 그때 경고가 떠도 정상 (16번).
Ch.3 원리 이해 · 4/5

포트 — 건물에 달린 문 번호

컴퓨터 = 건물 한 채
주소(IP)는 하나
문은 여러 개
:3000 · :8080 · :443 …
웹의 정문은 관례로
80 (일반) · 443 (자물쇠)

localhost:3000의 :3000이 바로 문 번호 — 앱이 시작할 때 스스로 정한 값이다

브라우저는 정문(80/443)을 알아서 찾아간다 — 그래서 https://localhost번호를 안 붙인다

오늘 기억할 것은 하나 — 문지기(Caddy)가 정문(443)에 서고, 나머지 문은 밖에서 안 보인다.
Ch.3 원리 이해 · 5/5

마지막 조각 — Docker, 앱을 담는 도시락통

Docker란

앱을 도시락통(컨테이너)에 담아 어디서든 똑같이 실행하는 도구 — 설치·설정 지옥을 건너뛴다

오늘 우리가 할 일

배우는 게 아니라 쓰기만 한다 — Docker Desktop 하나 설치, 명령은 복붙

2부 실습 구성 — 전부 내 컴퓨터 안

🍱 Caddy (문지기 — 정문 443 담당)
🍱 견본 페이지 (실습 2에서 내 것으로 교체)
🍱 연습용 앱 A · B (실습 3 교통정리용)

인터넷에 공개되는 것이 아닙니다 — 내 컴퓨터 안 연습

1부 끝 — 휴식 후 복붙 실습을 시작합니다. Docker Desktop을 켜두세요.
Ch.4 복붙 실습 · 1/4

실습 0 — 준비 확인 두 가지

1 Docker Desktop 실행 중

화면 구석에 고래 아이콘이 떠 있으면 OK

2 실습 폴더 다운로드

자료 페이지에서 Code → Download ZIP → 압축 풀기 (git 같은 건 몰라도 됩니다)

잘못 붙여넣어도 컴퓨터는 망가지지 않습니다 — 모든 것은 실습 폴더 안에서만 동작합니다

# demo 폴더에서 터미널 열기 # Windows: 폴더 주소창에 cmd 입력 + Enter # Mac: 폴더 우클릭 → 새로운 터미널 # 확인 — 아래 한 줄 복붙 docker compose version # "Docker Compose version ..." 이 나오면 준비 끝
Ch.4 복붙 실습 · 2/4

실습 1 — 복붙 한 줄로 HTTPS 사이트

# 1. 아래 한 줄 복붙 (첫 실행은 1~2분) docker compose up -d # 2. 브라우저 주소창에 직접 입력 https://localhost # https:// 까지 입력해야 합니다

성공 기준

"축하합니다 🎉" 페이지가 보이면 완료 — 지금 여러분은 웹 서버를 운영 중입니다

경고 화면이 떴다면

정상입니다 — 바로 다음 장에서 설명합니다

방금 일어난 일 — 도시락통(Caddy)이 열리고, 문지기가 정문(443)에 서고, 연습용 자물쇠가 달렸다. 전부 자동.
Ch.4 복붙 실습 · 3/4

경고가 떠도 정상입니다

왜 뜨나

localhost는 공인 신분증(인증서)이 안 나온다
→ Caddy가 연습용 자물쇠를 스스로 만들었다
→ 브라우저가 처음 보는 발급자라 경고할 뿐

내가 방금 띄운 사이트 — 안전하다

통과 방법

고급 → localhost(안전하지 않음)으로 이동
버튼이 안 보이면 — 경고 화면에서 키보드로
thisisunsafe 그냥 타이핑

진짜 도메인에선 공인 자물쇠가 자동 → 경고 없음

⚠️ 단, 모르는 사이트에서 같은 경고가 뜨면 들어가지 마세요 — 기준은 "누가 띄운 사이트인가" (부록 A3).
Ch.4 복붙 실습 · 4/4

실습 2 — 내 페이지로 바꾸기

따라하기 (5분)

1 demo/site/index.html을 메모장으로 열기
2 "여기를 내 문장으로 바꿔보세요!" 수정 후 저장
3 브라우저 새로고침(F5) → 내 문장이 떠 있다

먼저 끝난 분 — 실습 3 (선택)

준비된 설정으로 교체(복붙 2줄, README 참고)
/a/b가 서로 다른 앱으로 안내된다
— 아까 본 문지기의 교통정리 실물

site 폴더에 넣는 것이 곧 내 사이트 — AI로 만든 HTML 파일을 통째로 넣어도 됩니다.
Ch.5 내보내기 로드맵 · 1/7

localhost에서 진짜 주소로

localhost { ... }
오늘 실습
→ 한 단어 교체 →
mysite.com { ... }
진짜 사이트

도메인 구입 연 1~2만원대 + 주소록(DNS)에 내 컴퓨터 등록 — 절차는 부록 A2

이때부터 자물쇠도 공인 인증서로 자동 교체 — 경고 없는 진짜 HTTPS

구조는 이미 완성했다 — 단, 진짜 공개 전에 다음 두 장(길 고르기 + 보안 상식)이 먼저다.
Ch.5 내보내기 로드맵 · 2/7

정직한 비교 — 더 쉬운 길이 있다면 그쪽으로

배포 서비스면 충분 — Vercel 등

보여주기만 할 페이지 · 포트폴리오 · 미니앱
무료 시작, 클릭 몇 번, 주소·자물쇠 자동

이 경우 오늘 배운 Caddy는 필요 없다 — 그게 정답

내 컴퓨터 + Caddy가 필요한 순간

24시간 계속 돌아야 하는 것 (챗봇·자동화)
내 컴퓨터의 파일을 직접 다루는 도구
회사 밖으로 나가면 안 되는 데이터

오늘 실습 구조가 바로 이 답이다

판단 질문은 하나 — "이건 어디서 돌아야 하는가?" (더 깊은 비교는 부록 A1)
Ch.5 내보내기 로드맵 · 3/7

문을 연다는 것 — 보안 상식 세 가지

1 문은 문지기 하나로만

서비스마다 문을 내지 않는다 — 오늘 실습 구조가 이미 그렇게 되어 있다 (정문 443 하나)

2 아무거나 공개하지 않기

보여줄 것만 문지기에게 등록한다 — 등록 안 한 것은 밖에서 존재조차 모른다

3 모르면 닫아두기

"일단 열어두지 뭐"는 금지 — 닫힌 것이 기본값이고, 필요할 때 하나씩 연다

그리고 닫는 한 줄(docker compose down)을 알고 있다 — 언제든 원점으로 되돌릴 수 있으면 무서울 게 없다.
Ch.5 내보내기 로드맵 · 4/7

AI에게 시키는 법 — 오늘 단어가 곧 언어다

이렇게 말고

"내 사이트 인터넷에 올려줘"

— AI도 뭘 해야 할지 모른다: 어디서 돌릴지, 뭘 공개할지, 주소는 뭘로 할지가 다 빠져 있다

이렇게

"Docker로 Caddy를 띄우고, 내 앱을
HTTPS로 공개해줘. 도메인은 mysite.com"

— 오늘 배운 구조 전체가 한 문장에 들어 있다

그리고 반드시 되묻기 — 검증 질문 3개

"이렇게 하면 정확히 뭐가 공개되는 거야?" · "자물쇠(인증서)는 자동 갱신돼?" · "닫는 방법도 알려줘"

Ch.5 내보내기 로드맵 · 5/7

워크시트 — 내 결과물 내보내기 계획

1 내 결과물 인벤토리

만들었거나 만들다 만 것 전부 — AI로 만든 것, 회사 것, 취미 것. 없으면 "오늘 실습"이 1번

2 보여줄 대상

누구에게 · 언제까지 · 민감한 내용은 없나 — 망설여지면 보류가 기본값

3 방법 고르기

질문 하나로 갈린다 — "이건 어디서 돌아야 하는가?" → 배포 서비스 / 내 컴퓨터+Caddy / 아직 안 함

4 첫 걸음

이번 주에 할 수 있는 크기 하나 — "집에서 실습 재현"도 훌륭한 첫 걸음

정답은 없다 — "아직 안 보여줌"도 정당한 결론이다. 작성 10분.
Ch.5 내보내기 로드맵 · 6/7

공유 — 서로의 계획이 교재가 된다

공유 포맷 — 1인 2분

1 내 결과물 한 줄 소개
2 누구에게 보여줄 것인가
3 고른 방법과 그 이유 (배포 서비스 / 내 컴퓨터+Caddy / 아직 안 함)
4 첫 걸음 — 이번 주에 할 일

같은 도구를 배웠지만 각자 결과물이 다르다 — 선택의 이유가 오늘 배운 것의 전부입니다.

Ch.5 내보내기 로드맵 · 7/7

정리 — 오늘 여러분이 한 일

오늘 한 일

내 컴퓨터에 웹 서버를 직접 띄웠다
내 페이지로 바꿔봤다 — site 폴더가 곧 내 사이트
주소·자물쇠·문지기의 그림을 안다
AI에게 정확히 시키는 문장을 안다

Caddy를 기억할 순간

"내 컴퓨터에서 계속 돌아야 하는 것"이 생겼을 때
— 24시간 챗봇, 내 파일을 다루는 도구,
밖에 못 올리는 데이터

그 전까지는 배포 서비스로 충분하다

오늘 밤 할 수 있는 것 — 집에서 실습 재현 + site 폴더에 내 것 넣어보기. 자료·실습 폴더 링크는 배포 페이지에서.
질문이 있을 때만

부록

A1 Vercel 쓰면 되지 않나요 · A2 도메인 사는 법 · A3 그 경고, 위험한 것 아닌가요 · A4 컴퓨터를 24시간 켜둬야 하나요

부록 A1

"Vercel 쓰면 되지 않나요?" — 절반은 맞습니다

배포 서비스 (Vercel 등)내 컴퓨터 + Caddy
보여주기용 페이지·앱정답 — 무료·클릭 몇 번·주소 자동가능하지만 굳이
24시간 도는 것 (챗봇 등)대부분 불가 — 요청 올 때만 실행정답 — 상시 실행 무제한
내 컴퓨터 파일을 다루는 것불가 — 코드만 올라간다정답 — 내 파일 그대로
밖에 못 올리는 데이터올리는 순간 밖이다정답 — 내 손 안에 유지
둘 다 쓰는 것도 답 — 페이지는 배포 서비스에, 계속 도는 것은 내 컴퓨터에.
부록 A2

도메인 — 쇼핑처럼 삽니다

1 검색
등록업체에서 원하는 이름 검색
(가비아 · Cloudflare · GoDaddy …)
2 결제
보통 연 1~2만원대
3 연결
주소록(DNS)에 내 서버 등록

주의 — 첫해 할인가와 갱신가가 다른 경우가 많다. 끝자리(.com/.kr/.ai)마다 가격도 다르다

3번 연결 단계는 AI에게 시켜도 되는 단계 — "이 도메인을 내 서버에 연결하는 법 알려줘"

부록 A3

그 경고 — 구분 기준은 "누가 띄운 사이트인가"

안전 — 오늘 실습의 경고

내가 방금 띄운 localhost 사이트
연습용 자물쇠(Caddy 자체 발급)라 뜨는 정상 반응
고급 → 이동으로 통과해도 된다

위험 — 같은 경고, 다른 상황

모르는 사이트 · 은행 · 쇼핑몰에서 같은 경고
→ 가짜 사이트·공격 가능성 — 들어가지 말 것
경고는 원래 여러분을 지키는 장치다

오늘 배운 것 때문에 브라우저 경고를 무시하는 습관이 들면 안 됩니다 — 기준은 언제나 "누가 띄웠나".
부록 A4

"컴퓨터를 24시간 켜둬야 하나요?" — 내 컴퓨터가 서버라면 네

선택지비용특징
지금 쓰는 내 PC추가 비용 없음끄면 사이트도 꺼진다 — 연습·시연용으로 충분
미니PC (홈서버)기기값 + 전기료 월 몇천 원24시간 전용 — "계속 도는 것"이 여럿 생기면 고려
빌리는 서버 (VPS)월 5천 원~남의 컴퓨터를 빌려 24시간 — 켜둘 걱정 없음
배포 서비스무료~켜둘 필요 자체가 없음 — 대신 "계속 도는 것"은 불가
순서 추천 — 지금 PC로 연습 → 필요가 확인되면 그때 미니PC든 VPS든 고른다. 장비 먼저 사지 않기.