Cloudflare Workers를 사용하여 개인용 이미지 호스팅 및 파일 관리자를 구축했습니다
요약
Cloudflare Workers, D1, KV를 활용하여 서버리스 기반의 개인용 이미지 및 파일 호스팅 서비스인 ImgBed를 구축한 사례를 소개합니다. 사용자가 복잡한 설정 없이 쉽게 배포할 수 있도록 배포 UX와 에러 메시지 개선에 중점을 두었습니다.
핵심 포인트
- Cloudflare Workers와 Pages를 활용한 서버리스 아키텍처 구현
- D1 및 KV를 이용한 데이터 및 스토리지 관리
- API 토큰 기반의 보안 및 파일 관리 기능 제공
- 사용자 편의를 위한 단계별 배포 흐름 및 UX 최적화
저는 서버를 유지 관리할 필요 없이 배포할 수 있는 작은 이미지 호스팅 서비스를 원했습니다.
제가 시도했던 대부분의 이미지 호스팅 도구들은 특정 스토리지 제공업체에 너무 종속되어 있거나, 파일 관리용으로는 너무 단순하거나, 혹은 전통적인 백엔드 (Backend)를 유지 관리해야 했습니다. 그래서 저는 Cloudflare Workers를 기반으로 ImgBed를 구축했습니다.
이 서비스는 개인용 이미지 호스팅 및 경량 파일 호스팅을 위해 설계되었습니다. 핵심 아이디어는 간단합니다. Cloudflare를 배포 및 런타임 (Runtime) 레이어로 사용하고, 웹 UI에서 업로드, 파일, API 토큰 및 스토리지 채널을 관리하는 것입니다.
현재 지원하는 기능:
- Cloudflare Workers 또는 Pages로 배포
- 파일 업로드 및 파일 관리
- API 토큰 기반의 업로드, 목록 조회, 삭제 및 파일 관리
- 다중 스토리지 채널 설정
- 업로드 제한 및 토큰 권한과 같은 기본 보안 설정
- 모든 것을 수동으로 설정하고 싶지 않은 사용자를 위한 배포 흐름 (Deployment flow)
기술 스택은 주로 다음과 같습니다:
- Cloudflare Workers / Pages
- Cloudflare D1
- Cloudflare KV
- Vue 프론트엔드 (Frontend)
- API 토큰 기반 관리 엔드포인트 (Endpoints)
제가 많은 시간을 할애한 부분 중 하나는 배포 UX (User Experience)였습니다. Cloudflare는 강력하지만, KV/D1 리소스 누락, OAuth 권한, 또는 workers.dev URL 설정과 같은 작은 부분들이 새로운 사용자들에게는 혼란스러울 수 있습니다. 그래서 단계별 배포 진행 상황과 더 명확한 에러 메시지를 추가했습니다.
예를 들어, Workers 프로덕션 URL이 활성화되지 않은 경우, 이제 배포 페이지는 단순히 일반적인 실패를 보여주는 대신 사용자에게 정확히 무엇을 활성화해야 하는지 알려줍니다.
문서:
https://github.com/axibayuit-a11y/imgbed-docs
저는 여전히 문서와 배포 흐름을 개선하고 있습니다. Cloudflare Workers, D1, KV를 사용하거나 이미지/파일 셀프 호스팅 도구를 사용하는 분들의 피드백은 매우 큰 도움이 될 것입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기