メインコンテンツまでスキップ

設定同期

プロバイダー、プロファイル、デフォルトプロファイル、デフォルトクライアントをデバイス間で同期できます。認証トークンはアップロード前に AES-256-GCM(PBKDF2-SHA256 による鍵導出)で暗号化されます。

対応バックエンド

バックエンド説明
webdav任意の WebDAV サーバー(例: Nextcloud、ownCloud)
s3AWS S3 または S3 互換ストレージ(例: MinIO、Cloudflare R2)
gist非公開 gist(gist スコープ付き PAT が必要)
repoContents API 経由のリポジトリファイル(repo スコープ付き PAT が必要)

セットアップ

Web UI の設定ページから同期を設定します:

# Web UI の設定を開く
zen web # Settings → Config Sync

CLI から手動で pull することもできます:

zen config sync

設定例

{
"sync": {
"backend": "gist",
"gist_id": "abc123def456",
"token": "ghp_xxxxxxxxxxxx",
"passphrase": "my-secret-passphrase",
"auto_pull": true,
"pull_interval": 300
}
}

暗号化

passphrase を設定すると、同期ペイロード内のすべての認証トークンは PBKDF2-SHA256(60 万回反復)で導出した鍵を用いて AES-256-GCM で暗号化されます。暗号化に使う salt はペイロードと一緒に保存されます。passphrase が未設定の場合、データは平文 JSON のままアップロードされます。

競合解決

  • エンティティ単位のタイムスタンプマージ: 新しい変更が優先
  • 削除済みエンティティは tombstone を使用(30 日後に失効)
  • スカラー値(デフォルトプロファイル / デフォルトクライアント): 新しいタイムスタンプが優先

同期対象

同期されるもの: プロバイダー(暗号化されたトークンを含む)、プロファイル、デフォルトプロファイル、デフォルトクライアント

同期されないもの: ポート設定、Web UI パスワード、プロジェクトバインディング、同期設定そのもの