An Obsidian Sync Setup

When taking notes I tend to prefer Obsidian. The general opinion on Obsidian’s native sync service is sometimes lukewarm, so I decided to attempt making my own system. I’ll discuss my setup here, but it does use both Syncthing and Git (and a git submodule and GitHub). It should be cross-platform. I’m using it between Android, Windows, and OSX; in addition to publishing to the web.

Syncing across devices

Syncthing for this purpose should not surprise anyone. In theory you can do something similar with Dropbox or Google Drive, however notably Syncthing has a decently accessible way to ignore files which other options sometimes lack. For the unaware, Syncthing is an open-source application for directly syncing files between your devices. There are a few points of note in my setup:

(?d).DS_Store
(?i).git*

This keeps you from syncing .DS_Store files from OSX and ignores all .git folders, which are generated via my backup process. Generally you wouldn’t want to sync a .git folder without good reason as they could have a large amount of files.

Different configurations per platform

I prefer to create separate configuration folders per device. I do that by setting up a simple vault first, copying the .obsidian folder a few times, and renaming the copies to .obsidian.phone, .obsidian.laptop, etc. (Naming conventions are arbitrary here.) This lets me use different plugins and themes per device.

Backups

This is the intermediate step to publish my vault on the web. I’m using the Obsidian Git plugin to backup the vault to a private GitHub repo. The plugin is only installed on my desktop, so backups only happen when I open Obsidian and edit files there. To use the Obsidian Git plugin yourself you’ll need to setup git on your machine, initialize your vault as a git repo, setup a corresponding repo in GitHub, make an initial push from your local repo, and then configure the plugin.

My .gitignore looks like this:

.obsidian*
/assets/templates/*

As the backup becomes the basis for the published vault I exclude the vault configuration folders and the folder I use for templates.

Publishing to the web

At the time of writing this blog post you can find my digital garden at https://memex.jshwlkr.info/. (Not a whole lot there at the moment because I re-made the vault to publish it and I haven’t added everything back yet.) It’s built with Quartz and hosted on Vercel. Notably I needed a hosting provider that would support git submodules out of the box (more or less) because that is how I manage content. Specifically in my Quartz content folder I created a git submodule from the vault backup GitHub repo, created an appropriate .gitmodules file in the top level of the project, and pushed the entire local repo up to it’s own separate GitHub repo. This is the repo I use in Vercel to create the site. There are a few caveats in configuration:

In general this is a somewhat technical setup and there are aspects that are notably delicate. It is certainly not for everyone but it’s worked reliable for me as long as I take care and most notably it’s available on any device I care to make it available.

·