世界を動かす技術を、日本語で。

Twake Drive – Google Driveのオープンソース代替品

概要

Twake Driveのローカル環境構築手順を簡潔にまとめ Dockerまたは手動セットアップの方法を説明 必要な前提条件と推奨ツールの案内 主要なコマンドや設定ファイルの場所を紹介 ライセンス情報も明記

Twake Drive ローカル環境構築ガイド

  • Twake Drive は、 オープンソースのドライブ管理ツール
  • GitHubリポジトリ からクローンしてローカルで利用可能
  • Docker または 手動セットアップ の2通りの構築方法を提供

クローン手順

  • リポジトリのクローン
    • git clone https://github.com/linagora/twake-drive

Dockerでの起動

  • ディレクトリ移動
    • cd tdrive
  • 最小構成での起動
    • docker compose -f docker-compose.minimal.yml up
  • ブラウザでアクセス
    • http://localhost/

開発環境前提条件

  • Node.js (バージョン 18.x以上
  • MongoDB
  • Yarn (推奨)

手動セットアップ

  • MongoDB の起動(Docker利用例)
    • docker run -p 27017:27017 -d mongo
  • フロントエンド の起動
    • cd tdrive/frontend/; yarn dev:start
  • バックエンド の起動
    • cd tdrive/backend/node/; SEARCH_DRIVER=mongodb DB_DRIVER=mongodb PUBSUB_TYPE=local \
    • DB_MONGO_URI=mongodb://localhost:27017 STORAGE_LOCAL_PATH=/[full-path-to-store-documents]/documents \
    • NODE_ENV=development yarn dev
  • 追加パラメータが必要な場合
    • tdrive/backend/node/config/development.jsonファイルを作成・編集

ポート情報

  • アプリケーションは ポート3000 で稼働

主要ファイル

  • README.md :概要と手順
  • docker-compose.yml :Docker構成
  • CONTRIBUTING.md :貢献ガイド
  • CODE_OF_CONDUCT.md :行動規範
  • LICENSE :ライセンス詳細

ライセンス

  • Affero GPL v3 でライセンスされたオープンソースプロジェクト

Hackerたちの意見

他の人も聞いてるけど、nextCloudとownCloudと比べてどうなの? Windows/Mac/モバイル用のネイティブクライアントはあるの?

ownCloudのファンになりたいんだけど、Mac/Linux/mobileでネイティブにクライアントを提供してるのに、めちゃくちゃなんだよね。どのプラットフォームにも小さなバグや信頼性の問題があって、全体が役に立たなくなっちゃってる。

IME NextCloudは、パフォーマンスが悪い膨れ上がったPHPモンスターだね。Twakeはもっとスリムで、範囲も狭いみたい。

一度ネクストクラウドをインストールしようとしたけど、ほんとに苦痛な経験だったよ。

これにデータベースって本当に必要なの? Unixシステムなら、ユーザーやファイル、ディレクトリのCRUDができるはずだし、ファイルやディレクトリに権限を付与することもできるよね。 "Google Drive"の代替として、これらの機能を持つUIやAPIラッパーを提供する10年前のソフトウェアってあるのかな? SAMBAプロトコルを使って。

自宅ネットワークの外にSAMBA共有を公開してるの?

… まあ、usersdocumentsコレクションを「結合」できるのは理にかなってるし、集約パイプラインの表現力をフルに活用できるからね(MongoDBコレクションに追加のインデックスを簡単に追加したり、トランザクションを持ったり、レプリケーションも追加できるのは、一般的なファイルシステムでは難しい)。ドキュメントにバージョン管理されたメタデータをいろいろ載せられるし、変なエンコーディングを考えなくてもいいし、POSIX(やNodeJS)がFS関連の機能をたくさん提供してるけど、すごくシンプルに保つのが理にかなってると思うし、Windowsでも簡単にハックできるよね。

SCPかFTPクライアントとか?

それについては知らないけど、前に考えたことがあって、Pythonとfsspecを使ってみたことがある。ローカルファイルや好きなファイルシステム(sshやs3など)で動くGoogle Driveスタイルのインターフェースがあったらめっちゃいいよね。

これにデータベースって本当に必要なの? このプロジェクトがどう設計されたのかは全然わからないけど、a) ディスク操作はキャッシュできるし、すべきだと思うし、b) 複数ノード間でファイル共有を同期するのはメタデータを保存することが簡単に含まれるよね。どちらの場合でも、データを永続化する必要があるって気づいたら、データベースを使わない理由を見つけるのは難しいと思うよ。

もしかしたら、ファイルをディスクに保存する代わりにMongoDB GridFSを使ってるのかもね。

正直言って、Active DirectoryのACLを使った基本的なSamba共有が、実は最高のストレージシステムなんじゃないかと思ってる。でも、権限管理のUIがクソで、ほとんどの人が自分の思い通りに設定するためのアクセス権が足りないんだよね。全体的に見ても、Hashicorp Vaultが要求する設定をするより、Sambaファイル共有とACLでずっと便利な権限を設定できるよ。特定のリソースへのアクセスを簡単に許可できるし、IISとKerberosを使えばHTTP APIも使えるしね。

データベースなしで、バージョン履歴やファイルの共有URLをどう実装する?もう一つの問題は権限だね。特定のユーザーグループにファイルへのアクセスを制限したい場合、そのグループを作らなきゃいけない。Linuxは最大65536のグループをサポートしてるけど、ユーザーが多いとすぐに枯渇しちゃうかも。

"cockpit"を見てみて。もしあったら、そこに「あるべき」だと思うよ。https://cockpit-project.org/applications -- コマンドラインを使わずに、ファイルシステム全体をナビゲートしたり、ファイルを作成、削除、名前変更したり、ファイルの内容を編集したり、所有権や権限を編集したり、ファイルやディレクトリへのシンボリックリンクを作成したり、切り取り、コピー、ペーストでファイルを整理したり、ドラッグ&ドロップでファイルをアップロードしたり、ファイルやディレクトリをダウンロードしたりできるよ。

サービスのテナント、つまりファイルやメール、その他何でも、そのユーザーのために自動的にOSユーザーアカウントが存在していた時代は、もう何十年も前のことだよ。

USBメモリ、クラウドの代替品。

失くしたり、壊したり、湿気や高温でダメにしたりするまで気づかないよね。言ってしまえば、VPSでtwakeを動かしてるなら、デフォルトで追加の冗長性があるってことだね。

冗談でしょ?USBメモリは好きだけど、クラウドストレージの代わりにはならないよね。例えば、どうやって特定のファイルやフォルダを他の国の特定の人と共有するの?

USBメモリは3-2-1ルールの「2」の一部を満たすことができるよ。

USBメモリのおかげで、どうやって共同でドキュメントを編集できるのか分からないな。

俺も前にそう思ったけど、友達の中にはマジでPCを持ってないやつもいるんだよね。タブレットかスマホだけで、家にはUSB-Aなんてテレビにしかないかも。まぁ、USB-Cのペンドライブの出番だね。

58.9%がTypeScriptで、32.6%がJavaScriptって、高パフォーマンスでスループットが求められるアプリには、あんまり向いてない気がするんだけど、なんでだろう?

スタートアップがイベント駆動アーキテクチャを使ってTS\JSマイクロサービスの「スタック」を拡張したいなら、みんなに聞いてみるといいかも。

58.9% TypeScriptと32.6% JavaScript それって91.5% JavaScriptじゃない?TypeScriptは本物じゃないよ。

バックエンドはTSで書かれてるみたいで、フロントエンドはJSなんだ。俺はテストをJSで書いて、アプリケーションコードをTSで書くことで、教会と国家を分けてるよ。もし「なんでこの言語なの?」って聞いてるなら、他の言語の方が速いって言われることが多いけど、実際にはそれほどボトルネックになってないことが多いんだよね。

数年前に似たようなものを作ったことがあるんだ。これを作るのはすごく難しいから、ちょっと調べてみたよ。1: これはフランスの会社Linagoriaがバックについてるみたい。会社についてはあまり知らないけど、ちょっと前からあるみたい。2: 似たような製品でMongodbを試したけど、すごく信頼性が低かった。Mongodbを使ってから色々変わったかもしれないけど、一般的にデータが失われることを前提にしてない限り、その製品には警戒してるよ。(当時のMongodbの問題は、CTOが失われるデータの使用ケースだけをターゲットにしたがってたけど、Mongodbを使いたい人たちはSQLより使いやすいデータベースを求めてたってこと。)

すごく経験豊富な開発者から、絶対にMongoには近づくなって警告されたことがある。だから、採用を望むならその選択をもっと説明した方がいいよ。信頼性が問題だったんだ。

オープンソースのドライブツールは、3つのことにかかってる。1) 驚かせないシンプルな同期。2) 技術に詳しくない友達にも説明できるクリーンな競合処理。3) ドラマのないアップグレード。もしTwakeがこれらをうまくやって、S3やLDAPとの健全なオンプレミスストーリーを維持できれば、チャンスがあると思う。もっと難しいのは信頼性とドキュメント。明確な脅威モデル。DriveやDropboxからのスムーズな移行ガイド。そして、ヘッドレスボックスで動く小さなCLI。これらを実現すれば、チームは本格的な仕事で試してみるはずだよ、週末のテストだけじゃなくて。

手動で「今すぐ同期」ってオプションが欲しいな。たまにWindowsエクスプローラーを使ってGoogleドライブにファイルを入れるんだけど、同期しているかどうか、している理由やしていない理由、どうすればいいのかがすぐには分からないんだよね。

4つ目を追加したいな。「バックアップを簡単に取れて、正しいか確認できるようにする」ってこと。データストアを考えるとき、これが一番の心配事の一つだと思ってる。実際に働いてた会社で、主要なデータストアのバックアップが何年も有効だったのに、いざ何か起きて生産データを失ったとき、バックアップが実際には復元できない状態だったってことがあったから、その不安はリアルな経験から来てるんだよね。

あと、https://cryptpad.fr/ - https://cryptpad.org/ - https://github.com/cryptpad/cryptpad もあるよ。

それ、すごくいいね!シェアしてくれてありがとう。リストに「Splitwiseの代替」みたいなものを追加したいな。オープンソースでも?それはちょっと良すぎる気がする。

必須機能やバックアップについての話がたくさんあるけど… でも、これらのツールを成功させるかどうかのもう一つの要素があるんだよね… コミュニティを築いて、何年も続けられるかどうか… オープンソースのクラウドストレージプロジェクトは、メンテナが燃え尽きるとすぐに消えちゃうから… 持続可能なビジネスモデルや強力な貢献者の基盤が、技術的なチェックリストと同じくらい重要なんだ… それに、相互運用性も過小評価されてるよ… もしドライブがWebDAVやS3に対応していて、既存のアイデンティティシステムに接続できるなら、チームは試してみたくなる… 結局、人々はハネムーンが終わった後も消えないものを求めてるんだよね… それは進捗バーを追加するよりも難しいことなんだ。

確かに。「S3互換」ってのはオブジェクトストレージの最先端だと思う。基本的なS3のプリミティブをサポートしてるストレージシステムと話せれば、長期的に見て安定性が増すし、ロックインもないよ。S3そのものやBackblaze、Wasabi、Backblaze B2、S3 APIを公開してるローカルストレージとか、いろいろ使える。置き換えも、既存のオブジェクトを読んだりスキャンしたりインデックスしたりできるなら、ほぼそのまま使えるよ。

Seafileは、今のところ自ホストのファイル同期において十分なものだと思ってる。でも、サーバーバージョンのアップグレードはまだ面倒だね。nextCloudやその仲間たちは、私の意見では完全に失敗だよ。

Resilioも結構いいよ、使い方次第だけど。(Syncthingも素晴らしいけど、俺の経験ではResilioの方が速くてNATトラバーサルが得意だね。)

Syncthingを試してみて!