개요
Drop5는 5자리 숫자 코드를 이용해 빠르고 간편하게 파일을 공유할 수 있는 일회성 파일 공유 서비스입니다. 업로드된 파일은 5분 후에 자동으로 삭제되어, 임시 파일 전송이 필요한 상황에서 안전하고 편리하게 사용할 수 있습니다.
회원가입 없이 접속 즉시 코드가 생성되며, 상대방에게 코드만 전달하면 파일을 다운로드할 수 있습니다.
저장소 정보
GitHub: https://github.com/yoonbae81/drop5
주요 기능
Drop5는 복잡한 인증절차 없이 빠르고 간단한 파일 전송에 중점을 두고 개발되었습니다.
- 5자리 세션 코드: 접속시 고유한 5자리 숫자의 세션 링크가 생성됩니다. 기억하기 쉽고 입력하기 간편합니다.
- 휘발성 저장 (TTL): 파일 업로드 후 5분이 지나면 시스템에서 영구적으로 삭제됩니다.
- 다중 파일 업로드: 여러 개의 파일을 한 번에 드래그 앤 드롭으로 간편하게 업로드할 수 있습니다.
- 파일 제한: 파일당 최대 30MB까지 지원하여 대부분의 일반적인 파일 전송에 충분합니다.
- 자동 정리: 만료된 파일과 빈 세션은 서버에서 주기적으로 자동 정리되어 스토리지 낭비를 방지합니다.
시스템 구성
Drop5는 경량 웹 프레임워크를 기반으로 최소한의 리소스로 동작하도록 설계되었습니다.
백엔드 서비스 (Bottle Framework):
- Python 기반의 가볍고 빠른 웹 프레임워크 사용
- RESTful API 설계로 직관적인 파일 업로드/다운로드 경험 제공
- 세션 관리 및 파일 수명 주기(TTL) 자동 처리
프론트엔드:
- 순수 HTML/CSS/JavaScript로 구성된 단일 페이지 애플리케이션
- 드래그 앤 드롭 인터페이스로 직관적인 파일 업로드
- 실시간 업로드 진행률 표시
배포 옵션:
- 스크립트 실행: Python 가상 환경(venv) 기반의 간편한 설치 및 실행
- Docker: 컨테이너화된 환경에서의 격리된 실행
- Systemd 서비스: Linux 환경에서의 백그라운드 서비스 운영
실행 방법
1. 스크립트를 이용한 설치 및 실행 (권장)
표준화된 자동화 스크립트를 사용하여 환경을 설정하고 실행할 수 있습니다.
# 환경 설정 (venv 생성 및 의존성 설치)
./scripts/setup-env.sh
# 서버 실행
./scripts/run.sh
2. Docker를 사용하는 경우
docker-compose up -d --build
실행 후 브라우저에서 http://localhost:5555/drop5에 접속하세요.
3. Systemd 서비스 등록 (Linux)
# 서비스 및 타이머 설치
./scripts/install-systemd.sh
# 로그 확인
journalctl --user -u drop5 -f
설정
.env 파일을 수정하여 설정을 변경할 수 있습니다.
# 서비스 포트 (기본값: 5555)
PORT=5555
# 디버그 모드 여부
DEBUG=false
# 파일 만료 시간 (단위: 초, 기본값: 300)
FILE_TIMEOUT=300
# 최대 파일 크기 (단위: 바이트)
MAX_FILE_SIZE=31457280
프로젝트 구조
drop5/
├── src/
│ ├── main.py # Bottle 프레임워크 기반의 메인 백엔드
│ └── views/
│ └── index.html # 프론트엔드 템플릿
├── scripts/
│ ├── setup-env.sh # 환경 설정 스크립트
│ ├── run.sh # 서버 실행 스크립트
│ └── install-systemd.sh # Systemd 서비스 설치
├── tests/ # 유닛 테스트 코드
├── files/ # 업로드된 파일 임시 저장소 (자동 생성)
├── Dockerfile # 컨테이너 이미지 설정
├── docker-compose.yml # 컨테이너 배포 설정
└── requirements.txt # Python 의존성
사용 시나리오
Drop5는 다음과 같은 상황에서 특히 유용합니다.
- 회의 중 문서 공유: 즉석에서 발표 자료나 문서를 전달해야 할 때
- 개발 중 로그 전송: 버그 리포트를 위해 로그 파일을 빠르게 공유할 때
- 개인 정보 보호: 이메일이나 클라우드에 남기지 않고 일회성으로 파일을 전송할 때
- 테스트 파일 전달: 임시 테스트 데이터를 빠르게 공유할 때
주의 사항
- 이 서비스는 파일의 영구 저장을 목적으로 하지 않습니다. 5분 후 파일은 복구할 수 없습니다.
- 파일 전송 중 네트워크가 끊기면 전송이 실패할 수 있습니다.
- 서버 재시작 시 업로드된 파일 정보가 초기화될 수 있습니다.
- 본 프로젝트는 개인적 사용을 전제로 하며, 발생하는 모든 책임은 사용자에게 있습니다.