3秒で同期するオープンソースのObsidianプラグイン
(synch.run)Obsidian向けのオープンソース同期プラグイン Synch を開発しています。
Obsidian Sync のような体験をオープンソースで実現できないかと思い、始めました。
目標は、高速な同期、E2EE、バージョン履歴、セルフホスト可能な Obsidian Sync の代替です。
Obsidian プラグイン方式なので、別途アプリをインストールする形ではなく、Obsidian が動作するデスクトップ / モバイル環境で利用できます。
現在サポートしている機能は次のとおりです。
- ファイル内容とパスのメタデータをローカルで暗号化してからアップロード
- 複数デバイス間で数秒以内に変更を同期
- バージョン履歴
- 削除ファイルの復元
- ファイル衝突時の自動マージ
技術的には Cloudflare Workers + Durable Objects + R2 上で動作します。
- クライアント側でファイル内容とパスのメタデータを暗号化してからアップロードします。
- サーバーは暗号化された blob と同期メタデータのみを保存します。
- Durable Objects は vault 単位の同期状態と変更順序の管理に使用しています。
- ファイル本文とバージョン履歴は R2 に保存します。
自分でデプロイしてみたい方向けに、Cloudflare の無料アカウントでデプロイできるワンクリックデプロイも用意しています。
デプロイが面倒な方は、hosted server でまず簡単に試すこともできます。
GitHub: https://github.com/hjinco/synch
13件のコメント
セルフホスティングガイドを見てCloudflareに登録し、R2の有効化なども同じようにやったつもりなのですが、 同期ができませんね.. しくしく 何が間違っているのか
おお……どうやって作るのかと思っていましたが、いいですね! ただ、すべてCloudflareにひも付いているので、そこが少しだけ残念です。笑
これまでは Google Drive/DriveSync を使っていたのですが、何かと物足りなさがあって、(最後のデータが別のデバイスによって消えていたり……競合が起きたり……)Obsidian Sync を検討していました。今度一度使ってみようと思います! ありがとうございます。
セルフホスティングでアカウントを作成したのですが、同じアカウントでログインできません。
たぶん自分がパスワードを忘れたせいでしょう^^
ですが、パスワードをリセットする方法がないですね。
仕方なく GitHub repo と workers をすべて削除して再設定しているのですが、
今回はなぜか会員登録のときに、すでに存在するアカウントだと表示されます..
workers を作成するときに d1 と r2 も自動的に作成されるので、接続されている d1 と r2 も削除する必要があるはずです
教えていただいたとおりにやって解決しました。ありがとうございます。
セルフホスティングも有料ですか?
いいえ、Cloudflareのアカウントさえあれば大丈夫です。https://synch.run/ja/self-hosting のガイドを見ればよいです。
おお、完成度はかなり高そうですね。
ただ、リモートボルトを作成して2台のデバイスで同期したところ、それぞれのフォルダツリーにボルトがもう1つ増え、その下に元のフォルダツリーが重複して作られてしまいます。もともとこういう仕様なのでしょうか?
もともとそのような動作になる仕様ではありません。
その現象は私やベータテスターの方々の環境では再現していませんが、よろしければ contact@synch.run までメールをいただくか、GitHub の Issue に残してください。より詳しく確認してお手伝いします。
vaultを削除しようとしたところ、エラーが発生します。
削除 failed - coordinator purge failed with status 500
Obsidian LiveSyncとはどう違いますか?
LiveSyncはCouchDBベースのため、より汎用的なセルフホスティングが可能である一方、SynchはCloudflareに依存した構造です。
その代わり、サーバー設定の方法がわからない人でも、Cloudflareの無料アカウントさえあればボタン1つでデプロイしてすぐ使えるようにすることに重点を置きました。