# Twake Drive – Google Drive의 오픈소스 대안

> Clean Markdown view of GeekNews topic #23907. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=23907](https://news.hada.io/topic?id=23907)
- GeekNews Markdown: [https://news.hada.io/topic/23907.md](https://news.hada.io/topic/23907.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-10-25T20:34:13+09:00
- Updated: 2025-10-25T20:34:13+09:00
- Original source: [github.com/linagora](https://github.com/linagora/twake-drive)
- Points: 19
- Comments: 1

## Summary

**Twake Drive**는 **Google Drive와 유사한 파일 저장·공유 기능**을 제공하는 **오픈소스 클라우드 스토리지 플랫폼**으로, **Docker 기반 배포**를 통해 로컬 환경이나 사내 서버에 손쉽게 구축할 수 있습니다. **Node.js·MongoDB 스택**과 **프런트엔드·백엔드 분리 구조**를 채택해 확장성과 커스터마이징이 용이하며, **AGPL v3 라이선스**로 공개되어 데이터 주권을 중시하는 조직이 자체 호스팅 솔루션으로 활용하기 적합합니다. **Linagora**가 개발을 주도하며, GitHub에서 활발히 유지보수 중인 프로젝트입니다.

## Topic Body

- Twake Drive는 **Google Drive와 유사한 파일 저장·공유 기능**을 제공하는 **오픈소스 클라우드 스토리지 플랫폼**  
- **Docker 기반 배포**를 지원해 로컬 환경에서 손쉽게 구동 가능하며, **Node.js와 MongoDB**를 주요 기술 스택으로 사용  
- 프런트엔드와 백엔드가 분리된 구조로, **Yarn 기반 개발 환경**과 **로컬 파일 저장 경로 설정 기능**을 제공  
- **Affero GPL v3 라이선스**로 공개되어 있어, 기업이나 조직이 자체 호스팅 형태로 자유롭게 커스터마이징 가능  
  
---  
  
### 프로젝트 개요  
- Twake Drive는 **Linagora**가 개발한 **Google Drive의 오픈소스 대체 솔루션**으로, 파일 저장·공유·협업 기능을 자체 서버에서 운영할 수 있는 형태로 제공  
  - 클라우드 서비스 종속을 피하고, **데이터 소유권과 보안 통제**를 유지하려는 조직을 주요 대상으로 함  
- GitHub에서 공개된 저장소는 **1,000개 이상의 스타**와 **70여 개의 포크**를 기록하며 활발히 유지보수 중  
- 프로젝트는 **AGPL-3.0 라이선스**를 채택해, 소스코드 수정 및 재배포 시 동일한 라이선스 조건을 유지해야 함  
  
### 주요 기능 및 기술 스택  
- Twake Drive는 **Node.js(18.x 이상)** , **MongoDB**, **Yarn**을 기반으로 동작하며, 프런트엔드와 백엔드가 분리된 구조로 설계  
  - 프런트엔드는 `tdrive/frontend/` 디렉터리에서 `yarn dev:start`로 실행  
  - 백엔드는 `tdrive/backend/node/`에서 환경 변수를 설정 후 `yarn dev`로 구동  
- **Docker Compose**를 이용한 간단한 배포 옵션(`docker-compose.minimal.yml`)을 제공해, 로컬 테스트 및 내부 배포가 용이  
  - `http://localhost/`에서 웹 인터페이스 접근 가능  
- **MongoDB 컨테이너 실행 명령**(`docker run -p 27017:27017 -d mongo`)을 통해 데이터베이스를 손쉽게 구동  
- 환경 설정은 `tdrive/backend/node/config/development.json` 파일을 통해 세부 조정 가능  
  
### 개발 및 배포 구조  
- Twake Drive는 **프런트엔드(React 기반)** 와 **백엔드(Node.js 기반)** 가 분리되어 있으며, **로컬 파일 저장소 경로**를 직접 지정 가능  
  - `STORAGE_LOCAL_PATH` 환경 변수를 통해 문서 저장 위치를 설정  
- **PUBSUB_TYPE=local** 설정으로 로컬 환경에서의 퍼블리시·구독 기능을 지원  
- 애플리케이션은 기본적으로 **3000번 포트**에서 실행되며, 개발 및 테스트 환경에 최적화된 구조를 가짐  
- **Docker Bake** 설정 파일(`docker-bake.hcl`)과 **CI/CD용 GitHub Actions** 구성이 포함되어 있어 자동화된 빌드 및 테스트 지원  
  
### 코드 및 저장소 현황  
- 저장소는 **882개의 커밋**, **61개의 브랜치**, **46개의 태그**로 구성되어 있으며, 활발한 개발 이력 유지  
- 주요 언어 비중은 **TypeScript 58.9%** , **JavaScript 32.6%** , **SCSS 3.7%** , **CSS 2.2%** , **HTML 1.3%** , **Less 1.0%**  
  
### 라이선스 및 활용 가능성  
- Twake Drive는 **Affero GPL v3** 라이선스로 배포되어, 소스코드 수정 및 재배포 시 동일한 공개 의무를 가짐  
- 기업은 이를 기반으로 **내부 전용 클라우드 스토리지 시스템**을 구축하거나, **SaaS 형태로 확장** 가능  
- 상용 클라우드 서비스의 **비용 절감**과 **데이터 주권 확보**를 동시에 달성할 수 있는 대안으로 평가됨

## Comments



### Comment 45456

- Author: neo
- Created: 2025-10-25T20:34:14+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=45692984) 
- 여기서 많은 사람들이 **필수 기능**이나 백업 얘기를 하지만, 진짜 중요한 건 커뮤니티를 만들고 오랫동안 유지할 수 있느냐임  
  오픈소스 클라우드 스토리지는 유지보수자가 지치면 금방 사라지기 때문에, **지속 가능한 비즈니스 모델**이나 기여자 기반이 기술적 체크리스트만큼 중요함  
  또 **상호운용성(interoperability)** 도 과소평가됨. WebDAV나 S3를 지원하고 기존 인증 시스템과 연동된다면 팀들이 훨씬 쉽게 시도함  
  결국 사람들은 ‘허니문 기간’이 끝나도 사라지지 않을 서비스를 원함. 그건 진행 표시줄 하나 추가하는 것보다 훨씬 어려운 일임
  - 그건 도구의 조직 모델의 약점일 수도 있겠지만, 나는 커뮤니티에 참여하고 싶지 않음. 그냥 잘 작동하길 원할 뿐임  
    나는 **Syncthing**을 쓰는데, 커뮤니티에 참여하라는 말 한 번도 못 들었지만 여전히 잘 돌아감  
    Syncthing은 **Kastelo**라는 회사가 엔터프라이즈 지원을 제공하면서 개발비를 충당하는 듯함  
    나도 오픈소스 컨설팅 회사를 운영하는데, 커뮤니티 없이도 기업 계약으로 충분히 유지됨  
    커뮤니티도 좋지만, 장기적으로는 **비즈니스 모델과 마케팅 전략**이 더 중요하다고 생각함  
  - 개인적으로는 **S3 호환성**이 객체 스토리지의 핵심이라 생각함  
    S3 API를 지원하는 시스템이라면 어떤 스토리지든 교체가 쉬움. Backblaze, Wasabi, 로컬 S3 API 등 대부분 드롭인 교체 가능함  
  - 커뮤니티가 왜 중요한지 모르겠음. 문제를 해결하는 도구라면, 커뮤니티는 단지 유지보수 수단일 뿐임

- 지금까지 써본 **self-hosted 파일 동기화** 중에서는 Seafile이 가장 쓸 만했음  
  하지만 서버 업그레이드가 여전히 번거로움. NextCloud나 유사한 도구들은 내 기준에서는 완전한 **재앙 수준**이었음
  - 왜 재앙이라고 생각하는지 궁금함. 우리 회사에서는 **NextCloud**를 3년째 문제 없이 쓰고 있음  
    필요한 플러그인도 다 있고, 성능도 좋고, 동기화도 완벽함. 다른 대안을 시도할 이유가 없을 정도임  
  - 나는 **Docker 버전**으로 Seafile을 돌리는데, 태그만 바꾸면 업그레이드가 아주 쉬움  
    예전에는 NextCloud가 큰 리포지토리에서 버벅였고, 더 강력한 머신이 필요했음  
    Seafile은 2GB RAM의 ARM 보드에서도 잘 돌아감  
  - 최근에 Seafile을 직접 서버에 설치했는데, **백업과 보안 전략**을 세우는 데 신경을 많이 씀  
    테스트도 철저히 했고, 동기화 속도와 반응성이 놀라울 정도였음  
    이제는 Google Drive에서 모든 파일을 옮겨와 메인 클라우드로 사용 중임  
  - **Resilio**도 괜찮음. Syncthing도 좋지만, 내 경험상 Resilio가 더 빠르고 NAT 통과도 잘됨  
  - 나도 Seafile과 Seadrive를 수년째 사용 중인데, **subst 드라이브 매핑**으로 아주 잘 작동함

- 이름을 **Twake Dwive**로 했으면 재밌었을 것 같음

- 다른 사람들이 묻듯이, 이게 **NextCloud나 ownCloud**와 비교해서 어떤지 궁금함. 그리고 Windows/Mac/Mobile용 클라이언트가 있는지도 알고 싶음
  - **ownCloud**는 플랫폼별 클라이언트가 다 있지만, 각 플랫폼마다 작은 버그와 신뢰성 문제가 너무 많아서 쓸 수가 없었음  
  - **NextCloud** 설치를 시도했는데, 완전히 고통스러운 경험이었음  
  - 내 경험상 NextCloud는 **비대한 PHP 괴물** 같음. 성능도 떨어지고, Twake는 훨씬 가볍고 범위도 명확해 보임

- 오픈소스 드라이브 도구의 생사는 세 가지에 달려 있음  
  1) 절대 놀라게 하지 않는 단순한 동기화  
  2) 비기술자에게도 설명 가능한 **충돌 처리**  
  3) 문제 없는 업그레이드  
  Twake가 S3와 LDAP을 지원하면서 이걸 잘 해낸다면 가능성이 있음  
  하지만 진짜 어려운 건 **신뢰와 문서화**임. 명확한 위협 모델, Drive나 Dropbox에서의 마이그레이션 가이드, 그리고 헤드리스 환경에서도 작동하는 작은 CLI가 필요함  
  - 여기에 네 번째로 **백업 검증의 용이성**을 추가하고 싶음  
    예전에 회사에서 백업이 활성화되어 있었는데, 막상 복구하려니 전부 손상돼 있었던 적이 있음. 그 이후로는 백업 검증이 최우선임  
  - 수동으로 “지금 동기화” 버튼이 있었으면 좋겠음. Google Drive에서는 동기화 상태가 명확하지 않아 답답할 때가 많음

- 58.9% TypeScript와 32.6% JavaScript로 이런 고성능 앱을 만든다는 게 의문임  
  - 그럼 91.5%가 JavaScript 아닌가? TypeScript는 진짜 언어가 아니라는 농담임  
  - 이 앱은 **I/O 바운드**라서 TS/JS로 돌려도 문제없음  
  - 백엔드는 TS, 프론트엔드는 JS로 보임. 나는 테스트는 JS로, 앱 코드는 TS로 분리함  
    언어 속도보다 병목이 덜한 부분이 더 중요하다고 생각함  
  - 요즘 스타트업들이 **TS/JS 마이크로서비스**로 이벤트 기반 아키텍처를 구축하는 걸 보면, 그 선택이 이상하지 않음

- 약간 주제에서 벗어나지만, **Viber나 WhatsApp**이 Google Drive 대신 다른 백업 스토리지를 쓰게 할 방법이 있을까? 루팅해서 인터페이스를 속이는 식으로 가능할지 궁금함  
  - Android에서는 단순히 **share-target**으로 구현 가능함. PWA로도 쉽게 만들 수 있음

- 이런 시스템에 정말 **데이터베이스**가 필요한가?  
  Unix에서는 사용자와 파일 CRUD, 권한 부여만으로도 충분할 것 같은데, 이런 걸 UI나 API로 감싼 오래된 소프트웨어가 있을까? SAMBA 프로토콜 기반으로라도?  
  - 버전 히스토리나 공유 URL 같은 기능을 구현하려면 DB가 필요함.  
    또 사용자 그룹 제한을 걸려면 그룹 수 한계(65536개)에 금방 도달함  
  - **Cockpit**을 살펴보면 좋음. [Cockpit Applications](https://cockpit-project.org/applications)에서 파일 탐색, 권한 편집, 업로드/다운로드 등 대부분의 기능을 제공함  
  - 디스크 작업 캐싱이나 다중 노드 동기화를 위해서는 **메타데이터 저장**이 필요함. 결국 DB를 안 쓰기 어렵다고 봄  
  - 나도 그런 걸 생각해봤는데, **Python과 fsspec**으로 로컬 또는 S3/SSH 등 다양한 파일시스템을 다루는 Google Drive 스타일 인터페이스가 있으면 좋겠음  
  - DB를 쓰면 `users`와 `documents`를 조인하거나, **MongoDB 인덱스와 트랜잭션**을 활용하기 쉬움  
    버전 메타데이터 관리도 간단하고, Windows에서도 해킹하기 쉬움

- 나는 아마 HN 분위기와 다르겠지만, 내게 가장 중요한 기능은 **검색**임  
  수 TB의 데이터를 저장하다 보면 사진 하나 찾기도 힘듦  
  “Nothing Street에 있는 두 사람”처럼 검색할 수 있게 이미지 분석을 해주는 기능이 필요함  
  지금은 Google이 이 부분에서 압도적으로 뛰어나지만, 다른 클라우드들도 언젠가 따라잡길 바람

- **Syncthing**을 한 번 써보길 추천함  
  - 나도 Dropbox 학생 할인 끝난 후부터 Syncthing을 써왔음. 수년째 안정적으로 잘 작동함  
    다만 모바일 경험은 아직 거칠었음. 그래도 웹 인터페이스로 급할 때 파일을 가져올 수 있음  
  - Syncthing은 훌륭하지만, **모바일에서 대용량 파일**을 다루기엔 부적합함. 전체 동기화 방식이라 제약이 있음  
  - 내가 쓰는 **FOSS 중 가장 믿을 수 있는 도구**임. 그냥 잘 작동하고, 모든 플랫폼에서 돌아감
