Skip to content
marcelrsoubPublic

About

Collaborate on your Markdown notes in real time

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

MD Share

Collaborate in real time on your Obsidian notes

Turn a Markdown note into a focused, shareable workspace. MD Share lets you open one note in the browser, invite collaborators, and edit together live, while your vault stays self-hosted and under your control.

Share the note, not your whole vault

MD Share is built for the moment when a note needs input from someone else. Choose a note, create a private link, and bring collaborators into the browser without exposing your entire Obsidian vault.

What you get

  • 🔗 Create a private, tokenized link for one Markdown note
  • ✍️ Collaborate live in the browser with participant names and cursors
  • 👀 Keep the rendered Markdown preview close to the editor
  • 🖼️ Display local note images without exposing raw filesystem paths
  • 📋 Paste or drop images into a note and keep them beside the Markdown file
  • ⚡ Type / in the editor for headings, formatting, lists, tables, and image uploads
  • 🗂️ Manage notes, links, and exports from a focused admin workspace
  • 🔒 Keep your vault and admin surface private
  • 🐳 Run the whole experience locally with Docker Compose

See CHANGELOG.md for what changed in each release.

Local URLs

Screenshots

MD Share admin note view with a rendered preview and share links

The admin note view keeps the rendered preview and share controls for the selected file together.

Two collaborators editing a shared note in the browser with live cursors, a task list, and an embedded image

The public editor is the document itself: live cursors, checkboxes, and images stay in the writing surface.

The slash command menu open in the editor with Heading 2 selected

Type / to reach headings, formatting, lists, tables, and image upload without leaving the keyboard.

A note with an Obsidian image embed rendered inline

Obsidian image embeds render in place. Images are served through the note's own token and never exposed as a browsable folder.

MD Share on a phone showing a task list, quote, and embedded image

On mobile, the editor, task checkboxes, and images are sized for touch.

Writing in the browser

Type / at the start of a line, or after a space, to open the command menu. It supports the keyboard and touch:

  • Headings 1–6, bold, italic, strikethrough, inline code, highlight, and links
  • Bullet, numbered, and task lists
  • Quotes, code blocks, tables, and dividers
  • Image upload

Paste or drag an image straight into a note. MD Share stores it next to the Markdown file as Pasted image <timestamp>.<ext> and inserts an Obsidian embed such as ![[Pasted image 20261027130509.png]]. PNG, JPEG, GIF, WebP, BMP, and AVIF are supported up to 15 MB. The server validates the bytes and chooses the file name, so uploads cannot overwrite existing files or escape the vault.

Existing Obsidian embeds work too: ![[image.png]] resolves across the vault, ![[99 Attachments/image.png]] works by path, and |300 or |caption aliases control width and alt text. Extensionless embeds remain plain text for now.

Notes Folder

The mounted notes directory can be:

  • an Obsidian vault
  • a plain folder of Markdown files

Images pasted into a note are written beside that Markdown file, so the mounted notes folder must be writable. See .env.example for the supported variables.

Get started in minutes

Use the installer script for the fastest setup:

curl -fsSL https://raw.githubusercontent.com/marcelrsoub/md-share/main/install.sh | bash

The installer asks for your notes folder path, writes a local env file, and starts Docker Compose.

curl -fsSL https://raw.githubusercontent.com/marcelrsoub/md-share/v0.2.0/install.sh | bash

To work from a local clone instead, review the files first:

git clone https://github.com/marcelrsoub/md-share.git
cd md-share
bash install.sh

React Kanban dependency

Kanban shares consume the generated obsidian-react-kanban library from the pinned 0.2.0 release archive over HTTPS. For local library development, temporarily replace that dependency with a file: reference to a sibling checkout and regenerate package-lock.json before switching back to the pinned archive for deployment.

Docker Compose

Cloudflare Tunnel

To publish the public editor without exposing the admin surface, follow the Cloudflare Tunnel guide.

Quick test:

cloudflared tunnel --url http://localhost:3021

Use a named tunnel and set PUBLIC_BASE_URL to the public hostname for stable share links. Keep the admin on 3020 private.

Safety

  • Only .md files inside your mounted vault can be shared.
  • A public link opens only its note and the images that note references.
  • Active public collaborators can add image files beside the note. Uploads are validated, size-capped, server-named, and never overwrite existing files.
  • Images are not browsable: there is no asset directory listing or raw-path access.
  • Keep the admin UI on a trusted network or behind your own auth.

About

Collaborate on your Markdown notes in real time

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages