Claude Memory Sync: server
リポジトリ:
- サーバー(本リポジトリ):https://github.com/le0nardomartins/ClaudeMemorySync-Server
- クライアント(PCごと):https://github.com/le0nardomartins/ClaudeMemorySync。クライアントにはスキル
claude-memory-syncが含まれ、3-wayマージを実行し、すべてをSYNC_KEYで暗号化します。また、サーバーなしのモード(プライベートGitリポジトリを使用)もサポートしています。
サーバーはマージを実行せず、コンテンツを読み取りません。サーバーはマニフェストと暗号化されたblobを保存し、最新バージョンからの新しいバージョンのみを受け付けます(それ以外は 409 conflict)。
必要に応じて、このフォルダ内の以下のファイルを参照してください:
deploy.md:Railwayまたは他のプロバイダーへのデプロイ、更新api.md:プロトコル、リクエストのデバッグ用operations.md:SQLによる照会とメンテナンス、バックアップ、失効、診断
常に有効なルール
- データ。 PCに
SYNC_KEYがある場合、データベースには暗号化されたデータのみが含まれます。SYNC_KEYがない場合、データベースにはユーザーのAPIキーが含まれます。いずれの場合でも、Postgresを公開せず、DATABASE_URLを共有しないでください。 - キー。
CLIENT_PUBLIC_KEYSには公開鍵のみが含まれており、公開しても問題ありません。CLIENT_PRIVATE_KEYとSYNC_KEYはサーバーやチャットに送信しないでください。 - 確認後にデプロイ、プッシュ、Railway上の変数変更、
TRUNCATE、DELETE、またはその他の元に戻せないアクションを実行してください。データを変更する前に、バックアップ(pg_dump、operations.mdを参照)を取得してください。 - プロトコルの固定。 クライアントとサーバーは同じバージョンのプロトコルを使用する必要があります。一方を更新する際は、すべてのPCで他方も更新するようユーザーに促してください。
- サーバーをリセットしても、PC上のデータは削除されません。 各PCはローカルにベースを保持し、次の同期ラウンドですべてを再送信します。すべてのPCからファイルを削除するには、1台のPCでファイルを削除するだけで十分です。そのためにサーバーを操作する必要はありません。
タスク
初期デプロイ
deploy.md →「Railway」の手順に従ってください。ユーザーには以下が必要です:
- ダッシュボードでプロジェクトとPostgresを作成するか、Railway CLIの使用を許可する
- 公開鍵を貼り付ける
最後に、ログに memory server on port ... | authorized PCs: ... という行が表示されることを確認してください。
PCを認可する
- PCでキーを生成します:
python src/components/remote_client.py keygen <name>(クライアント)またはnpm run keygen -- <name>(こちら)。 <name>:<base64>をCLIENT_PUBLIC_KEYSにカンマ区切りで追加します。他のエントリは削除しないでください。- Railwayは自動的に再起動します。ログの「authorized PCs」に名前が表示されることを確認してください。
PCを失効させる
CLIENT_PUBLIC_KEYS から該当するエントリを削除します。マシンが侵害された場合は、すべてのPCで SYNC_KEY を変更し(クライアントのトラブルシューティングを参照)、履歴をリセットするよう指示します(operations.md)。
診断する
サービスのログ(Railwayダッシュボードまたは railway logs)を読み、operations.md →「診断」と比較してください。クライアント側では、ファイルは sync.log です。409 の後に 201 が続くのは正常です。
データベースの照会またはメンテナンス
operations.md のクエリを使用します。一時的なアクセスには railway connect Postgres を使用します。読み取り専用のクエリを優先し、書き込み操作は必ず確認してください。
サーバーを更新する
- リポジトリにプッシュします。Railwayは
Dockerfileを使用してデプロイします。マイグレーションは起動時に自動的に実行されます(db.migrate)。 - その後、クライアントの更新を依頼してください。