Haniewicz38 downloadsSynchronize an Obsidian vault with a private server.
Private Sync Plugin synchronizes an Obsidian vault with a self-hosted Private Sync Server backend.
Server backend: https://github.com/Haniewicz/PrivateSyncServer
The plugin does not use an author-hosted default cloud and does not send data to any external service by default. The user provides the URL of their own server in the plugin settings.
1.11.4 or newer.syncctl setup.manifest.jsonmain.jsstyles.cssmkdir -p /path/to/vault/.obsidian/plugins/private-sync
Settings -> Community plugins.Server URL, for example https://your-server.example,Pair.syncctl setup, it will be paired automatically. Additional devices require approval on an already paired device or a one-time recovery pairing code from the server.npm install
npm run build
After the build, copy manifest.json, main.js, and styles.css into the plugin folder in your Obsidian vault.
last_applied_revision.device_token.Local -> Remote upload.Remote -> Local, Local -> Remote, or cancel.The sidebar view contains these tabs:
Status - local file state, queues, conflicts, and ignored files.Devices - paired devices, status changes, and device removal.Vaults - creating, selecting, renaming, and deleting server vaults.Plugins - community plugin catalog detected on other devices.Requests - new device approvals and other decisions requiring confirmation.Conflicts - file conflicts and tools for manually choosing a version.History - file revision history.Events - local events and error logs.Storage - server-side storage usage preview and cleanup of safe temporary data.Community plugin synchronization is a separate toggle in the Obsidian settings.
Private Sync:
manifest.json,main.js, styles.css),private-sync plugin itself.In the Plugins tab, a missing plugin can be opened in Obsidian's official installer with Open. When a plugin is already installed locally, the available actions are Enable, Disable, Uninstall, and Apply Server Settings.
Synchronization of selected Obsidian settings is enabled by default and can be disabled in the plugin settings.
The plugin synchronizes settings for note creators:
It does not synchronize the workspace or the entire configuration directory blindly.
The plugin includes safeguards against clogging synchronization with large files:
synced and mtime and size have not changed,100 MB,ignored,10 MB, are uploaded and downloaded with chunked transfer,5 MB.The Obsidian API still requires the plugin to read changed file contents as an ArrayBuffer before it can calculate the hash and start the upload. For very large attachments, the automatic synchronization limit remains the best protection.
The plugin includes client-side encryption support for selected notes and encryption key metadata. The encryption password is not the server password. Resetting the server password does not recover or change data encryption keys.
The plugin is prepared for basic operation in Obsidian Mobile:
FileSystemAdapter in plugin code,requestUrl for HTTP communication,Vault.configDir instead of the hardcoded .obsidian path,FileManager.trashFile,focus, pageshow, online, and visibilitychange to visible, it checks changes through the API,On mobile, WebSocket is an auxiliary channel for events, not the source of truth. On every app activation, the plugin fetches state through the HTTP API based on last_applied_revision.
device_token.Private Sync Plugin synchronizuje vault Obsidiana z prywatnym backendem Private Sync Server.
Backend serwera: https://github.com/Haniewicz/PrivateSyncServer
Plugin nie korzysta z domyslnej chmury autora i nie wysyla danych do zadnej uslugi zewnetrznej. Uzytkownik podaje w ustawieniach adres wlasnego serwera.
1.11.4 lub nowszy.syncctl setup.manifest.jsonmain.jsstyles.cssmkdir -p /sciezka/do/vaulta/.obsidian/plugins/private-sync
Settings -> Community plugins.Server URL, np. https://twoj-serwer.example,Pair.syncctl setup, zostanie sparowane automatycznie. Kolejne urzadzenia wymagaja akceptacji na juz sparowanym urzadzeniu albo jednorazowego recovery pairing code z serwera.npm install
npm run build
Po buildzie skopiuj manifest.json, main.js i styles.css do folderu pluginu w vaultcie Obsidiana.
last_applied_revision lokalnego vaulta.device_token.Local -> Remote.Remote -> Local, Local -> Remote albo anulowanie.Widok boczny zawiera zakladki:
Status - stan lokalnych plikow, kolejki, konfliktow i ignorowanych plikow.Devices - sparowane urzadzenia, zmiana statusu i usuwanie urzadzen.Vaults - tworzenie, wybor, zmiana nazwy i usuwanie server-vaultow.Plugins - katalog community pluginow wykrytych na innych urzadzeniach.Requests - akceptacje nowych urzadzen i inne decyzje wymagajace potwierdzenia.Conflicts - konflikty plikow i narzedzia recznego wyboru wersji.History - historia rewizji pliku.Events - lokalne zdarzenia i logi bledow.Storage - podglad uzycia storage po stronie serwera i czyszczenie bezpiecznych danych tymczasowych.Synchronizacja community pluginow jest osobnym przelacznikiem pod ustawieniami Obsidiana.
Private Sync:
manifest.json,main.js, styles.css),private-sync.W zakladce Plugins brakujacy plugin mozna otworzyc w oficjalnym installerze Obsidiana przez Open. Gdy plugin jest juz lokalnie zainstalowany, widoczne sa akcje Enable, Disable, Uninstall oraz Apply Server Settings.
Synchronizacja wybranych ustawien Obsidiana jest wlaczona domyslnie i moze zostac wylaczona w ustawieniach pluginu.
Plugin synchronizuje ustawienia kreatorow notatek:
Nie synchronizuje workspace ani calego katalogu konfiguracji w ciemno.
Plugin ma zabezpieczenia przed zapychaniem synchronizacji duzymi plikami:
synced, a mtime i rozmiar nie ulegly zmianie,100 MB,ignored,10 MB, sa wysylane i pobierane przez chunked transfer,5 MB.API Obsidiana nadal wymaga od pluginu odczytania zawartosci zmienionego pliku jako ArrayBuffer, zanim mozna policzyc hash i rozpoczac upload. Dla bardzo duzych zalacznikow najlepsza ochrona pozostaje limit automatycznej synchronizacji.
Plugin zawiera obsluge klientowego szyfrowania wybranych notatek i metadanych kluczy szyfrowania. Haslo szyfrowania nie jest haslem serwera. Reset hasla serwera nie odzyskuje ani nie zmienia kluczy szyfrowania danych.
Plugin jest przygotowany do podstawowego dzialania w Obsidian Mobile:
FileSystemAdapter w kodzie pluginu,requestUrl do komunikacji HTTP,Vault.configDir zamiast stalej sciezki .obsidian,FileManager.trashFile,focus, pageshow, online i visibilitychange do visible sprawdza zmiany przez API,WebSocket na mobile jest kanalem pomocniczym dla eventow, nie zrodlem prawdy. Po kazdej aktywacji aplikacji plugin pobiera stan przez HTTP API na podstawie last_applied_revision.
device_token.