개요

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분 후 파일은 복구할 수 없습니다.
  • 파일 전송 중 네트워크가 끊기면 전송이 실패할 수 있습니다.
  • 서버 재시작 시 업로드된 파일 정보가 초기화될 수 있습니다.
  • 본 프로젝트는 개인적 사용을 전제로 하며, 발생하는 모든 책임은 사용자에게 있습니다.