selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

collabmd logo

Self-host collabmd

v0.1.56

Realtime collaborative Markdown editor with diagrams

BetaOpen SourceMIT
Updated9 hours ago
LanguageJavaScript
Setup difficultyModerate
Stars
284
Port
1234 (HTTP and WebSocket server)
Docker
ghcr.io/andes90/collabmd:latest
Install with Docker
CollabMD workspace showing file tree, Markdown editor, live preview, and collaborator presenceTwo browser windows editing the same Markdown workspace in realtime

What is collabmd?

CollabMD is a self-hosted web application that transforms a local Markdown directory, Obsidian vault, or git-backed documentation repository into a realtime collaborative workspace. Several people can modify the same documents concurrently through Yjs synchronization, while the original files on disk stay authoritative — edits made in outside editors such as Obsidian flow back into the browser. It renders multiple diagram formats with live previews, and adds wiki-links, backlinks, full-text search via ripgrep, inline comments on text and diagram elements, presence indicators, follow mode, and chat. Git features let users review diffs, stage files, and commit from the browser. An experimental MCP server exposes vault search, read, edit, and diagram tools to AI agents with scoped, revocable tokens. The app runs as a single Node.js process (Node.js 26.12.1+), with Docker images that bundle ripgrep. Authentication choices are none (default), a shared password, or Google OIDC. A Cloudflare Quick Tunnel can temporarily expose a local instance. Known limits: single-instance only (room state stays in-process), OIDC works with Google only, hosted workspace mode is still being built, and Windows needs WSL2.

Should you self-host collabmd?

collabmd scores 48/100 on selfhost.directory (how scoring works) and ranks #43 of 81 in Notes & Editors. It has 284 GitHub stars.

It shipped 16 stable releases in the past year. The latest, v0.1.56, came out on 22 October 2026. New versions land roughly every 7 days.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is MIT-licensed and written mostly in JavaScript.

Its closest alternative on selfhost.directory is Memos (86/100, 64 141 stars). It scores higher overall, so compare the two before you pick. See collabmd vs Memos side by side.

Features

  • Diagram support (Mermaid, PlantUML, Structurizr, Excalidraw, draw.io)
  • Document export
  • File upload and import
  • Git Integration
  • Global text searchRequires ripgrep (included in Docker image)
  • Google OIDC authenticationRequires stable PUBLIC_BASE_URL; not compatible with Cloudflare Quick Tunnel
  • Markdown editing with live preview
  • MCP Agent AccessRequires COLLABMD_AGENT_ACCESS_ENABLED=true
  • Multi-vault support
  • Password Authentication
  • Presence and follow mode
  • Realtime collaborative editing
  • Room chat
  • Source-anchored commentsdraw.io comments not supported

collabmd README

How to install collabmd

Install collabmd with Docker

Docker Engine
Environment variables
HOST, PORT, AUTH_STRATEGY, AUTH_PASSWORD, PUBLIC_BASE_URL, AUTH_OIDC_CLIENT_ID, AUTH_OIDC_CLIENT_SECRET, COLLABMD_GIT_REPO_URL, COLLABMD_GIT_SSH_PRIVATE_KEY_FILE, COLLABMD_GIT_SSH_PRIVATE_KEY_B64, COLLABMD_GIT_SSH_KNOWN_HOSTS_FILE, COLLABMD_GIT_USER_NAME, COLLABMD_GIT_USER_EMAIL, PLANTUML_SERVER_URL, STRUCTURIZR_SERVER_URL, COLLABMD_AGENT_ACCESS_ENABLED, etc.

docker run --rm -p 1234:1234 -v "$PWD:/data" ghcr.io/andes90/collabmd:latest

Image includes ripgrep; container listens on 0.0.0.0:1234

How to configure collabmd

  • AUTH_OIDC_ALLOWED_DOMAINSComma-separated email domain allowlist for OIDC

    Comma-separated email domain allowlist for OIDC

  • AUTH_OIDC_ALLOWED_EMAILSComma-separated exact email allowlist for OIDC

    Comma-separated exact email allowlist for OIDC

  • AUTH_OIDC_CLIENT_IDGoogle OAuth client ID for OIDC

    Google OAuth client ID for OIDC

  • AUTH_OIDC_CLIENT_SECRETGoogle OAuth client secret for OIDC

    Google OAuth client secret for OIDC

  • AUTH_PASSWORDgenerated per runShared password for password auth

    Shared password for password auth

  • AUTH_SESSION_COOKIE_NAMEcollabmd_authSession cookie name

    Session cookie name

  • AUTH_SESSION_MAX_AGE_MSOptional auth session lifetime in milliseconds

    Optional auth session lifetime in milliseconds

  • AUTH_SESSION_SECRETgenerated per runCookie signing secret

    Cookie signing secret

  • AUTH_STRATEGYnoneAuth strategy

    Auth strategy

    values: none, password, oidc

  • BASE_PATHURL path prefix for subpath deployments

    URL path prefix for subpath deployments

  • CLOUDFLARED_BINcloudflaredcloudflared binary path

    cloudflared binary path

  • CLOUDFLARED_EXTRA_ARGSExtra cloudflared flags

    Extra cloudflared flags

  • COLLABMD_AGENT_ACCESS_ENABLEDfalseEnable scoped MCP Agent Access

    Enable scoped MCP Agent Access

    values: true, false

  • COLLABMD_AGENT_ALLOWED_HOSTSExtra comma-separated MCP hostnames accepted

    Extra comma-separated MCP hostnames accepted

  • COLLABMD_AGENT_CONNECTION_TTL_MS2592000000Managed Agent Connection lifetime in milliseconds

    Managed Agent Connection lifetime in milliseconds

  • COLLABMD_AGENT_METADATA_DB_PATH<vault>/.collabmd/agent-access.sqliteSQLite path for managed Agent Connections

    SQLite path for managed Agent Connections

  • COLLABMD_AGENT_REQUESTS_PER_MINUTE120Maximum MCP tool calls per connection per minute

    Maximum MCP tool calls per connection per minute

  • COLLABMD_DRAWIO_BASE_URLhttps://embed.diagrams.netdiagrams.net base URL for .drawio viewing and editing

    diagrams.net base URL for .drawio viewing and editing

  • COLLABMD_GIT_ENABLEDtrueEnable or disable git integration in UI and API

    Enable or disable git integration in UI and API

    values: true, false

  • COLLABMD_GIT_REPO_URLRemote git repository used to bootstrap the vault checkout

    Remote git repository used to bootstrap the vault checkout

  • COLLABMD_GIT_SSH_KNOWN_HOSTS_FILEaccept-newOptional known_hosts file path for strict SSH host verification

    Optional known_hosts file path for strict SSH host verification

  • COLLABMD_GIT_SSH_PRIVATE_KEY_B64Base64-encoded SSH private key

    Base64-encoded SSH private key

  • COLLABMD_GIT_SSH_PRIVATE_KEY_FILESSH private key file path for remote git auth

    SSH private key file path for remote git auth

  • COLLABMD_GIT_USER_EMAILFallback git author/committer email for in-app commits when OIDC not active

    Fallback git author/committer email for in-app commits when OIDC not active

  • COLLABMD_GIT_USER_NAMEFallback git author/committer name for in-app commits when OIDC not active

    Fallback git author/committer name for in-app commits when OIDC not active

  • COLLABMD_HOSTED_CLAIM_EMAILVerified Google email allowed to claim first Team Admin role

    Verified Google email allowed to claim first Team Admin role

  • COLLABMD_HOSTED_CLAIM_TOKENOne-time token required for first workspace claim

    One-time token required for first workspace claim

  • COLLABMD_HOSTED_ENABLEDfalseEnable single-tenant hosted workspace mode

    Enable single-tenant hosted workspace mode

    values: true, false

  • COLLABMD_HOSTED_METADATA_DB_PATH<vault>/.collabmd/hosted.sqliteSQLite database path for hosted workspace metadata

    SQLite database path for hosted workspace metadata

  • COLLABMD_MAX_PDF_UPLOAD_BYTES52428800Maximum size of a PDF upload in bytes

    Maximum size of a PDF upload in bytes

  • COLLABMD_SEARCH_MAX_BUFFER_BYTES2097152Maximum ripgrep output buffer for one global text search

    Maximum ripgrep output buffer for one global text search

  • COLLABMD_SEARCH_MAX_FILE_SIZE1MMaximum size of each file considered by global text search

    Maximum size of each file considered by global text search

  • COLLABMD_STRUCTURIZR_MIRROR_DIR<vault>/.collabmd/structurizrWritable disposable mirror directory passed to Structurizr

    Writable disposable mirror directory passed to Structurizr

  • COLLABMD_STRUCTURIZR_TRUSTED_EXECUTABLE_DSLfalseAllow Structurizr !script and !plugin directives

    Allow Structurizr !script and !plugin directives

    values: true, false

  • COLLABMD_VAULT_DASHBOARDfalseShow vault chooser at root URL when multiple vaults configured

    Show vault chooser at root URL when multiple vaults configured

    values: true, false

  • COLLABMD_VAULT_DIRCLI: current directory, server entrypoint: data/vault, Docker: /dataVault directory path

    Vault directory path

  • COLLABMD_VAULT_DISCOVERYDisabledDiscover immediate subfolders: all or marked

    Discover immediate subfolders: all or marked

    values: all, marked

  • COLLABMD_VAULTSMulti-vault list (id=path, comma-separated)

    Multi-vault list (id=path, comma-separated)

  • COLLABMD_WIKI_LINK_AUTO_CREATEtrueCreate missing markdown files when clicking unresolved wiki-links

    Create missing markdown files when clicking unresolved wiki-links

    values: true, false

  • HOST127.0.0.1 (dev), 0.0.0.0 (prod)Bind host address

    Bind host address

  • HTTP_HEADERS_TIMEOUT_MS60000Header read timeout

    Header read timeout

  • HTTP_KEEP_ALIVE_TIMEOUT_MS5000Keep-alive timeout

    Keep-alive timeout

  • HTTP_REQUEST_TIMEOUT_MS30000Request timeout

    Request timeout

  • PLANTUML_SERVER_URLhttps://www.plantuml.com/plantumlUpstream PlantUML server base URL for server-side SVG rendering

    Upstream PlantUML server base URL for server-side SVG rendering

  • PORT1234HTTP + WebSocket port

    HTTP + WebSocket port

  • PUBLIC_BASE_URLStable public app origin required for OIDC

    Stable public app origin required for OIDC

  • PUBLIC_WS_BASE_URLPublic WebSocket URL override for reverse proxies

    Public WebSocket URL override for reverse proxies

  • STRUCTURIZR_SERVER_URLdisabledStructurizr Local-compatible sidecar base URL for .dsl previews

    Structurizr Local-compatible sidecar base URL for .dsl previews

  • TUNNEL_TARGET_HOST127.0.0.1Tunnel target host

    Tunnel target host

  • TUNNEL_TARGET_PORT1234Tunnel target port

    Tunnel target port

  • TUNNEL_TARGET_URLFull tunnel target URL override

    Full tunnel target URL override

  • WS_BASE_PATH/wsWebSocket base path

    WebSocket base path

  • WS_HEARTBEAT_INTERVAL_MS30000Heartbeat interval for evicting dead clients

    Heartbeat interval for evicting dead clients

  • WS_MAX_BUFFERED_AMOUNT_BYTES16777216Max outbound buffer per WebSocket

    Max outbound buffer per WebSocket

  • WS_MAX_PAYLOAD_BYTES16777216Max inbound WebSocket frame

    Max inbound WebSocket frame

  • WS_ROOM_IDLE_GRACE_MS15000Delay before closing empty collaboration rooms to disk

    Delay before closing empty collaboration rooms to disk

collabmd releases & version history

More in Documentation Management

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…