Setup guide

Set up SimpleSync

From an empty machine to a vault that syncs between your computer and phone. It takes about ten minutes.

Before you start

You need two things:

How the pieces fit

The server stores your vaults and has a web admin. The Obsidian plugin logs in to the server and keeps one Obsidian vault in sync with one vault on the server. You can have several vaults and several users on one server.

1. Install the server

Pick the option that matches your machine.

  1. Open App Store›+›Install a customized app and switch to YAML.
  2. Delete what's there (Ctrl A, Delete) and paste the YAML below.
  3. Click Install, then open http://<zimaos-ip>:8080.
name: obsisync
services:
  obsisync:
    image: ghcr.io/jirkacepelka/obsisync:latest
    container_name: obsisync
    restart: unless-stopped
    ports:
      - target: 8080
        published: "8080"
        protocol: tcp
    environment:
      TZ: Europe/Prague
    volumes:
      - type: bind
        source: /DATA/AppData/obsisync/data
        target: /data
x-casaos:
  architectures:
    - amd64
    - arm64
  main: obsisync
  category: Utilities
  title:
    en_us: SimpleSync
  tagline:
    en_us: Simple self-hosted sync for Obsidian
  icon: https://raw.githubusercontent.com/jirkacepelka/SimpleSync/main/server/internal/web/static/icon.svg
  index: /
  port_map: "8080"
  scheme: http

Your data lives in /DATA/AppData/obsisync/data.

2. Create the admin account

The first time you open the web admin, it asks you to create the administrator account. Do this right after installing: until that account exists, whoever opens the page first can create it.

The language picker is at the bottom of every page of the web admin.

3. Create vaults and users

In the web admin, go to Vaults and click New vault. Give it a name and choose:

The New vault form in the web admin
Creating a vault with a backup plan.

Syncing only for yourself? You can skip users. To add family or colleagues, open Users, create an account for each person, then add them to a vault (see Sharing a vault).

Already have a vault full of notes?

You don't need to create it on the server first. Log in from the plugin on the device that has the notes and choose Create a new vault from this one in step 5. It uploads the vault for you.

4. Install the plugin

SimpleSync is listed in Obsidian's community plugins.

  1. In Obsidian, open Settings›Community plugins. If restricted mode is on, click Turn on community plugins.
  2. Click Browse and search for SimpleSync.
  3. Click Install, then Enable.

SimpleSync

by jirkacepelka · Desktop and mobile

The Open in Obsidian button jumps straight to the plugin inside Obsidian, if Obsidian is installed on this device.

5. Connect a vault

  1. Open Settings›SimpleSync.
  2. Enter the Server address (for example https://sync.example.com or 192.168.1.10:8080), your Name and Password, and click Log in.
  3. Under Vault on the server, pick a vault and click Connect.

Or, to upload the vault that's open in Obsidian right now, use Or create a new vault from this one and click Create and connect.

That's it. The status bar at the bottom of Obsidian shows ✓ SimpleSync once the first sync finishes.

The shortcut: download a ready-made vault

For a new computer, this skips steps 4 and 5.

  1. In the web admin, click Download for Obsidian next to a vault. For an empty one, use Plugin›Download ready-made vault.
  2. Unzip it, for example into Documents.
  3. In Obsidian choose Open folder as vault and pick the unzipped folder.
  4. Click Trust author and enable plugins.
  5. Enter your password in the window that appears. The vault connects by itself and starts syncing.

The ZIP contains the notes and the plugin, already set up with your server address and name. It never contains a password or token.

What connecting does

The server vault wins

If the server vault you connect to already has files, the Obsidian vault on this device is replaced by the server's copy. Nothing is uploaded from this device. Files that exist only here, or differ from the server, are moved to Obsidian's trash (.trash), so nothing is lost. The plugin asks before connecting.

After the first sync, changes flow in both directions.

Phones and tablets

On iPhone, iPad and Android the steps are the same as on desktop:

  1. Create a new, empty vault in the Obsidian app. Don't use iCloud for it, so two sync tools don't fight over the same files.
  2. Install SimpleSync from Settings›Community plugins›Browse.
  3. Log in and connect to the vault. The server's copy is downloaded to the phone.

The phone syncs when a file changes, every minute while Obsidian is open, and whenever you bring Obsidian back to the foreground.

Use HTTPS for iOS

iOS works best with an https:// address. See the next section.

Reach it from anywhere

To sync a phone on mobile data, the server has to be reachable outside your home network. Pick one:

The plugin warns you before sending a password over plain http:// outside your home network.

Everyday use

Once connected, there's nothing to do. Edit notes as usual; changes reach other devices within seconds. The item in the status bar shows the state, and clicking it syncs right away.

Status barMeaning
✓ SimpleSyncSynced
⟳ SimpleSyncSyncing
⚡ SimpleSyncServer unreachable; it will retry by itself
⚠ SimpleSyncAn error, for example an expired login. Open the plugin settings for details.
○ SimpleSyncNot connected to a vault yet

Not synced: .trash, .git, other hidden folders, workspace.json and the plugin's own login token.

Edit in the browser

Every vault can be read and edited on the server's web page, without Obsidian. Useful on a work computer, a borrowed laptop, or for family members who never installed the app.

  1. Log in to the web admin and open a vault.
  2. Click Open notes (or the Notes tab).
  3. Pick a note in the tree on the left, or create one with +.
The web editor with the file tree, the Markdown source and a live preview
File tree, source and live preview side by side.

If the same note is edited in Obsidian at the same time, the changes are merged line by line. If both sides changed the same line, the other version stays and yours is kept next to it as a (conflict …) copy, exactly as on a device. Members with the Read only role see the notes but can't change them.

Publish notes

A vault owner can turn chosen notes into a public website served by your own server. Anyone with the address can read it without an account.

  1. Open the vault and go to Settings›Publishing.
  2. Tick Publish this vault as a website and pick an address, for example garden. The site will be at https://sync.example.com/p/garden/.
  3. Choose which notes are public:
    • Chosen notes: notes with publish: true in their properties. The Publish button in the web editor adds it for you, and in Obsidian you can add the property yourself.
    • A whole folder: every note in one folder. Leave the folder empty to publish the whole vault.
  4. Optionally set a front page note. Without one, the site starts with a list of the published notes.
A published note with the site's navigation
A published note. Links to notes that aren't published show as plain text.
What stays private

Only published notes are on the site. Links to other notes are shown as plain text, so their names and paths don't leak. An image or file is public only when a published note embeds or links it. To take the site down, untick Publish this vault as a website.

Sharing a vault

Open the vault in the web admin, go to Members and add a user with one of these roles:

RoleCan do
OwnerEverything, including members, backups and deleting the vault
EditorRead and change notes
Read onlySync the vault but not change it; the plugin shows “Synced (read only)”

The person then installs the plugin, logs in with their own name and password, and sees the vault in their list.

History, trash and backups

Restore an older version of a note

Open the vault in the web admin, go to Files and click Version history next to the note. Preview any version and click restore. The restored version syncs to every device.

Version history of a note in the web admin
Every saved version, with a preview.

Bring back a deleted file

Deleted files are in the vault's Trash tab in the web admin. Restore them from there.

Restore from a backup

In the vault's Backups tab you can click Back up now, download a backup as ZIP, restore a single file, or restore the whole vault. Restoring the whole vault first saves the current state as a “Before restore” backup, then sends the changes to every device like a normal sync.

Backups store identical files only once, so they take very little space. A scheduled backup is skipped when nothing changed, and the newest backup is never deleted.

Lost a device?

Open Devices in the web admin. Every Obsidian login is listed there; click log out next to the lost one and it loses access immediately. Its password was never stored on the device, only a token that no longer works.

Updating

docker pull ghcr.io/jirkacepelka/obsisync:latest
docker rm -f obsisync
# then run the same docker run command as in step 1

Troubleshooting

“No SimpleSync server is running at this address”

The address answers, but not with SimpleSync. Check the port (:8080 by default) and whether you need https://. Open the same address in a browser: you should see the web admin login.

“Server unreachable”

The device can't reach the server at all. At home, check that the server is running and that you use its local IP. Outside, check Tailscale or your tunnel. The plugin keeps retrying on its own.

“Too many attempts, try again in 15 minutes”

Too many wrong passwords. Wait 15 minutes. Devices that are already logged in keep working.

“The login expired or this device was logged out”

Someone logged this device out in the web admin, or the account changed. Log in again in the plugin settings.

Forgot the administrator password

Run this on the server. If the user doesn't exist, it's created as an administrator.

docker exec obsisync obsisync reset-password admin NewPassword123

Back up the whole server

Everything is in the data folder: the database, file contents and ZIP backups. Copy that folder. For a consistent copy of the database while the server runs:

docker exec obsisync obsisync backup-db /data/obsisync-backup.db

Still stuck? Open an issue on GitHub.