19 ポイント 投稿者 GN⁺ 2025-10-25 | 1件のコメント | WhatsAppで共有
  • 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以上)MongoDBYarnを基盤として動作し、フロントエンドとバックエンドが分離された構造で設計されている
    • フロントエンドはtdrive/frontend/ディレクトリでyarn dev:startにより実行
    • バックエンドはtdrive/backend/node/で環境変数を設定後、yarn devで起動
  • Docker Composeを用いたシンプルなデプロイオプション(docker-compose.minimal.yml)を提供しており、ローカルテストや内部展開が容易
  • 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件のコメント

 
GN⁺ 2025-10-25
Hacker Newsの意見
  • ここでは多くの人が必須機能やバックアップの話をしているが、本当に重要なのはコミュニティを作り、長く維持できるかどうかだと思う
    オープンソースのクラウドストレージは、メンテナーが疲弊するとすぐ消えてしまうので、持続可能なビジネスモデルや貢献者基盤は技術的なチェックリストと同じくらい重要だ
    さらに**相互運用性(interoperability)**も過小評価されている。WebDAVやS3をサポートし、既存の認証システムと連携できるなら、チームはずっと試しやすくなる
    結局、人々が求めているのは「ハネムーン期間」が終わっても消えないサービスだ。それは進捗バーを1つ追加するより、はるかに難しいことだ

    • それはそのツールの組織モデルの弱さかもしれないが、私はコミュニティに参加したくない。ただ、ちゃんと動いてほしいだけだ
      私は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のほうがずっと軽量で、範囲も明確に見える
  • オープンソースのドライブツールの成否は3つにかかっている

    1. 決して驚かせないシンプルな同期
    2. 非技術者にも説明できる競合処理
    3. 問題のないアップグレード
      TwakeがS3とLDAPをサポートしつつ、これをうまくこなせるなら可能性はある
      だが本当に難しいのは信頼とドキュメントだ。明確な脅威モデル、DriveやDropboxからの移行ガイド、そしてヘッドレス環境でも動く小さなCLIが必要だ
    • ここに4つ目としてバックアップ検証のしやすさを追加したい
      以前、会社でバックアップは有効になっていたのに、いざ復元しようとしたら全部壊れていたことがあった。それ以来、バックアップ検証が最優先だ
    • 手動の「今すぐ同期」ボタンがあるといい。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では、ファイル探索、権限編集、アップロード/ダウンロードなど、ほとんどの機能を提供している
    • ディスク操作のキャッシュやマルチノード同期のためにはメタデータ保存が必要だ。結局、DBを使わずに済ませるのは難しいと思う
    • 私もそういうものを考えたことがあるが、PythonとfsspecでローカルやS3/SSHなど多様なファイルシステムを扱えるGoogle Drive風インターフェースがあるといいと思う
    • DBを使えばusersdocumentsをjoinしたり、MongoDBのインデックスとトランザクションを活用したりしやすい
      バージョンメタデータ管理も簡単だし、Windowsでもハックしやすい
  • おそらくHNの空気とは違うだろうが、私にとって一番重要な機能は検索
    数TBのデータを保存していると、写真1枚見つけるのも大変になる
    「Nothing Streetにいる2人」のように検索できる画像解析機能が必要だ
    今のところこの分野ではGoogleが圧倒的に優れているが、他のクラウドもいつか追いついてほしい

  • Syncthingを一度使ってみることを勧める

    • 私もDropboxの学生割引が終わってからSyncthingを使ってきた。何年も安定してよく動いている
      ただし、モバイル体験はいまだに粗い。それでもWebインターフェースで急ぎのときにファイルを取ってこられる
    • Syncthingは素晴らしいが、モバイルで大容量ファイルを扱うには向いていない。全体同期方式なので制約がある
    • 私が使っているFOSSの中で最も信頼できるツールだ。ただちゃんと動くし、すべてのプラットフォームで動作する