Syncing Obsidian Vaults via AWS S3
Syncing Obsidian via S3: The Perfect Cross-Device Setup (with Backups)
Finding the right cross-device sync strategy for Obsidian can feel like an endless quest. While the official Obsidian Sync is great, many developers and tech-savvy users prefer utilizing infrastructure they already own.
If you already have an AWS account, you can establish a robust, fast, and secure syncing pipeline using the community plugin S3 Sync + Backup (by Ceilao Labs). This plugin provides bi-directional multi-device reconciliation and hourly snapshot backups directly into an Amazon S3 bucket.
Here is exactly how to set everything up, navigate occasional sync conflicts, and handle the plugin’s current limitations.
Step 1: Prepare Your AWS Infrastructure
Before opening Obsidian, we need to set up a private S3 bucket and an IAM user with minimal, scoped-down permissions.
1. Create the S3 Bucket
- Log in to the AWS Management Console and navigate to S3.
- Click Create bucket.
- Choose a globally unique Bucket name (e.g.,
my-obsidian-vault-storage). - Select your preferred AWS Region (keep note of this, e.g.,
us-east-1oreu-central-1). - Leave Block all public access enabled to keep your vault private.
- Click Create bucket.
2. Create the IAM User and Policies
To securely authorize the Obsidian plugin without exposing your entire AWS account, create an isolated Identity and Access Management (IAM) user.
- Navigate to the IAM Console -> Users -> Create user.
- Set a username (e.g.,
obsidian-sync-user). Do not grant them console access. Click Next. - Select Attach policies directly and click Create policy. This opens a new window.
- Switch to the JSON tab and paste the following policy (replace
my-obsidian-vault-storagewith your actual bucket name):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::my-obsidian-vault-storage"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::my-obsidian-vault-storage/*"
}
]
}
- Name the policy
ObsidianS3SyncPolicyand click Create policy. - Go back to the user creation tab, refresh the policies list, select
ObsidianS3SyncPolicy, and finish creating the user.
3. Generate Access Keys
- Open your newly created
obsidian-sync-user. - Go to the Security credentials tab.
- Scroll to Access keys and click Create access key.
- Select Application running outside AWS and proceed.
- Crucial: Copy the Access Key ID and Secret Access Key. Store them safely; the secret key will never be shown again.
Step 2: Configure Obsidian
With your AWS credentials ready, configure your devices. This plugin works smoothly across macOS, Windows, Linux, iPad, and iPhone.
- In Obsidian, go to Settings -> Community plugins -> Browse.
- Search for S3 Sync + Backup and click Install, then Enable.
- Open the plugin settings tab and input your AWS configuration:
- Provider: AWS S3
- Region: Your bucket region (e.g.,
eu-central-1) - Bucket name:
my-obsidian-vault-storage - Access Key ID: Your IAM Access Key ID
- Secret Access Key: Your IAM Secret Access Key
- Click Test Connection to confirm everything is configured properly.
Adjusting Sync and Backup Profiles
- Sync Frequency: Toggle Auto-sync on. A 5-minute sync interval strikes a solid balance for background tasks. Turn on Sync on startup so your vault updates the moment you open Obsidian.
- Backups: Toggle Enable backups. The plugin stores historical snapshots under a separate prefix (
backups/). Set a retention policy (e.g., keep 30 days of data) to preserve safe points without cluttering your bucket.
The Reality of Multi-Device Workflows
Once installed across a computer, iPad, and iPhone, the synchronization engine handles regular changes smoothly. However, relying on object storage introduces distinct behavioral patterns to keep in mind.
Avoid the “Simultaneous Edit” Trap
Because S3 sync relies on periodic intervals (like every 5 minutes) rather than live WebSocket-based streaming, editing the exact same note concurrently on two separate devices will inevitably trigger a sync conflict.
Fortunately, this rarely disrupts an ordered routine. If you transition sequentially from one device to another—using your work computer during the day, picking up your iPad in the evening, and checking your iPhone on the go—the data syncs cleanly without generating duplicate conflict files.
The Downside: No .obsidian Folder Sync (Yet)
The main limitation of the plugin is that it does not yet sync hidden files, meaning your .obsidian directory stays local.
Because of this, core settings, hotkeys, themes, and community plugins must be manually configured to match across every device. While this requires some initial overhead to align your ecosystem, the feature is highly requested and sits clearly marked “on the roadmap” within the project’s GitHub issues. Until implemented, changes to plugins or layouts require duplicating those adjustments on your other devices.