22P by xguru 5일전 | favorite | 댓글 2개
  • 파일을 공유할 수 있는 경량 서버로, 정해진 다운로드 횟수 또는 일수가 지나면 만료
  • 서비스 중단된 Firefox Send와 유사하지만 관리자만 파일을 업로드할 수 있음
  • 회사나 개인이 파일을 매우 쉽게 공유하고 나중에 삭제하여 공간 절약, 서버에서 파일을 다운로드하는 사람을 제어 가능
  • API를 제공하며, 동일한 파일은 중복 제거됨
  • 로컬 스토리지 대신 AWS S3 및 Backblaze B2를 사용 가능
  • HTML/CSS에 대한 지식만 있으면 커스터마이징 할 수 있음
  • 종단 간(E2E) 암호화를 포함

얼마 전에 클라우드의 VM에 있는 기가바이트 단위의 파일을 다른 곳으로 전송할 일이 있었습니다.
옮길 곳이 제 PC였다면 그냥 croc 같은 도구를 사용했겠지만, 파일을 받을 곳에서 웹 브라우저 외의 다른 도구를 사용하기가 좀 그런 상황이었습니다. 그래서 처음에는 웹 브라우저 기반의 파일 전송 솔루션을 몇 가지 시도해봤지만, 속도가 느리거나 알 수 없는 이유로 전송 막바지에 마무리가 되지 않는 문제가 있더군요.

그래서 최종적으로는 dufs를 사용하여 VM을 임시 파일 서버로 만들었습니다. 방화벽에서 적당한 포트를 열어주고, mkcert로 셀프 서명 인증서를 대충 하나 만들고, 파일 다운로드 권한만 있는 임시 사용자 계정을 실행 옵션으로 만들어 썼지요.
결과적으로 문제는 잘 해결했지만, 파일 서버에서 셀프 서명 인증서까지 만들어줬다면 조금 더 편했겠다 싶기는 했습니다.

지금 소개된 이 도구는 직접 써보지는 않았지만 셀프 서명 인증서 만드는 기능까지 내장하고 있는 것 같습니다. 대신에 최초 설치 과정이 조금 더 복잡해 보이는데, 아마 한번 띄워두고 계속 쓰는 걸 상정해서 그런 게 아닐까 싶네요. 아무튼 큰 파일을 전달하거나 파일을 주고받을 때 웹 브라우저 말고 다른 걸 쓰기 곤란할 때는 파일 공유 서버를 자체 호스팅하는 것도 괜찮은 선택인 것 같습니다.

퇴근 후에 이것과 비슷한 도구가 더 있나 찾아보니까 Simple Web Server나 HFS(https://www.rejetto.com/hfs/) 등이 있네요. 이 도구들은 모두 자체 HTTPS 인증서 생성을 지원합니다.

Simple Web Server는 자체 GUI를 지원하는 멀티플랫폼 도구이고, 특히 여러 웹 서버를 한번에 띄울 수 있는 점이 돋보입니다. 다만 전반적으로 파일 서빙 자체보다는 웹 프론트엔드 개발용이라는 느낌이 더 강합니다.
예를 들면 파일 업로드를 허용할 수는 있지만 HTTP PUT 메소드를 직접 호출해야 하며, 기본적으로 제공하는 인덱스 페이지에서는 어떠한 파일 업로드 기능도 내장하고 있지 않습니다. 또한 HTTP Basic Auth를 지원하기는 하지만 오직 하나의 사용자 계정만을 지원합니다. 그리고 사소한 단점일 수도 있지만, Electron 기반이라 설치 파일의 용량이 100 MiB를 넘어갑니다.

HFS는 좀 더 웹을 통한 파일 공유에 특화된 도구로 보입니다. 실행시키면 기본 브라우저를 통해 Admin 사용자 인터페이스가 나타나고, 각자 세부 권한이 다른 다중 계정 생성이나 업로드/다운로드 속도 제한, 로깅은 물론 GeoIP나 Dynamic DNS 같은 기능까지 있습니다. 자체 서명 인증서 생성이 가능한 것은 물론이고, 심지어 Let's Encrypt 인증서를 자동으로 갱신하는 옵션까지 있군요.
참고로 릴리즈된 실행 파일은 Node.js 런타임을 내장하고 있으며, 용량은 40 MiB가 좀 넘는 수준입니다. 그게 싫고 Node.js가 이미 설치되어 있다면 npx hfs@latest면 충분합니다.
앞으로 파일 수신처에서 다른 도구를 사용하기가 곤란한 상황이라 자체 파일 서버를 띄워야 하는 상황이라면 일단 이걸 선택할 것 같습니다.