R2 스토리지 가이드
Cloudflare R2는 의료진 사진, 블로그 이미지, 갤러리 사진 등을 클라우드에 저장하는 서비스입니다. 관리자 페이지에서 업로드하면 자동으로 R2에 저장되므로, 대부분의 경우 에이전트가 관리합니다.
일반 사용자
관리자 페이지에서 이미지 업로드
- 관리자 로그인 → 의료진/프로그램/블로그 관리
- 이미지 업로드 → 자동으로 Cloudflare R2에 저장
- 저장 위치:
- 의료진 사진 →
staff/폴더 - 프로그램 이미지 →
programs/폴더 - 블로그 이미지 →
posts/폴더 - 갤러리 →
gallery/폴더
R2 설정이 필요한 경우
이미지 업로드가 실패하면:
"에이전트에게 R2 설정해줘"
또는:
"이미지 업로드 안 되는데 확인해줘"
에이전트가 자동으로:
- Cloudflare 로그인 확인
- R2 버킷 생성
- 설정 업데이트
- 다시 배포
R2 vs 로컬 파일 저장
로컬 파일 (public/local/) R2 클라우드 (동적 업로드)
─────────────────────── ──────────────────────
로고, 아이콘, 정적 배너 의료진 사진, 블로그 이미지
코드에서 직접 참조 관리자 페이지에서 업로드
Git으로 버전 관리 Cloudflare가 자동 관리
저장 용량
| 항목 | 무료 한도 |
|---|---|
| 저장 공간 | 10GB/월 |
| 읽기 요청 | 1,000만/월 |
| 쓰기 요청 | 100만/월 |
일반적인 한의원 홈페이지는 무료 한도로 충분합니다.
수동 설정 (개발자용)
이미지 업로드 실패 시 직접 설정할 수 있습니다:
1단계: Cloudflare 로그인
npx wrangler login
2단계: R2 버킷 생성
npx wrangler r2 bucket create {clinic-name}-uploads
3단계: wrangler.toml 확인
[[r2_buckets]]
binding = "BUCKET"
bucket_name = "clinic-uploads" # 위 버킷명
4단계: 배포
npm run deploy
R2 파일 관리 (CLI)
에이전트 없이 직접 관리할 때:
# 버킷의 파일 목록 조회
npx wrangler r2 object list {bucket-name}
# 특정 파일 다운로드
npx wrangler r2 object get {bucket-name}/staff/1/profile.jpg --file ./profile.jpg
# 파일 업로드
npx wrangler r2 object put {bucket-name}/gallery/photo.jpg --file ./photo.jpg
# 파일 삭제
npx wrangler r2 object delete {bucket-name}/staff/1/old.jpg
문제 해결
| 상황 | 해결 |
|---|---|
| 이미지 업로드 실패 | "에이전트에게 R2 설정 확인해줘" 요청 |
| "R2 bucket not found" | npx wrangler r2 bucket list → 버킷 생성 |
| 이미지가 프로덕션에 안 보임 | npm run deploy 실행 |
관련 문서
- Cloudflare 설정 , R2와 D1 초기 설정
- 배포 가이드 , 이미지 업로드 후 배포