card.pe.kr
Decap CMS와 R2 이미지 업로드 설정 가이드

Decap CMS와 R2 이미지 업로드 설정 가이드

GitHub OAuth, Cloudflare Worker, R2 버킷을 연동하는 방법을 단계별로 설명합니다.

Decap CMS에서 이미지를 GitHub 대신 Cloudflare R2에 저장하는 것이 이 프로젝트의 핵심 설계입니다.

왜 R2인가?

Git 저장소에 이미지를 커밋하면:

  • 저장소 크기가 빠르게 증가합니다
  • 빌드 시간이 길어집니다
  • Git LFS 없이는 대용량 파일 관리가 어렵습니다

R2를 사용하면 이미지는 CDN URL로 서빙되고, Git에는 마크다운만 남습니다.

아키텍처

Decap CMS (/admin)
  ├── GitHub backend → 마크다운·메타데이터 커밋
  ├── OAuth Worker → GitHub 인증
  └── R2 Upload Worker → 이미지 업로드
        └── R2 bucket → 공개 URL 반환

설정 순서

  1. Cloudflare R2 버킷 생성 및 공개 도메인 연결
  2. R2 Upload Worker 배포 (workers/r2-upload.js)
  3. OAuth Gateway Worker 배포 (workers/oauth-gateway.js)
  4. public/admin/config.yml에서 GitHub repo·branch·OAuth URL 설정
  5. Cloudflare Pages에 사이트 배포

자세한 내용은 프로젝트 루트의 README.md를 참고하세요.

마크다운에 이미지 삽입

CMS 미디어 라이브러리에서 이미지를 업로드하면 R2 공개 URL이 자동으로 본문에 삽입됩니다:

![설명](https://media.card.pe.kr/uploads/2026/07/example.jpg)

이 URL은 빌드 시 그대로 HTML에 렌더링됩니다.