목차
  1. 01내 사이트를 구글 · 네이버 검색에 등록하기
  2. 02무료 주소에서 내 도메인으로, Cloudflare에서 바꾸는 순서
  3. 03내 사이트에 로그인 붙이기, 비밀번호 없이 메일로 받은 코드로
  4. 04내 사이트에 GA4 붙이기, 누가 와서 무엇을 읽는지 보기
  5. 05사진 주소도 내 도메인으로, R2 사진 창고에 `img.` 주소 붙이기
  6. 06내 도메인 주소로 메일 받기, contact@내도메인 을 Gmail 로
  7. 07무료 키 하나로 인스타 릴스 목소리 만들기, 구글 AI 스튜디오 API 로 🔒

R2 커스텀 도메인 · 월간클로드 5회에서 다룬 내용

월간클로드 자료집 · 5회 · 약 9분

사진 주소도 내 도메인으로, R2 사진 창고에 `img.` 주소 붙이기

R2 커스텀 도메인으로 사진 주소를 pub-….r2.dev 에서 img.내도메인 으로 — 버킷 설정, Cloudflare가 넣는 CNAME 한 줄, 초기화 중에서 활성까지, 사이트 사진 주소 바꾸기와 확인을 실제 화면으로 따라간다.

월간클로드 자료집 — 매달 한 가지, AI로 실제 일을 끝내는 법7회 모두 무료로 읽어요 · 자료집 전체 보기

이 장을 하기 전에

있어야 할 것왜
사이트 사진이 들어 있는 Cloudflare R2 버킷 — 사진 주소가 https://pub-….r2.dev/… 로 시작한다이 장은 그 주소를 내 도메인으로 바꾸는 순서다
R2 버킷과 같은 Cloudflare 계정에 연결된 내 도메인다른 계정의 도메인은 붙지 않는다(5.2절). 도메인을 사고 연결하는 순서는 2장
사이트를 만든 폴더를 Claude Code 로 열 수 있다사이트 코드의 사진 주소는 Claude Code가 고치고 다시 올린다(5.5절)

걸리는 시간은 Cloudflare 화면에서 2~3분, 사이트 코드를 고쳐 다시 올리는 데 몇 분입니다. 이 장의 예시 사이트는 monhuncodi.com — 게임 코디 사진을 모아 둔 사이트이고, 사진 창고(버킷) 이름은 monhuncodi-img 입니다.

새 도메인을 구글 · 네이버 검색에 등록하는 절차는 이 장에서 다시 쓰지 않습니다 — 1장에 있습니다.


5.1 사진 주소는 왜 따로 바꾸나

사이트 주소를 내 도메인으로 바꾸고 나서 사진 하나를 오른쪽 클릭해 주소를 보면, 여전히 이런 모양입니다.

https://pub-(번호).r2.dev/사진이름.jpg

사진이 사이트와 다른 곳에 들어 있기 때문입니다.

📖 R2 · 버킷

R2 는 Cloudflare의 파일 창고입니다. 사진처럼 크고 많은 파일을 사이트 밖에 따로 넣어 둡니다. 창고 안의 칸 하나를 버킷이라고 부릅니다. 버킷 하나에 사이트 하나의 사진을 담는 식입니다.

버킷을 처음 공개하면 Cloudflare가 임시 주소 pub-(번호).r2.dev 를 붙여 줍니다. 그런데 바로 그 주소 칸 아래에 이렇게 적혀 있습니다(2026-10-15 화면).

이 URL은 속도가 제한되므로 프로덕션에는 권장하지 않습니다. 액세스 및 캐싱과 같은 Cloudflare 기능은 사용할 수 없습니다. 사용자 설정 도메인을 버킷에 연결하여 프로덕션 워크로드를 지원하십시오.

「프로덕션」 은 실제로 사람들이 쓰는 사이트라는 뜻입니다. 임시 주소는 만들어 보는 동안 쓰는 주소이고, 사람들이 오는 사이트에는 내 도메인을 붙이라는 안내입니다. Cloudflare 문서도 이 주소를 「개발용, 실제 방문용이 아님」 으로 적어 둡니다.

💡 사이트 주소와 사진 주소는 따로다

사이트(Worker)에 내 도메인을 붙여도, 사진은 사진 창고의 주소로 옵니다. 집 주소를 바꿔도 창고 주소는 그대로인 것과 같습니다. 그래서 창고에도 따로 문패를 답니다.

번호지금이 장을 하고 나면
사이트 주소monhuncodi.com (2장에서 바꿈)그대로
사진 주소pub-(번호).r2.dev/… — 임시 주소 · 속도 제한img.monhuncodi.com/…

5.2 버킷 설정에서 「사용자 설정 도메인」 추가

왼쪽 메뉴 스토리지 및 데이터베이스 → R2 객체 스토리지 → 내 버킷을 누르고, 위 탭에서 「설정」 으로 갑니다.

그림 5-1: R2 버킷의 설정 화면. ① 위 「설정」 탭 ② 사용자 설정 도메인 — 「이 버킷에 할당된 사용자 지정 도메인이 없습니다」, 오른쪽 + 추가 ③ 공개 개발 URL — 지금 쓰는 임시 주소 pub-(번호).r2.dev 와 「프로덕션에는 권장하지 않습니다」 문구

⚠️ 여기서 막힙니다 — 사이트(Worker)의 「도메인」 탭으로 간다

사이트에 도메인을 붙일 때는 Workers 및 Pages → 내 사이트 → 「도메인」 탭 이었습니다(2장). 사진은 거기가 아닙니다. R2 → 버킷 → 「설정」 입니다. 사진 창고에는 창고 쪽에서 문패를 답니다.

그림 5-1의 ③ 「공개 개발 URL」 이 이미 켜져 있어서, 이걸로 다 된 줄 알기 쉽습니다. 그건 임시 주소입니다. 붙일 곳은 그 위 ② 사용자 설정 도메인입니다. + 추가를 누르면 오른쪽에 창이 열립니다.

그림 5-2: 사용자 설정 도메인 창. ① 도메인 칸 — img.monhuncodi.com 처럼 내 도메인 앞에 img. 를 붙여 넣는다 ② 계속

📖 하위 주소(하위 도메인)

내 도메인 앞에 이름을 하나 더 붙인 주소. img.monhuncodi.com 은 monhuncodi.com 안의 방 하나입니다. 도메인을 새로 사지 않고 얼마든지 만들 수 있습니다.

왜 img. 인가. 사이트는 이미 monhuncodi.com 에 붙어 있습니다. 사진 창고에 같은 주소를 붙일 수는 없으니, 앞에 img. 를 붙여 사진 전용 방을 하나 냅니다. img 는 이미지의 줄임말로 흔히 쓰는 이름입니다. photo. 나 cdn. 처럼 다른 이름도 됩니다.

번호할 일됐으면
1R2 객체 스토리지 → 내 버킷 → 설정 탭그림 5-1
2「사용자 설정 도메인」 칸의 + 추가오른쪽에 창이 열린다
3도메인 칸에 img.내도메인 을 넣고 계속「DNS 레코드 미리 보기」(5.3절)

창 아래의 「최소 TLS 버전(고급)」 은 건드리지 않습니다.


5.3 주소록 한 줄은 Cloudflare가 넣는다

계속을 누르면 「DNS 레코드 미리 보기」 가 나옵니다. 주소록(DNS)에 이런 줄을 더하겠다고 미리 보여 주는 화면입니다.

그림 5-3: DNS 레코드 미리 보기. ① Cloudflare가 주소록에 더할 한 줄 — 형식 CNAME · 이름 img · 버킷 monhuncodi-img ② 도메인 연결

📖 CNAME

주소록(DNS)의 줄 종류 하나. 「이 이름으로 오면 저기로 가라」 고 적는 줄입니다. 여기서는 「img 로 오면 사진 창고 monhuncodi-img 로」 입니다.

이 줄을 직접 적을 일은 없습니다. 도메인이 같은 Cloudflare 계정에 있으면 Cloudflare가 주소록을 알아서 고칩니다. 화면을 보고 도메인 연결만 누릅니다.


5.4 「초기화 중」 → 「활성」 — 몇 분 기다린다

연결을 누르면 목록에 새 주소가 한 줄 생기고, 상태가 「초기화 중」 입니다.

그림 5-4: 연결 직후. ① 파란 띠 — 「적용되는 데 몇 분 정도 걸릴 수 있습니다」 ② 상태 「초기화 중」 — 아직 준비 중이다

monhuncodi.com 은 1~2분 뒤 새로고침하자 「활성」 이 됐습니다. Cloudflare 문서도 「몇 분 안에」 라고 적어 둡니다.

그림 5-5: 연결 끝. ① 상태 「활성」 — 이제 img.monhuncodi.com 으로 사진이 열린다. 아래 공개 개발 URL(임시 주소)은 켜진 채로 남아 있다

⚠️ 여기서 막힙니다 — 바로 안 열린다고 지운다

「초기화 중」 일 때 새 주소로 사진을 열면 안 열립니다. 「활성」 이 된 직후에도 monhuncodi.com 은 처음 1분쯤 403(「들어갈 수 없음」 이라는 응답 번호)이 나오다가 열렸습니다. 지우고 다시 만들지 말고, 몇 분 기다렸다 새로고침합니다.

이제 사진 하나를 새 주소로 열어 봅니다. 옛 주소의 https://pub-(번호).r2.dev 부분만 https://img.내도메인 으로 바꿔 주소창에 넣습니다. 사진이 뜨면 창고 쪽은 끝입니다.

번호할 일됐으면
1도메인 연결목록에 한 줄 · 「초기화 중」
21~2분 뒤 새로고침「활성」
3사진 하나를 새 주소로 열어 본다사진이 뜬다 (403이면 1분쯤 더 기다린다)

5.5 사이트 코드의 사진 주소 바꾸기

창고에 문패를 달았지만, 사이트는 아직 옛 주소로 사진을 부릅니다. 사이트 코드에 pub-….r2.dev 가 적혀 있기 때문입니다. 이걸 Claude Code가 고칩니다. 사이트 폴더를 Claude Code로 열고 이렇게 부탁합니다.

사진 주소를 https://img.내도메인 으로 바꿔 줘.
지금은 pub-….r2.dev 로 되어 있어. 주소를 정해 둔 곳이 한 곳인지도 봐 줘.
고친 곳을 보여 주고, 내가 확인하면 배포해 줘.

부탁 끝의 「한 곳인지도 봐 줘」 에는 까닭이 있습니다.

💡 주소는 한 곳에서 정해 둔다

사진 주소를 페이지마다 따로 적어 두면, 바꿀 때 모든 페이지를 뒤져야 합니다. 하나라도 빠뜨리면 그 사진만 옛 주소로 남습니다.

주소 앞부분을 한 곳에 한 번만 정해 두고 모든 페이지가 거기서 가져다 쓰게 하면, 바꿀 때 한 줄입니다.

monhuncodi.com 은 사진 주소의 앞부분을 사이트 코드 한 곳에 정해 두었습니다. Claude가 바꾼 것은 그 한 줄, 그리고 사진 목록을 만드는 작은 프로그램 안의 한 곳이 전부였습니다. 「배포해」 라고 하자 3분쯤 뒤 사이트에 반영됐습니다.

Claude가 「주소가 여러 곳에 흩어져 있다」 고 하면, 이번 기회에 한 곳으로 모아 달라고 같이 부탁합니다.


5.6 확인 — 사이트의 사진이 새 주소에서 오나

배포가 끝나면 사이트를 열고 사진 하나에서 오른쪽 클릭 → 「이미지 주소 복사」 를 누릅니다. 메모장에 붙여 보아 https://img.내도메인/… 으로 시작하면 됐습니다.

사진이 많으면 하나씩 볼 수 없습니다. Claude에게 맡깁니다.

배포된 사이트의 페이지를 사이트맵에서 전부 읽어서,
사진 주소가 전부 img.내도메인 인지, 그리고 전부 열리는지 확인해 줘.
옛 주소(r2.dev)가 남은 곳이 있으면 목록으로 보여 줘.

monhuncodi.com 은 사이트맵에 올린 34쪽에 실린 사진 448장이 전부 img.monhuncodi.com 에서 열렸습니다(2026-10-15).

번호확인됐으면
1사진 하나 → 오른쪽 클릭 → 이미지 주소 복사https://img.내도메인/…
2Claude에게 전체 확인 부탁옛 주소가 남은 곳 0 · 안 열리는 사진 0

5.7 정리

  • 사이트 주소를 바꿔도 사진 주소는 따로다. 사진은 R2 창고의 주소로 온다
  • 임시 주소 pub-….r2.dev 는 화면에도 「프로덕션에는 권장하지 않습니다」 — 속도 제한이 있다
  • 붙이는 곳은 R2 → 버킷 → 설정 → 사용자 설정 도메인 → + 추가. 사이트의 「도메인」 탭이 아니다
  • 이름은 내 도메인 앞에 img. — 사이트 주소와 겹치지 않는 사진 전용 방
  • 주소록(DNS) 한 줄(CNAME)은 Cloudflare가 넣는다. 도메인 연결만 누른다
  • 「초기화 중」 → 「활성」 은 몇 분. 그동안 403이 나도 지우지 않는다
  • 사이트 코드의 사진 주소는 Claude Code에게 — 주소는 한 곳에서 정해 둔다
  • 확인은 이미지 주소 복사 하나, 그리고 Claude에게 전체

이 장에서 나온 말

말쉬운 뜻
R2Cloudflare의 파일 창고. 사진처럼 크고 많은 파일을 사이트 밖에 둔다
버킷R2 창고 안의 칸 하나. 사이트 하나의 사진을 담는다
공개 개발 URL(r2.dev)버킷에 붙는 임시 주소. 속도 제한이 있고 개발용이다
사용자 설정 도메인버킷에 붙이는 내 도메인. 문서 이름은 Custom Domains
하위 주소(하위 도메인)내 도메인 앞에 이름을 더 붙인 주소. img.monhuncodi.com
CNAME주소록(DNS)의 「이 이름으로 오면 저기로」 줄
403「들어갈 수 없음」 응답 번호. 막 연결한 직후 잠깐 나올 수 있다

5.8 안 될 때

증상이렇게
「+ 추가」 를 찾을 수 없다사이트(Worker) 화면에 있는 겁니다. R2 객체 스토리지 → 버킷 → 설정으로 갑니다(5.2절)
도메인을 넣었는데 연결이 안 된다그 도메인이 버킷과 같은 Cloudflare 계정에 있는지 봅니다. 다른 계정의 도메인은 붙지 않습니다
「초기화 중」 에서 안 바뀐다몇 분 기다리고 새로고침합니다. 그래도 그대로면 줄 오른쪽 「…」 → Retry connection
「활성」 인데 새 주소가 4031분쯤 더 기다렸다 다시 엽니다
배포했는데 사진이 여전히 r2.dev 에서 온다주소가 다른 곳에도 적혀 있습니다. Claude에게 사이트 코드에서 r2.dev 가 남은 곳을 전부 찾아줘
화면이 뭘 말하는지 모르겠다화면을 캡처해서 Claude에게 붙이고 이 화면에서 뭘 봐야 돼?

이 장에서 다루지 않는 것

도메인을 사고 연결하는 일(2장), 새 도메인의 검색 등록(1장)은 이 장에서 다시 쓰지 않습니다. 임시 주소(r2.dev) 끄기도 다루지 않습니다 — 이 장에서는 켜진 채로 둡니다. Cloudflare 문서는 접근 제한 같은 보호 기능을 쓸 때는 끄라고 안내합니다 (안 끄면 그 주소로는 그대로 공개됩니다). 사진 캐시 규칙, 이미 올린 글 속에 박힌 옛 사진 주소를 한꺼번에 바꾸는 일, 사진 크기 줄이기도 이 장 밖입니다. 이 장은 새로 부르는 사진이 내 도메인에서 오는 데까지입니다.

더 읽을 곳 (공식 문서)

번호주소
Cloudflare — R2 공개 버킷 · 사용자 설정 도메인https://developers.cloudflare.com/r2/buckets/public-buckets/