From f97109ff9cccc0acae34e7006fbfb0b9ae70f48e Mon Sep 17 00:00:00 2001 From: azivner Date: Sun, 24 Dec 2017 15:24:45 -0500 Subject: [PATCH] synchronization --- Synchronization.md | 42 +++++++++++++++++++++++++++++++++++++++ images/star-topology.png | Bin 0 -> 7179 bytes 2 files changed, 42 insertions(+) create mode 100644 Synchronization.md create mode 100644 images/star-topology.png diff --git a/Synchronization.md b/Synchronization.md new file mode 100644 index 0000000..50faf96 --- /dev/null +++ b/Synchronization.md @@ -0,0 +1,42 @@ +Trilium supports synchronization with star-shaped topology: + +[[images/star-topology.png]] + +This means that there's one central server (we'll call this instance _sync server_) and several _client_ instances which all point to this sync server and synchronize against it. + +**Beware that synchronization is considered experimental and you should expect occasional issues which might require manual intervention.** + +## How to setup synchronization + +### Preparation + +Here we assume you already have Trilium running on your computer and you want to setup sync server so you can edit same document online. + +Of course you need to install Trilium on the sync server. It's recommended to have exact same version of Trilium installed everywhere. Trilium will reject synchronization if there's a mismatch in Trilium database version between client and sync server. + +Before you start the process of setting everything up, it's recommended to stop Trilium on the existing instance. + +### Sync server setup + +1. Run Trilium in your new environment - this will generate default directory ```trilium-data``` in your home directory, default config etc. +2. Stop Trilium in the new environment +3. Copy your existing trilium document file (by default located in your home directory under ```trilium-data/document.db```) into your target environment into ```trilium-data``` directory +4. Edit client's ```trilium-data/config.ini``` and set ```syncServerHost``` to the host and port where the sync server is running +5. Start the sync server +6. Start the client + +You should be able to see in the client logs that sync connection has been established. + +### Additional sync client(s) setup + +Setting up extra sync clients is very similar to setting up a server - make sure everything is stopped, copy the document, set up client's ```syncServerHost``` in ```config.ini``` to point to the sync server and then start everything up. + +## Conflict resolution + +You can sometimes encounter a situation where you edit same note in multiple instances before the note changes are synchronized. + +Trilium handles this situation by just picking up the newer change and discarding the older change. The older change should still be visible in history so it should be possible to recover any data lost in conflict resolution. + +## Hash check + +After each completed sync, Trilium computes hash of all synced data on both client and sync server. If there's a difference, something went wrong and Trilium will notify you about this. \ No newline at end of file diff --git a/images/star-topology.png b/images/star-topology.png new file mode 100644 index 0000000000000000000000000000000000000000..76f87a90f6d3cf876cb2f265bb5cd8222a08a706 GIT binary patch literal 7179 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 literal 0 HcmV?d00001