Open source & local-first

Owning the server is the easy half of self-hosted shared notes

By Baalda Team · · 9 min read

Short answer

Self-hosting a notes app gives you the server, not multi-user. "Shared" means four different things: replicated to your own devices, published as a link, granted to another account, or co-edited live under a permission. Most self-hostable apps do the first three, and the ones that co-edit properly usually stop storing your notes as readable files.

Self-hosting a notes app gets you a server. It does not get you a second person. Those are two separate features, and almost every app in the "self-hosted notes" listicles ships the first one well and the second one barely, which is why teams install one, put three people in it, and discover the gap a month later.

The word doing the damage is "shared". In a self-hosted notes app it can mean four different things, and the pages ranking for this query treat it as one. It can mean the same files replicated to your other machines. It can mean a public link out to the world. It can mean another account being handed your notebook. Or it can mean two people in the same note at the same time, with a permission deciding which of them is allowed. A team typing "self hosted shared notes" almost always wants the fourth and almost always ends up with the second or third.

Baalda, the app this site is for, is in the fourth group: an Apache-2.0 server you run yourself, with live multi-user editing over the same markdown files that sit on your disk. That is the claim this post has to earn against the alternatives, including the part where it is the wrong answer.

What does "shared" actually mean in a self-hosted notes app?

Sort the options by what the second person actually receives, and the field separates cleanly.

What "shared" meansWhat the second person getsTypical examples
ReplicatedNothing. It is your notes on your other devicesSyncthing, git, Nextcloud under Obsidian
PublishedA read-only link, often to the whole internetNotesnook Monograph, Memos public visibility
GrantedTheir own account, handed a notebook or workspaceJoplin notebook sharing, Memos signed-in visibility
Co-editedA cursor in the same note as yours, scoped by permissionDocs, Outline, Baalda

Replication is where most self-hosted setups start, because it is the cheapest to stand up and it genuinely solves the problem of one person with three machines. It does not become sharing when a second person joins. There is no identity in a file replicator, so there is nobody to grant anything to and nothing to refuse. Two people editing one file produces two files. The three jobs people confuse when self-hosting Obsidian notes covers that failure mode in detail.

The jump worth understanding is from Granted to Co-edited, because that is where the app stops being a sync protocol and starts being a multiplayer application, and it is also where most of them stop storing your notes as files.

Which self-hosted notes apps give a second person their own access?

Three are worth looking at closely, because each one is honest about a different limit.

Joplin is the most common answer, and its sharing is real but coarser than people expect. Joplin's own sharing documentation states that for a shared notebook, "Currently they have full access to the data, including reading, writing, and deleting", and that "All the sub-notebooks, notes and resources within the shared notebook are shared". So the unit of sharing is a notebook and everything beneath it, and the default grant is full write. A read-only option does exist, as a "Can view" rather than "Can view and edit" choice, but it arrives with the Joplin Cloud Teams plan, which is the hosted product rather than the Joplin Server you run. Sharing is also desktop-only to initiate: the docs note that mobile and CLI users can view or modify shared content but cannot start a share. And because Joplin syncs rather than co-edits, two people in one note at once is a conflict to resolve afterwards, not a cursor you can see.

Memos is MIT licensed and trivial to self-host, and it is explicit that it is personal. Its README describes the model as "New memos are private. Make one visible to signed-in users or public when you want to share it", under the heading "Your thoughts, your data". Three visibility tiers, applied to your own memos. That is Published and Granted, not Co-edited, and the project does not pretend otherwise.

Outline is the closest thing to a self-hostable team knowledge base with real collaboration, and it is the one to read the licence on before you commit. Its README says plainly, "Outline is BSL 1.1 licensed." The Business Source License is not an open source licence. Its Additional Use Grant reads, "You may make use of the Licensed Work, provided that you may not use the Licensed Work for a Document Service", with a Change Date of 2030-09-09 after which the licence converts to Apache 2.0. For most internal teams that grant is fine. It is still a vendor holding a term that can be read differently later, which is exactly the thing self-hosting was supposed to remove. Outline also describes itself as "markdown compatible", which is a different claim from markdown-stored, and the distinction is the next section.

All three were read on 12 October 2026.

Does self-hosting mean the notes stay readable files?

No, and this is the part the listicles skip. Running an app on your own hardware tells you where the bytes are. It does not tell you what shape they are in.

Outline needs a database. Memos keeps memos in its own store behind a Docker volume. Notesnook's self-hosted stack, per its sync server repository, brings up MongoDB and MinIO. Docs, the MIT-licensed collaborative editor from France's La Suite, does the co-editing job properly with Yjs, "Real-time collaboration" and "Live cursors & presence" and "Granular access control" all listed in its README, and it supports Kubernetes, Docker Compose, Nix and YunoHost. Its markdown support is "Import to .docx and .md" and export to .docx, .odt and .pdf. Markdown is a door, in and out. It is not where the document lives.

That is the tax almost every co-editing app charges. Real-time editing is usually implemented as a CRDT, a CRDT is a binary structure, and the easiest place to keep a binary structure is a database row. Once your notes are rows, "self-hosted" means you own the backup rather than the notes. You cannot grep them. You cannot open one in another editor. You cannot point an agent at the folder. The migration out is an export, which is the same move Notion offers, just from a machine you pay for.

So the honest framing of this query is that you are usually asked to pick two out of three: run it yourself, have several people in it, keep the notes as files.

Why does end-to-end encryption make sharing harder rather than safer?

Because encryption and collaboration pull in opposite directions, and the encrypted apps are the most upfront about it.

Notesnook is AGPL-3.0 and genuinely zero-knowledge: its README states that it "encrypts everything on your device using XChaCha20-Poly1305 & Argon2". You can self-host the sync server, though the repository describes this as "self-hosting in alpha" and the README says "Self-hosting the Notesnook Sync Server is now possible, but without support". What you cannot do is give a colleague edit access to a note, because there is no sensible way to do that without handing over key material. Its sharing feature is Monograph, an encrypted public link, optionally password protected. That is Published.

Joplin hit the same wall and documented it. When notebook sharing shipped in Joplin Server 2.0 in June 2021, the announcement said that sharing works with end-to-end encryption on, "however any shared notebook or note will not be encrypted, otherwise you would have had to give your master key password to the people you share with". Joplin has since solved it properly, and the current sharing documentation says end-to-end encryption is supported for shared notebooks when both parties have it enabled. But the original sentence is the clearest statement of the trade anyone has written: the moment a second person has to read it, somebody has to hold the key.

This matters for the obvious downstream reason. An encrypted note is unreadable to an AI assistant for the same reason it is unreadable to the server, and running the server yourself does not change that. If you want an assistant over your team's knowledge, an MCP server needs something it can actually read.

Can you have the server, the second person and the files at once?

This is the specific problem Baalda exists to solve, and it is worth naming the mechanism rather than the slogan.

A note in Baalda is two things that have to stay true simultaneously: a .md file on your own disk, and a Yjs CRDT document that several people are typing into. Both are keyed to a stable doc_id rather than to a path, so renaming or moving a note never forks it, and a file-to-CRDT bridge keeps the editor and the disk in step in both directions. You edit the file in another editor and the change reaches your teammates. They type and the file on your disk changes under you.

Access is a folder ACL that decides which documents a client is allowed to sync at all, rather than a flag the UI checks after the fact. The grant has three modes, private, readonly and open, which read as No access, Can view and Can edit, and each can be applied to the whole vault, a folder, or a single file, aimed either at everyone in the org or at named users. That is finer than a notebook, which is the unit Joplin shares, and it is the same control per-file permissions on a shared vault describes.

The same ACL governs the assistant. Baalda's MCP server exposes 22 named tools, read_note, search_notes, edit_note, manage_access and the rest, and every call is re-checked against the permissions that govern people. An agent reaching a folder a teammate cannot read is not a setting you have to remember to turn off.

Running it yourself is one HTTP service plus Postgres, under Apache-2.0, with a Docker Compose bundle in deploy/compose and a one-click Railway deploy. There is no paid tier for self-hosting. The self-hosting docs have the environment variables.

Where is self-hosted shared notes the wrong call?

Three places, and two of them point away from Baalda specifically.

If the requirement is that the operator cannot read the notes, Baalda is wrong. Baalda encrypts transport, not content at rest. The files are plain markdown on disk and the server can read what it syncs, which is the direct cost of everything in the section above. Readable files are what make grep, another editor and an MCP server possible, and they are what make zero-knowledge impossible. If your threat model is the machine itself, run Notesnook or Standard Notes and give up the co-editing.

If you need a mobile app, Baalda does not have one. It ships for macOS, Windows and Linux. Joplin and Notesnook have phones covered and Baalda does not, and no amount of permissions model makes up for not being able to read a note on a train.

If there is genuinely one of you, do not run a server. A folder of markdown and Syncthing is free, has no database to back up and no upgrade path to maintain. The whole argument on this page is about what happens when a second person arrives. Until one does, the simpler thing is the better thing, and an open source second brain can be a directory.

FAQ

Frequently asked questions

What are the best self-hosted shared notes apps?

It depends which meaning of "shared" you need. For several people co-editing in real time, Docs (MIT, from France's La Suite) and Outline are the strongest self-hostable options, with Outline the more complete knowledge base and Docs the more straightforwardly licensed. For an account-per-person setup without live editing, Joplin with a self-hosted Joplin Server shares a notebook at a time. For personal notes with an occasional public link, Memos is the lightest thing that works. Baalda is the option that keeps notes as markdown files on disk while several people edit them live.

Does self-hosting a notes app mean I own the files?

Not usually. Self-hosting tells you where the bytes sit, not what shape they are in. Outline needs a database, Memos keeps memos in its own store, and Notesnook's self-hosted stack brings up MongoDB and MinIO. Docs lists markdown as an import and export format rather than its storage. When notes are database rows, self-hosting means you own the backup, and getting out is still an export rather than a folder you already have.

Can Joplin be used for shared team notes?

Yes, with two limits worth knowing before you commit. Joplin's sharing documentation states that recipients of a shared notebook "have full access to the data, including reading, writing, and deleting", and that "All the sub-notebooks, notes and resources within the shared notebook are shared", so the unit is a whole notebook and the default grant is full write. A read-only "Can view" option exists but arrives with the Joplin Cloud Teams plan rather than the Joplin Server you run. Joplin also syncs rather than co-edits, so two people in one note at once produces a conflict to resolve, not a visible cursor.

Is Outline open source if I self-host it?

Outline is source-available, not open source. Its README states "Outline is BSL 1.1 licensed", and the Business Source License carries an Additional Use Grant reading "You may make use of the Licensed Work, provided that you may not use the Licensed Work for a Document Service", with a Change Date of 2030-09-09 after which it converts to Apache 2.0. Running it for your own team is permitted. It is still a term a vendor controls, which is the thing self-hosting is often chosen to avoid.

Why can't end-to-end encrypted notes apps do real collaboration?

Because somebody has to hold a key the other person can use. Joplin documented the trade precisely when notebook sharing shipped in June 2021: sharing worked with encryption enabled, "however any shared notebook or note will not be encrypted, otherwise you would have had to give your master key password to the people you share with". Joplin has since made encrypted shared notebooks work when both parties enable it. Notesnook took the other route and limits sharing to Monograph, an encrypted public link. The same wall blocks AI assistants: a note the server cannot read is a note an MCP client cannot read either.

Start your team’s brain

Free and open source. No account needed.