Prerequisites

  • A Cloudflare account (free tier is sufficient)
  • An R2 bucket with an API token (R2 read & write permissions)
  • Obsidian installed with Community Plugins enabled

Setup steps

1

Install the plugin

In Obsidian: Settings → Community Plugins → Browse, search Secure-Smart-Sync, install and enable it. Or install manually by copying main.js, manifest.json, and styles.css into .obsidian/plugins/Secure-Smart-Sync/.

2

Create an R2 bucket

In Cloudflare Dashboard → R2, create a new bucket. Name it anything. Keep it private (do not enable public access).

3

Generate an API token

R2 Overview → Manage R2 API Tokens → Create API Token. Grant Object Read & Write on your bucket. Copy the Access Key ID, Secret Access Key, and Endpoint URL.

Save the secret key immediately — Cloudflare will not show it again.
4

Enter credentials in SSS settings

Open Obsidian Settings → Secure-Smart-Sync. Fill in Endpoint, Bucket, Access Key ID, and Secret Access Key. Hit Test Connection — you should see "Connected successfully".

5

Set an encryption password (recommended)

Under Encryption, enter a strong password. Leave the method as OpenSSL AES-CBC unless you need rclone-compatible filename encryption.

6

Enable Smart Sync & first sync

Toggle on Smart Sync under Automation. Then click the SSS ribbon icon to trigger your first manual sync. Done.

To pair a second device: Settings → Pair Devices → Generate Code on this device, then enter the code on the other device.

Key settings reference

SettingDefaultNotes
Smart SyncOffRecommended. Handles idle sync and cross-device notification automatically.
Idle time before sync7 sSeconds of inactivity before Smart Sync fires.
Encryption MethodOpenSSL AES-CBCUse rclone-base64 to also encrypt file names.
Conflict ResolutionKeep newerLosing side is saved as .conflict backup.
Delete BehaviourSystem trashDeletions go to OS trash by default — safest option.
Sync Config DirOffEnable to also sync .obsidian/ settings across devices.
Ignore PathsGlob patterns, one per line. e.g. *.tmp or archive/.

Running into something unexpected? Check the Troubleshooting guide.