Mylonite contributors19 downloadsSelf-hosted encrypted sync for Obsidian vaults.
Mylonite is a self-hosted sync server for Obsidian. Use it with the Mylonite plugin to pair devices and sync end-to-end encrypted vault data through your own storage.
Synchronization showcase using a remote server hundreds of kilometers away. Vault data remains end-to-end encrypted throughout the sync process.
Install the latest binary.
Debian/Ubuntu x86_64:
curl -fL -o /tmp/mylonite \
https://github.com/z1xus/mylonite/releases/latest/download/mylonite-x86_64-unknown-linux-gnu
sudo install -m 0755 /tmp/mylonite /usr/local/bin/mylonite
mylonite --version
Other platforms: grab the matching binary from Releases and place it on your PATH.
Create the config and the first vault's pairing token:
mylonite init
Run the server:
mylonite serve
The default config lives at:
~/.config/mylonite/config.toml~/Library/Application Support/mylonite/config.toml%APPDATA%\mylonite\config.tomlKeep listen = "127.0.0.1:9821" when a reverse proxy terminates TLS on the same host.
Use listen = "0.0.0.0:9821" and set public_url to the reachable URL if the server should accept direct connections.
Drop this unit at /etc/systemd/system/mylonite.service, replacing YOUR_USER with the account that ran mylonite init:
[Unit]
Description=Mylonite sync server
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/local/bin/mylonite serve
Restart=on-failure
User=YOUR_USER
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now mylonite
sudo systemctl status mylonite
Windows: run mylonite serve with NSSM, WinSW, or your preferred service wrapper.
docker run -p 9821:9821 \
-v ./config.toml:/etc/mylonite/config.toml:ro \
-v ./data:/var/lib/mylonite \
ghcr.io/z1xus/mylonite:latest
Install Mylonite from the Obsidian community plugin directory.
Beta install: install BRAT, then add https://github.com/Z1xus/mylonite as a beta plugin.
Manual install: download mylonite-obsidian-plugin.zip from Releases and extract it into:
<vault>/.obsidian/plugins/mylonite/
Enable Mylonite in Obsidian's community plugins list, then open its settings.
The first device must be paired with the pairing token. Every other device can be paired with the Request / Authorize flow.
mylonite init.If you ever lose access to every paired device, the vault data is unrecoverable — the encryption key was generated on the first device and the server only holds ciphertext. Wipe the dead vault and start fresh:
mylonite vault delete <vault_id>
mylonite vault create "My Vault"
# pair the new device with the freshly printed token
Requirements:
Run locally:
cargo run -p mylonite -- serve --config dev/config.toml
cargo run -p mylonite -- vault create "My Vault" --config dev/config.toml
Build the plugin:
cd plugin
bun install
bun run build
Run checks:
cargo fmt --check
cargo clippy -p mylonite --all-targets -- -D warnings
cargo test -p mylonite
cd plugin
bun run test
bun run build