Build a Personal Knowledge Base with S3: Zero-Cost Obsidian Sync Using GoMount

Turn your Obsidian vault into a cloud-synced knowledge base that follows you everywhere, powered by S3-compatible storage and GoMount.

August 25, 2026 · Cloud Storage

Why Obsidian + S3?

Obsidian has become the go-to tool for building a personal knowledge base. Its vaults are plain Markdown files organized in a folder hierarchy, with no proprietary database, no server-side API, and no vendor lock-in. Every note, every link, every tag lives as a .md file on your local disk. That simplicity is a superpower when it comes to syncing.

S3-compatible object storage is equally simple in its own way: you upload files to a bucket, and they are available from anywhere on the planet. When you combine the two, you get a knowledge base that is portable, durable, and accessible from any device that can reach the internet. And with GoMount, the S3 bucket appears as a local folder on your Mac, so Obsidian does not even know it is talking to the cloud.

The best part? Cloudflare R2 offers a generous free tier that is more than enough for a personal Obsidian vault. You can run this entire setup at zero cost, with no subscription, no per-user fees, and no egress charges.

Prerequisites

  • A Mac running macOS 13 or later.
  • GoMount installed. If you have not set it up yet, start with the Getting Started guide.
  • Obsidian installed on at least one device.
  • A Cloudflare account (free). You will create an R2 bucket in the next steps.

How Obsidian vaults work

Before diving into sync, it helps to understand exactly what an Obsidian vault is. A vault is simply a folder on your file system. Inside that folder you will find:

  • Markdown files (.md) — your notes, organized in subfolders however you like.
  • A .obsidian folder — configuration, plugins, themes, hotkeys, and workspace layout. This is Obsidian's metadata, not your content.
  • An .trash folder — deleted notes that Obsidian keeps for recovery.
  • Attachments — images, PDFs, and other files you have embedded in notes, usually stored in a subfolder you designate.

Because the vault is just a folder of files, any tool that can keep a folder in sync across devices can sync an Obsidian vault. There is no database to migrate, no export step, and no format conversion. You point Obsidian at a folder, and it reads and writes Markdown files directly.

This is fundamentally different from apps like Notion or Roam Research, which store everything in a proprietary cloud database. With Obsidian, you own your data at the file level, and S3 is a natural fit for storing and retrieving those files.

The problem with existing sync options

Obsidian users typically choose from a handful of sync strategies, each with trade-offs:

Method Cost Pros Cons
Obsidian Sync $4/month Official, end-to-end encrypted, version history Recurring cost; limited to 1GB vault size on the standard plan
iCloud Drive Free (5GB) or included with Apple storage plans Zero setup on Apple devices Not available on Android or Linux; sync conflicts are opaque; no version history for individual files
Syncthing Free (open source) Peer-to-peer, no cloud needed Requires all devices to be online simultaneously; no central backup; conflict files pile up
S3 + GoMount $0/mo on R2 free tier Central storage, versioning, works on any OS, no subscription Requires initial setup; iOS needs a workaround

Obsidian Sync is the easiest path, but $4 per month adds up, and the 1GB vault limit becomes a real constraint once you start embedding images. iCloud is fine if you live entirely in the Apple ecosystem, but it breaks down the moment you want to access your vault from a Windows machine or a Linux server. Syncthing is powerful but demands that every device be online at the same time, which is impractical for most people.

S3 with GoMount gives you a central, always-available storage location with built-in versioning, zero egress fees (on R2), and the flexibility to access your vault from any device that can speak S3. The setup takes about fifteen minutes.

Setting up Cloudflare R2 (free tier)

Cloudflare R2 is an S3-compatible object storage service with a standout pricing model: zero egress fees. You do not pay for downloading your own data. The free tier includes 10GB of storage and 10 million Class A (write) and Class B (read) operations per month, which is far more than a personal Obsidian vault will ever need.

Step 1: Create an R2 bucket

  1. Sign in to the Cloudflare Dashboard.
  2. Navigate to R2 Object Storage in the left sidebar.
  3. Click Create bucket.
  4. Enter a bucket name, for example obsidian-vault. Bucket names are unique within your account, so any name works.
  5. Leave the region at the default (automatic). Cloudflare will place your data in the closest region.
  6. Click Create bucket.

Step 2: Generate API credentials

  1. In the R2 dashboard, click Manage R2 API Tokens.
  2. Click Create API token.
  3. Give the token a name like gomount-obsidian.
  4. Set permissions to Object Read & Write.
  5. Under Specify bucket, select your vault bucket (or choose All buckets if you plan to create more later).
  6. Click Create API token.
  7. Copy the Access Key ID and Secret Access Key. The secret is shown only once.
Warning

Store the secret access key in your password manager immediately. If you lose it, you must create a new token and reconfigure GoMount.

Step 3: Note your endpoint

R2 uses a single S3-compatible endpoint for all buckets:

https://<ACCOUNT_ID>.r2.cloudflarestorage.com

You can find your Account ID in the Cloudflare Dashboard under Workers & Pages or on the R2 overview page. Copy it and keep it handy for the GoMount configuration.

Pro tip

Enable Object versioning on your R2 bucket for an extra layer of protection. Go to the bucket settings in the R2 dashboard and toggle versioning on. This keeps previous versions of every file, so you can recover from accidental overwrites even if Obsidian's own history fails.

Mounting R2 with GoMount

Now connect your R2 bucket to GoMount so it appears as a local folder on your Mac.

  1. Open GoMount and go to Settings > Cloud Storage, or click the + button to add a new connection.
  2. Choose S3-Compatible as the provider type.
  3. Fill in the fields:
Field Value
Display Name Obsidian Vault
Endpoint <ACCOUNT_ID>.r2.cloudflarestorage.com
Region auto
Access Key ID Your R2 access key
Secret Access Key Your R2 secret key
Bucket obsidian-vault
Path Style Disabled (unchecked)

R2 uses virtual-hosted-style addressing, so leave Path Style disabled. The region for R2 is always auto because Cloudflare handles routing automatically.

  1. Click Test Connection to verify the credentials.
  2. Once the test succeeds, click Mount. The bucket will appear as a volume in Finder.
  3. Set up an auto-mount rule so the bucket is available at login. Open Rules for the connection and add a rule that triggers on Any Network with Mount at Login enabled.

For more detail on auto-mount rules, see the auto-mount rules guide.

Pointing your vault to the mounted bucket

With the R2 bucket mounted, you now have a local folder that syncs to the cloud in real time. The final step is to tell Obsidian to use that folder as its vault.

Option A: Create a new vault on the mounted bucket

  1. Open Obsidian and click Create new vault.
  2. Navigate to the GoMount mount point (it will appear under Locations in Finder's sidebar, typically at /Volumes/Obsidian Vault or a similar path).
  3. Name your vault and click Create.

Option B: Move an existing vault

  1. Close Obsidian completely (make sure it is not running in the menu bar).
  2. Move your existing vault folder to the mounted R2 bucket using Finder.
  3. Open Obsidian, click Open folder as vault, and navigate to the vault's new location inside the mount point.

Either way, Obsidian will now read and write directly to the S3-mounted folder. Every change you make is uploaded to R2 automatically by GoMount. When you open Obsidian on another device that has the same bucket mounted, your notes will be there.

Pro tip

If you move an existing vault, verify that the .obsidian folder was copied correctly. This hidden folder contains all your settings, plugins, and theme configuration. In Finder, press Cmd + Shift + . to toggle hidden file visibility.

Conflict handling and versioning

Sync conflicts happen when you edit the same note on two devices before the changes have propagated. With S3, the last write wins by default, which means one device's changes could silently overwrite the other's. Here is how to protect yourself:

Obsidian's built-in protection

Obsidian keeps a local file recovery cache. Go to Settings > Files & Links > File recovery and make sure it is enabled. Obsidian will snapshot your notes at regular intervals (default: every 5 minutes) and keep them for a configurable number of days. If a sync conflict overwrites a note, you can recover the previous version from this cache.

S3 versioning as double insurance

If you enabled R2 object versioning (recommended), every overwrite creates a new version of the object in S3. The previous version is not deleted; it is kept alongside the current one. You can list and restore previous versions through the Cloudflare dashboard or the S3 API. This gives you a second, independent recovery mechanism that works even if Obsidian's local cache has been cleared.

Workflow habits to avoid conflicts

  • Sync before editing. When you open Obsidian, give GoMount a few seconds to pull the latest changes from R2 before you start writing.
  • Sync before closing. Likewise, wait a moment after saving a note to ensure the upload has completed before you close your laptop or switch devices.
  • Avoid simultaneous edits. If you are actively editing a note on your Mac, do not edit the same note on your phone at the same time. The S3 model does not merge concurrent writes.

Multi-device workflow

The S3 + GoMount approach works seamlessly on any macOS, Windows, or Linux machine where you can install GoMount. But mobile devices require a different strategy because GoMount is a desktop application.

macOS and desktop

Install GoMount on each Mac, configure the same R2 bucket, and mount it at login. Obsidian reads from the mount point just like a local folder. This is the simplest case and requires no additional tools.

iOS

iOS does not support arbitrary file system mounts, so you cannot use GoMount directly. Two practical alternatives:

  • Working Copy + S3. Use the Working Copy app to clone a Git repository that mirrors your vault, then use a script or shortcut to push changes to S3 via the R2 API. This is more technical but gives you full version control on iOS.
  • Obsidian Git (community plugin). The Obsidian Git plugin can push and pull your vault to a Git remote. Pair it with a Git hosting service that supports S3-backed storage, or use a lightweight server that syncs with your R2 bucket.

Android

Similar to iOS, Android does not support native S3 mounts. You can use a third-party sync app like FolderSync to keep a local folder in sync with your R2 bucket, then point Obsidian for Android at that folder. Configure FolderSync to sync on a schedule or when you open the app.

Warning

Mobile workarounds add complexity. If you only use Apple devices, iCloud may be simpler for iOS sync. The S3 approach shines when you need cross-platform access or want to avoid recurring subscription costs.

Cost breakdown

Here is what you actually pay for a personal Obsidian vault synced via Cloudflare R2:

Resource Free Tier Typical Personal Use Cost
Storage 10 GB 500 MB – 2 GB (text + images) $0/mo
Class A operations (writes) 10 million/month A few thousand saves/day $0/mo
Class B operations (reads) 10 million/month A few thousand reads/day $0/mo
Egress (downloads) Unlimited, free Syncing across devices $0/mo
GoMount license Free tier available Personal use $0/mo

For a typical personal knowledge base with a few thousand Markdown notes and embedded images, you will use well under 1GB of storage and stay comfortably within the free tier. Even if your vault grows to 5GB over several years, you are still within the 10GB free allocation. The only scenario where you would start paying is if your vault exceeds 10GB, at which point R2 charges $0.015 per GB per month — still cheaper than most subscription sync services.

Compare this to Obsidian Sync at $4/month ($48/year) or iCloud's 200GB plan at $2.99/month. The S3 approach is genuinely free for personal use.

Tips and pitfalls

  • Keep attachments small. Large PDFs, high-resolution photos, and video files will eat into your 10GB free tier quickly. Resize images before embedding them in notes, and store large reference PDFs elsewhere (a separate R2 bucket or a service like Wasabi).
  • Enable S3 versioning as a backup. Versioning is your safety net against accidental overwrites and sync conflicts. It costs nothing extra on R2's free tier, so there is no reason to skip it.
  • Set up billing alerts. Even though you expect to stay on the free tier, configure a billing alert in Cloudflare so you are notified if usage spikes unexpectedly. This takes two minutes in the dashboard and prevents surprises.
  • Do not treat the mount as a scratch disk. S3 has higher latency than a local SSD. Opening a vault with thousands of notes will be slightly slower than a purely local vault. For most users the difference is negligible, but if you notice lag, consider enabling GoMount's caching options.
  • Exclude .obsidian/plugins from sync if needed. If you use different plugins on different devices, you may want to exclude the plugins folder from sync to avoid conflicts. Most users, however, will want all plugins synced.
  • Back up your vault periodically. S3 is durable, but it is not a substitute for a proper backup. Export your vault as a ZIP file once a month and store it on a separate service. See our Backblaze B2 guide for a cheap backup target.
  • Use descriptive file names. Since your vault is just a folder of files, good naming conventions make it easy to browse outside Obsidian too. A note called 2026-08-25 S3 Obsidian Sync Setup.md is easier to find in Finder or the Cloudflare dashboard than untitled 3.md.
  • Test on a secondary device first. Before migrating your primary vault, create a small test vault on the mounted bucket and open it from a second device. Verify that notes sync correctly, then proceed with your real vault.

Next in this series

This guide is part of a series on S3-compatible storage with GoMount. If you found this useful, here are the related guides:

Return to the guides index for the full list of GoMount tutorials.

Ready to build your zero-cost knowledge base?

Download GoMount free and start syncing your Obsidian vault across every device with S3-compatible storage.

Download for macOS