본문으로 건너뛰기

설정 동기화

제공자, 프로필, 기본 프로필, 기본 클라이언트를 여러 디바이스 간에 동기화할 수 있습니다. 인증 토큰은 업로드 전에 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의 Settings 페이지에서 동기화를 설정합니다:

# 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를 설정하면 동기화 payload 안의 모든 인증 토큰은 PBKDF2-SHA256(60만 회 반복)으로 파생한 키를 사용해 AES-256-GCM으로 암호화됩니다. 암호화 salt는 payload와 함께 저장됩니다. passphrase가 없으면 데이터는 평문 JSON으로 업로드됩니다.

충돌 해결

  • 엔터티별 타임스탬프 병합: 더 최근 수정이 우선
  • 삭제된 엔터티는 tombstone 사용 (30일 후 만료)
  • 스칼라 값(기본 프로필 / 기본 클라이언트): 더 최근 타임스탬프가 우선

동기화 범위

동기화됨: 제공자(암호화된 토큰 포함), 프로필, 기본 프로필, 기본 클라이언트

동기화되지 않음: 포트 설정, Web UI 비밀번호, 프로젝트 바인딩, 동기화 설정 자체