So I needed to sync my Obsidian Vault onto my iPhone so I could access my notes on the go; the main issue here is the fact that I use GitHub to sync my Obsidian Vault and the only Git clients on the official Git website are all freemium (i’m very broke). Hence, I needed to find a way to get Git working on my iPhone for free. Luckily I ran into a blog post which mentioned using Git through iShell, which has evolved into iSH.
iSH is a way to get an Alpine Linux environment running on your favourite Apple device. While running GUI apps is possible, it isn’t very realistic due to performance constraints; therefore, the main benefit of iSH is using command-line tools like Git or SSH. Let’s go through the process I went through to get my iSH setup on my iPhone, and how you could sync your own Obsidian Vault through iSH.
Installing iSH🔗
Note: iSH is available on the App Store, but for whatever reason that version is a bit outdated compared to the one available on GitHub. Hence, I suggest you use the latest automated release instead of the App Store version. I personally listen to the recommendations I make, so i’m using the automated releaase
To install iSH, I first installed AltStore since that’s the most convenient way of sideloading apps in my opinion. You can refer to the official AltStore page to understand how to install AltStore itself, and then come back once you have.
Once you’ve installed AltStore, you should download the iSH.ipa file from the iSH releases page (download the latest pre-release), go to the app tab, press the plus in the top left corner, and then select the ipa you just installed. At this point iSH should be installed on your device.

the screenshots are out of order, I messed it up and can't bother to fix it
Configuring iSH🔗
The first thing I would recommend doing is swapping over to the official Alpine repositories instead of using iSH’s own repositories, since the Alpine repos update much faster. To do this, first check the Alpine release, then swap to the repositories for that release.
# Swaps repositories to Alpine's repositories v3.19
&&
After I set up the package manager, I installed some packages (shocker). Particularly, I installed Git, OpenSSH and OpenRC. Obviously I installed Git so I can sync my Obsidian Vault, but I also installed OpenSSH in order to type in commands from a different device, since using the iPhone’s keyboard sucks when typing in commands. OpenRC is just there to automate launching SSH so I don’t need to manually, so you can leave it out if you don’t find it useful. I recommend restarting iSH after installing the packages, just to ensure everything works smoothly.
# installs git, openssh, and openrc
Next up was setting up SSH. To do this, I first generated host keys for the SSH server through ssh-keygen (command included with OpenSSH). I then added a root password, allowed root login, and ran SSH in its current configuration to see if it works. Since SSH is pretty much going to be used every time I open iSH, I also configured OpenRC to make SSH start every time I open iSH. One thing to note is you can check the local IP to remote into through WIFI settings; simply click the info icon on your active connection, and it should be there.
# restarting iSH should now start SSH automatically
Git and Obsidian🔗
At this point all that’s left is logging into Git, cloning the repo and making Obsidian recognize the Obsidian Vault. Logging into Git will depend on your provider and your preferred method. Personally, I used GitHub’s SSH authentication since it’s secure and doesn’t need to be reauthenticated often (github-cli doesn’t work on iSH).
Now that Git is set up, you’re going to need to install Obsidian if you haven’t already and create a new empty vault. Next step is to mount the Obsidian Vault folder to your iSH, which can be done by running the following commands. The file selector popup through which you select the Obsidian Vault folder will be on your device’s screen, so you can’t mount a folder purely over SSH.
&& # the folder mounted should be the empty obsidian vault folder
Now all you need to do is remove the empty Obsidian Vault that was created by Obsidian and clone your Obsidian Vault into the folder that had the vault. If your repo contains your entire Obsidian Vault, something like this should work.
$ rm -rf .obsidian
$ git clone <Obsidian Vault> .
Now your vault should be synced when relaunching the Obsidian app. Whenever you want to sync back to the remote, simply remount the Obsidian Vault once more if it unmounted itself and run the Git commands required to push changes to the remote.
Conclusion🔗
That’s about it, now that I’ve set everything up it works surprisingly well. I probably didn’t explain it really well, so I’m going to list some of the resources that I used in order to get everything working smoothly.
Resources🔗
- iSH Wiki - Has good documentation for most of the stuff which I did throughout the blog post, like swapping to official Alpine packages and installing SSH.
- iSH & Git Obsidian Sync - A very well written post by ForceBru on the Obsidian forums which explains how to get Obsidian working with iSH and Git.
- AltStore Docs - Explains how to sideload iSH onto your device.