Mylonite

by Mylonite contributors
5
4
3
2
1
Score: 35/100
New Plugin

Description

This plugin has not been manually reviewed by Obsidian staff. Self-hosted encrypted sync for Obsidian vaults.

Reviews

No reviews yet.

Stats

stars
downloads
0
forks
0
days
NaN
days
NaN
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
0
total issues
0
open issues
0
closed issues
0
commits

Latest Version

Invalid date

Changelog

README file from

Github

Mylonite

Latest release Rust 1.85+ Bun Obsidian License: MIT

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.

Server

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:

  • Linux: ~/.config/mylonite/config.toml
  • macOS: ~/Library/Application Support/mylonite/config.toml
  • Windows: %APPDATA%\mylonite\config.toml

Keep 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.

Systemd

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

docker run -p 9821:9821 \
  -v ./config.toml:/etc/mylonite/config.toml:ro \
  -v ./data:/var/lib/mylonite \
  ghcr.io/z1xus/mylonite:latest

Plugin

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.

Pairing

The first device must be paired with the pairing token. Every other device can be paired with the Request / Authorize flow.

First device

  1. Enter your server URL (and optionally your device label).
  2. Paste the pairing token printed by mylonite init.
  3. Click Pair.

Additional devices

  1. On the new device, open Mylonite settings -> Enter your server URL -> click Request. Copy the request that appears.
  2. On an already paired device, open Mylonite settings -> Add another device, paste the request, and click Authorize. Copy the response that appears.
  3. Back on the new device, paste the response into Step 2 and click Complete.

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

Develop

Requirements:

  • Rust 1.85+
  • Bun 1.2+

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