Twake Drive – Google Driveのオープンソース代替
(github.com/linagora)- 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/でWebインターフェースにアクセス可能
- 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設定により、ローカル環境でのPublish/Subscribe機能をサポート
- アプリケーションは基本的にポート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形態へ拡張したりできる
- 商用クラウドサービスのコスト削減とデータ主権の確保を同時に実現できる代替案として評価されている
1件のコメント
Hacker Newsの意見
ここでは多くの人が必須機能やバックアップの話をしているが、本当に重要なのはコミュニティを作り、長く維持できるかどうかだと思う
オープンソースのクラウドストレージは、メンテナーが疲弊するとすぐ消えてしまうので、持続可能なビジネスモデルや貢献者基盤は技術的なチェックリストと同じくらい重要だ
さらに**相互運用性(interoperability)**も過小評価されている。WebDAVやS3をサポートし、既存の認証システムと連携できるなら、チームはずっと試しやすくなる
結局、人々が求めているのは「ハネムーン期間」が終わっても消えないサービスだ。それは進捗バーを1つ追加するより、はるかに難しいことだ
私はSyncthingを使っているが、コミュニティに参加しろと言われたことは一度もなく、それでも今なお問題なく動いている
SyncthingはKasteloという会社がエンタープライズ向けサポートを提供して、開発費を賄っているようだ
私もオープンソースのコンサルティング会社を運営しているが、コミュニティがなくても企業契約だけで十分に維持できている
コミュニティも良いが、長期的にはビジネスモデルとマーケティング戦略のほうが重要だと思う
S3 APIをサポートするシステムなら、どんなストレージでも置き換えやすい。Backblaze、Wasabi、ローカルS3 APIなど、ほとんどがドロップインで置き換え可能だ
これまで使ったself-hostedファイル同期の中では、Seafileが一番実用的だった
ただし、サーバーのアップグレードはいまだに面倒だ。NextCloudや似たようなツールは、私の基準では完全に災害レベルだった
必要なプラグインは全部あり、性能も良く、同期も完璧だ。他の代替案を試す理由がないほどだ
以前はNextCloudが大きなリポジトリで重くなり、より強力なマシンが必要だった
Seafileは2GB RAMのARMボードでも問題なく動く
テストも徹底して行い、同期速度と応答性には驚かされた
今ではGoogle Driveからすべてのファイルを移して、メインのクラウドとして使っている
名前をTwake Dwiveにしていたら面白かったかもしれない
他の人たちも聞いているように、これがNextCloudやownCloudと比べてどうなのか気になる。それと、Windows/Mac/Mobile向けのクライアントがあるのかも知りたい
オープンソースのドライブツールの成否は3つにかかっている
TwakeがS3とLDAPをサポートしつつ、これをうまくこなせるなら可能性はある
だが本当に難しいのは信頼とドキュメントだ。明確な脅威モデル、DriveやDropboxからの移行ガイド、そしてヘッドレス環境でも動く小さなCLIが必要だ
以前、会社でバックアップは有効になっていたのに、いざ復元しようとしたら全部壊れていたことがあった。それ以来、バックアップ検証が最優先だ
58.9% TypeScriptと32.6% JavaScriptで、こんな高性能アプリを作っているのが不思議だ
言語の速度より、ボトルネックになりにくい部分のほうが重要だと思う
少し話が逸れるが、ViberやWhatsAppにGoogle Driveの代わりに別のバックアップストレージを使わせる方法はあるだろうか? ルート化してインターフェースをごまかす形で可能なのか気になる
こういうシステムに本当にデータベースは必要なのだろうか?
Unixなら、ユーザーとファイルのCRUD、権限付与だけでも十分な気がするが、そういうものをUIやAPIで包んだ古いソフトウェアはあるだろうか? SAMBAプロトコルベースでも?
さらにユーザーグループ制限をかけようとすると、グループ数の上限(65536個)にすぐ達してしまう
usersとdocumentsをjoinしたり、MongoDBのインデックスとトランザクションを活用したりしやすいバージョンメタデータ管理も簡単だし、Windowsでもハックしやすい
おそらくHNの空気とは違うだろうが、私にとって一番重要な機能は検索だ
数TBのデータを保存していると、写真1枚見つけるのも大変になる
「Nothing Streetにいる2人」のように検索できる画像解析機能が必要だ
今のところこの分野ではGoogleが圧倒的に優れているが、他のクラウドもいつか追いついてほしい
Syncthingを一度使ってみることを勧める
ただし、モバイル体験はいまだに粗い。それでもWebインターフェースで急ぎのときにファイルを取ってこられる