πŸš€ R2 μ‹ κ·œ 계정 μ…‹μ—… κ°€μ΄λ“œ

μƒˆ μ΄λ©”μΌλ‘œ Cloudflare R2 μΆ”κ°€ 계정 λ§Œλ“€κΈ° β€” λκΉŒμ§€ λ”°λΌν•˜λ©΄ μ•½ 15-20λΆ„ μ†Œμš”

← ν™ˆνŽ˜μ΄μ§€ 관리

πŸ“Œ μ™œ μƒˆ 계정?

1

이메일 κ²°μ •

μƒˆ Cloudflare 계정에 μ‚¬μš©ν•  이메일을 μ •ν•˜μ„Έμš”. κΈ°μ‘΄ 두 κ°œμ™€ 달라야 ν•©λ‹ˆλ‹€.

μΆ”μ²œ μž‘λͺ… κ·œμΉ™: κΈ°μ‘΄ νŒ¨ν„΄(`skyclover<숫자>` / `skyclover<단어>`) 따라가기. μ˜ˆμ‹œ:
  • skycloverart@gmail.com β€” μ•„νŠΈμƒ΅ λ„μ•ˆ μ „μš©
  • skycloverlessons@gmail.com β€” μ›”λ³„μˆ˜μ—… 이미지 μ „μš©
  • luna.whale.r2@gmail.com β€” 톡합 이미지 (κ°€μž₯ λͺ…ν™•)
πŸ“ κ²°μ • ν›„ site-management.html의 계정 뢄리 μ •μ±… ν‘œμ— μΆ”κ°€ν•˜μ„Έμš”. κΉŒλ¨Ήμ§€ μ•Šκ²Œ.
2

Gmail 계정 생성 5λΆ„

πŸ”— accounts.google.com/signup
  1. 이름: Luna Whale Cloud (λ˜λŠ” λ³Έλͺ…)
  2. 이메일: μœ„μ—μ„œ μ •ν•œ 이름 (예: luna.whale.r2)
  3. λΉ„λ°€λ²ˆν˜Έ: κ°•λ ₯ν•˜κ²Œ μ„€μ • (μ €μž₯ ν•„μˆ˜)
  4. μ „ν™”λ²ˆν˜Έ 인증: κΈ°μ‘΄ 번호 κ·ΈλŒ€λ‘œ κ°€λŠ₯ (Google은 ν•œ 번호둜 μ—¬λŸ¬ 계정 OK)
  5. 볡ꡬ 이메일: skyclover777@gmail.com μž…λ ₯ (계정 μžƒμ–΄λ²„λ¦Ό λ°©μ§€)
βœ… κ°€μž… μ™„λ£Œλ˜λ©΄ μƒˆ Gmail에 둜그인된 μƒνƒœλ‘œ μ§„ν–‰ν•˜μ„Έμš”. λ‹€λ₯Έ λΈŒλΌμš°μ €(μ‹œν¬λ¦Ώ μ°½) λ˜λŠ” Chrome ν”„λ‘œν•„ 뢄리 ꢌμž₯.
3

Cloudflare κ°€μž… 3λΆ„

πŸ”— dash.cloudflare.com/sign-up
  1. 방금 λ§Œλ“  μƒˆ Gmail μž…λ ₯
  2. λΉ„λ°€λ²ˆν˜Έ μ„€μ • (Gmail λΉ„λ°€λ²ˆν˜Έμ™€ 달라야 함)
  3. 이메일 인증 β€” μƒˆ Gmail λ°›μ€νŽΈμ§€ν•¨μ—μ„œ Cloudflare 인증 메일 클릭
  4. κ°€μž… μ™„λ£Œ β†’ Dashboard μžλ™ μ§„μž…
Plan 선택 ν™”λ©΄ λ‚˜μ˜€λ©΄: Free 선택. 도메인 등둝 단계 λ‚˜μ˜€λ©΄ κ±΄λ„ˆλ›°κΈ° (R2λŠ” 도메인 λΆˆν•„μš”).
4

R2 ν™œμ„±ν™” + 결제 정보 등둝 3λΆ„

  1. μ™Όμͺ½ μ‚¬μ΄λ“œλ°”μ—μ„œ R2 Object Storage 클릭
  2. "Purchase R2" λ˜λŠ” "Enable R2" λ²„νŠΌ 클릭
  3. 결제 정보 등둝 ν™”λ©΄ β€” μΉ΄λ“œ 등둝 ν•„μˆ˜ (무료 ν•œλ„ μ•ˆμ—μ„œλŠ” 청ꡬ μ•ˆ 됨)
    • μΉ΄λ“œ: κΈ°μ‘΄ PayPal μ‚¬μš© μΉ΄λ“œ λ˜λŠ” λ‹€λ₯Έ μΉ΄λ“œ
    • μ£Όμ†Œ: λ² νŠΈλ‚¨ μ£Όμ†Œ OK (λ˜λŠ” ν•œκ΅­ μ£Όμ†Œ)
  4. R2 ν™œμ„±ν™” μ™„λ£Œ β†’ 빈 R2 λŒ€μ‹œλ³΄λ“œ ν‘œμ‹œ
⚠️ 무료 ν•œλ„ 확인: λ§€μ›” 10GB μ €μž₯ + 1M Class A μš”μ²­ + 10M Class B μš”μ²­ 무료. 초과 μ‹œ μžλ™ 청ꡬ β†’ λŒ€μ‹œλ³΄λ“œμ—μ„œ "Billing Alert" μ„€μ • ꢌμž₯ ($5 μ •λ„λ‘œ).
5

버킷 생성 1λΆ„

  1. R2 λŒ€μ‹œλ³΄λ“œμ—μ„œ "Create bucket" 클릭
  2. Bucket name: luna-assets μž…λ ₯ (λ˜λŠ” μ›ν•˜λŠ” 이름)
    luna-assets볡사
  3. Location: Asia-Pacific (APAC) 선택 (λ² νŠΈλ‚¨Β·ν•œκ΅­ μ‚¬μš©μžμ—κ²Œ κ°€μž₯ 빠름)
  4. "Create bucket" 클릭
6

Public Access ν™œμ„±ν™” 1λΆ„

μ›Ήμ‚¬μ΄νŠΈμ—μ„œ 이미지λ₯Ό 뢈러였렀면 곡개 URL이 ν•„μš”ν•©λ‹ˆλ‹€.

  1. 방금 λ§Œλ“  luna-assets 버킷 클릭
  2. 상단 νƒ­ "Settings" 클릭
  3. "Public Access" μ„Ήμ…˜ β†’ "Allow Access" 클릭 (r2.dev 도메인)
  4. κ²½κ³  λͺ¨λ‹¬μ—μ„œ "Allow" 확인 β†’ 곡개 URL 생성됨
  5. ν‘œμ‹œλ˜λŠ” URL 볡사: https://pub-XXXXXXXXXXXX.r2.dev
βœ… URL λ³΅μ‚¬ν•œ λ’€ site-management.html에 기둝! 까먹기 쉬움. λ˜λŠ” 카톑 μžκΈ°ν•œν…Œ 보내기.
7

API Token λ°œκΈ‰ 2λΆ„

rclone 같은 λ„κ΅¬λ‘œ μ—…λ‘œλ“œν•˜λ €λ©΄ 토큰 ν•„μš”ν•©λ‹ˆλ‹€.

  1. R2 λŒ€μ‹œλ³΄λ“œ 쒌츑 메뉴 β†’ "Manage R2 API Tokens" 클릭
  2. "Create API token" 클릭
  3. Token name: rclone-uploader μž…λ ₯
  4. Permissions: "Admin Read & Write" 선택 (λ˜λŠ” Object Read & Write)
  5. Specify bucket(s): luna-assets만 선택 (λ‹€λ₯Έ 버킷 μ ‘κ·Ό μ œν•œ)
  6. TTL: Forever (λ˜λŠ” 1λ…„ β€” λ³΄μ•ˆμƒ μ§§μ„μˆ˜λ‘ μ’‹μ§€λ§Œ 일단 Forever)
  7. "Create API Token" 클릭
🚨 ν•œ 번만 ν‘œμ‹œλ¨: λ‹€μŒ 3κ°€μ§€λ₯Ό μ¦‰μ‹œ 볡사 + μ•ˆμ „ν•œ 곳에 μ €μž₯:
  • Access Key ID
  • Secret Access Key
  • Endpoint (https://<...>.r2.cloudflarestorage.com)
λΆ„μ‹€ μ‹œ 토큰 μž¬λ°œκΈ‰ ν•„μš”. λ§₯ λΉ„λ°€λ²ˆν˜Έ λ§€λ‹ˆμ €(Keychain) λ˜λŠ” 1Password μΆ”μ²œ.
8

rclone에 μƒˆ remote μΆ”κ°€ 3λΆ„

κΈ°μ‘΄ r2 remote(skycloverve 계정)λŠ” κ·ΈλŒ€λ‘œ 두고, μƒˆ r2new remote μΆ”κ°€.

ν„°λ―Έλ„μ—μ„œ μ‹€ν–‰:

rclone config볡사
  1. n μž…λ ₯ β€” New remote
  2. name: r2new (λ˜λŠ” μ›ν•˜λŠ” 이름, 단 r2와 달라야 함)
  3. Storage: s3 μž…λ ₯ (Amazon S3 ν˜Έν™˜)
  4. provider: Cloudflare μž…λ ₯
  5. env_auth: 1 (false)
  6. access_key_id: Step 7μ—μ„œ λ³΅μ‚¬ν•œ Access Key ID λΆ™μ—¬λ„£κΈ°
  7. secret_access_key: Step 7μ—μ„œ λ³΅μ‚¬ν•œ Secret λΆ™μ—¬λ„£κΈ°
  8. region: auto
  9. endpoint: Step 7μ—μ„œ λ³΅μ‚¬ν•œ Endpoint URL λΆ™μ—¬λ„£κΈ°
    ν˜•μ‹: https://<account-id>.r2.cloudflarestorage.com
  10. location_constraint: λΉ„μ›Œλ‘κΈ° (Enter)
  11. acl: n (Not set)
  12. λ‚˜λ¨Έμ§€ λ‹€ κΈ°λ³Έκ°’ (Enter Enter Enter...)
  13. λ§ˆμ§€λ§‰μ— y β€” Yes this is OK
  14. q β€” Quit config
βœ… 확인: rclone listremotes μ‹€ν–‰ν•˜λ©΄ r2: 와 r2new: λ‘˜ λ‹€ 보여야 함.
9

ν…ŒμŠ€νŠΈ μ—…λ‘œλ“œ (1μž₯) 1λΆ„

λ°”λ‘œ 큰 폴더 μ˜¬λ¦¬μ§€ 말고, μž‘μ€ ν…ŒμŠ€νŠΈ 파일 1μž₯으둜 κΆŒν•œ 확인.

rclone copy /Users/sky7_mac/Documents/000_homepage/images/logo.png r2new:luna-assets/test/ --progress볡사

μ™„λ£Œ ν›„ λΈŒλΌμš°μ €μ—μ„œ 확인:

https://pub-XXXXXXXXXX.r2.dev/test/logo.png (Step 6μ—μ„œ 받은 Public URL + /test/logo.png)
βœ… 이미지 보이면 성곡! λ‹€μŒ λ‹¨κ³„λ‘œ.
❌ 403 λ˜λŠ” 404 λ‚˜μ˜€λ©΄:
1) Public Access (Step 6) ν™œμ„±ν™”λλŠ”μ§€ 확인
2) 파일이 μ‹€μ œ μ—…λ‘œλ“œλλŠ”μ§€ R2 μ½˜μ†”μ—μ„œ 확인
3) URL μ˜€νƒ€ 확인
10

μ™„λ£Œ μ‹œ μ €(claude)μ—κ²Œ μ•Œλ €μ£ΌκΈ° πŸŽ‰

μ•„λž˜ 3κ°€μ§€ μ •λ³΄λ§Œ μ•Œλ €μ£Όμ‹œλ©΄ λ‚˜λ¨Έμ§€λŠ” μžλ™μœΌλ‘œ μ§„ν–‰λ©λ‹ˆλ‹€ (λŒ€λŸ‰ μ—…λ‘œλ“œ + HTML 경둜 κ°±μ‹  + 배포):

  1. 1️⃣ μƒˆ Gmail μ£Όμ†Œ (예: luna.whale.r2@gmail.com)
  2. 2️⃣ Public URL (예: https://pub-XXXXXXXX.r2.dev)
  3. 3️⃣ rclone remote 이름 (예: r2new)

⚠️ Access Key/Secret은 μ ˆλŒ€ μ±„νŒ…μ— λΆ™μ—¬λ„£μ§€ λ§ˆμ„Έμš”. rclone μ„€μ • μ•ˆμ—λ§Œ μ €μž₯.

πŸ€– μ‚¬μš©μž 정보 받은 ν›„ μ œκ°€ μžλ™ μ§„ν–‰ν•  μž‘μ—…

  1. 1. μ›”λ³„μˆ˜μ—… images/lessons/ 5.8GB β†’ r2new:luna-assets/lessons/ μ—…λ‘œλ“œ (μ˜ˆμƒ 8-12λΆ„)
  2. 2. μ•„νŠΈμƒ΅ λ„μ•ˆ 0_ν™ˆνŽ˜μ΄μ§€λ―Έμˆ μˆ˜μ—…202604μΆ”κ°€μž‘μ—…/ μ•½ 2.5GB β†’ r2new:luna-assets/atelier/ μ—…λ‘œλ“œ
  3. 3. PNG β†’ JPG λ³€ν™˜ κ²°κ³Όλ¬Ό (ν˜„μž¬ μ§„ν–‰ 쀑) β†’ R2 μ—…λ‘œλ“œ
  4. 4. HTML 경둜 일괄 μΉ˜ν™˜: https://pub-5c6f81e15f364b5e9af286a8c8895682.r2.dev/lessons/ β†’ https://pub-XXXXXXXX.r2.dev/lessons/
  5. 5. art-shop.html λ„μ•ˆ μΉ΄νƒˆλ‘œκ·Έ μžλ™ 생성
  6. 6. .firebaseignore κ°±μ‹  (Firebaseμ—μ„œ lesson 이미지 μ œμ™Έ)
  7. 7. Firebase 배포 β†’ μ½”λ“œλ§Œ β†’ 배포 μ‹œκ°„ λŒ€ν­ 단좕
  8. 8. 전체 검증 (이미지 200 OK, monthly-detail μΉ΄λ“œ 확인)
  9. 9. site-management.html κ°±μ‹  (μƒˆ 계정 정보 μΆ”κ°€)

πŸ›  자주 λ°œμƒν•˜λŠ” 문제

"R2 ν™œμ„±ν™” μ‹œ μΉ΄λ“œ 등둝이 거뢀됨"

λ² νŠΈλ‚¨ μΉ΄λ“œκ°€ κ±°λΆ€λ˜λ©΄ ν•œκ΅­ μΉ΄λ“œ λ˜λŠ” PayPal μ‚¬μš©. μ‚¬μš©μžκ°€ PayPal μ˜΅μ…˜ λ“±λ‘ν•œ 게 μžˆλ‹€λ©΄ κ·Έκ±° μ‚¬μš©.

"rclone config 도쀑 λ§‰νž˜"
rclone config file
# ν‘œμ‹œλ˜λŠ” 경둜 (보톡 ~/.config/rclone/rclone.conf) 직접 νŽΈμ§‘ κ°€λŠ₯
# κΈ°μ‘΄ [r2] μ„Ήμ…˜ μ•„λž˜μ— [r2new] μ„Ήμ…˜ 직접 μΆ”κ°€:

[r2new]
type = s3
provider = Cloudflare
access_key_id = (Access Key ID)
secret_access_key = (Secret)
region = auto
endpoint = https://<account-id>.r2.cloudflarestorage.com
"ν…ŒμŠ€νŠΈ μ—…λ‘œλ“œλŠ” λλŠ”λ° URL 접속 μ‹œ 401/403"

Step 6 Public Accessλ₯Ό λ‹€μ‹œ 확인. Settings β†’ Public Access β†’ λ°˜λ“œμ‹œ "Allow Access" μƒνƒœμ—¬μ•Ό 함. λ˜λŠ” Custom Domain μ‚¬μš© μ‹œ 도메인 DNS μ „νŒŒ λŒ€κΈ° (μ΅œλŒ€ 24μ‹œκ°„).

"μƒˆ 계정 λΉ„λ°€λ²ˆν˜Έ μžŠμ–΄λ²„λ¦΄κΉŒλ΄ κ±±μ •"

λ§₯ 킀체인(Keychain Access) λ˜λŠ” 1Password에 μ €μž₯. 볡ꡬ 이메일을 skyclover777@gmail.com으둜 섀정해두면 λΉ„λ°€λ²ˆν˜Έ μžŠμ–΄λ„ 볡ꡬ κ°€λŠ₯.

κ°€μ΄λ“œ μž‘μ„±: 2026-05-17 Β· ← ν™ˆνŽ˜μ΄μ§€ 관리