Tech Digest

Migration

Replace Notion with something you host

Nothing self-hosted replaces Notion's database layer. If your workspace is documents, three tools do the job well; if it is a relational tracker, this page tells you to stay.

Last reviewed

What is the best self-hosted replacement for Notion?

Outline is the closest match if you already run an identity provider, Docmost is the lighter version of the same idea, and BookStack is the one still running unchanged in five years. The single biggest thing you lose is Notion's database layer. Notion exports database rows as CSV, but relations, rollups, formulas and every saved view are dropped, and none of these tools can rebuild them.

Notion's export button produces a zip that looks complete and is not. Understanding exactly which parts are missing is the whole decision, so start there rather than with a tool list.

What you are actually giving up#

Notion is two products welded together: a block editor and a small relational database engine with a view layer on top. The editor half has good self-hosted equivalents. The database half has none.

A Notion database is typed properties, relations to other databases, rollups computed across those relations, formulas, filters, grouping, and several saved views over the same rows. Outline, Docmost and BookStack are wikis. They store pages in a tree and search the text. None of them has a concept of a relation, a rollup or a board view over structured rows. If your workspace is a client tracker with a linked projects database and a rollup of open invoices, nothing on this page replaces it. Splitting the load across a wiki plus Vikunja or Planka is the realistic answer, and it is two systems where you had one.

The second loss is collaborative editing quality. Outline and Docmost both do real-time co-editing, and Outline's is genuinely close to Notion's. BookStack does not do it at all: two people editing the same page produce a draft conflict, not a merge. If your team writes meeting notes live, that matters more than any feature list.

The third is the small stuff that is not small. Notion's mobile apps work offline. Outline and Docmost are web apps you add to a phone home screen. The web clipper, the template gallery, public publishing on a custom domain: some of that exists elsewhere in worse form and some does not exist at all.

Get your data out first#

Do this before you install anything. The export is the constraint on which tool you can pick.

  1. In Notion, open Settings then Workspace, then General, then Export all workspace content.
  2. Choose Markdown & CSV. Turn on Include subpages and Include content for databases.
  3. Turn Create folders for subpages off if you are on Windows. Notion's own docs note that a workspace export can exceed the 260 character path limit and fail to extract otherwise.
  4. Wait. Notion states a workspace export can take up to 30 hours to process on a large workspace, and the download link expires.

Then open the zip and look at what you got, because this is the part people skip:

  • Pages become .md files. Text, headings, lists, quotes and code fences survive intact. This part is genuinely fine.
  • Databases become one .csv per database, plus a folder of .md files for each row that had page content. The CSV has the property values as text. Relations appear as the related page's title, not a link. Rollups and formulas appear as their computed value at export time, frozen. Views are simply not in the file.
  • Nested databases inside pages export as a link to a separate CSV, so the page reads as a stub with a dangling reference.
  • Embedded blocks (Figma, Google Docs, Loom, synced blocks, buttons) export as a bare URL or vanish.
  • Filenames carry the 32-character page id, and internal links point at those paths. Every importer that tries to fix them does so by matching titles, which fails on duplicates.
  • Form views cannot be exported at all, and you can export only the current view or the default view of a database, never all of them.

Export a second copy as HTML as well. It preserves callouts, toggles and colors that Markdown drops, and Docmost's importer accepts either. Keep both zips somewhere off the server you are about to build, forever.

Which one to run#

Pick on authentication, not on features. Outline is the best product here and the worst fit for one person, because the sample config requires at least one third-party sign-in provider and there is no local account fallback. That means Pocket ID or Authentik running before you can log in to your own wiki, and it means an identity provider outage locks you out. Docmost gives you Notion-shaped nested pages with local accounts, at the cost of a pre-1.0 project where SSO and per-page permissions sit behind a paid tier. BookStack gives up live co-editing and the free-form structure, and in exchange gives you a Laravel app on MySQL that has upgraded with two documented manual steps in two years.

Your situationRunWhy
Team of 10+, already have Keycloak, Authentik or Google WorkspaceOutlineBest editor and search here, SSO on day one, and the mandatory IdP is already paid for
Small team, no identity provider, want the Notion feelDocmostFirst-party Notion importer in the free edition, local accounts, three containers
You want to install it and forget it for five yearsBookStackMIT, two moving parts, a mysqldump plus four paths is the whole backup
One person with a large personal knowledge baseTrilium NotesReal hierarchy, note cloning, one SQLite file, no server needed at all
Meeting notes several people type at onceHedgeDocLink-shareable pads with no account required, which none of the three do well
Policy requires an OSI-approved licenceBookStackOutline is BUSL-1.1 until 2030 and Docmost ships proprietary code in the image

Outline vs Docmost goes deeper on the first two.

What the migration actually costs#

For a workspace of roughly 300 pages, expect a full weekend and then a tail.

  • 2 to 4 hours standing up the stack. Outline is three containers plus an identity provider plus a dedicated subdomain, because it refuses to run under a subpath and defaults FORCE_HTTPS to true. Docmost is three containers and an APP_SECRET of at least 32 characters or it will not start. BookStack is a web server, PHP 8.2+ and MariaDB.
  • 1 to 3 hours importing, mostly waiting.
  • 6 to 20 hours fixing. Broken internal links, database CSVs that need to become either a table in a page or a row in a different tool, toggle blocks that came through as headings, images that landed in the wrong folder.
  • Ongoing: you now own patching. BookStack ships security patch releases roughly monthly, and v26.05.1 through v26.05.4 alone covered an attachment permission leak, a zip import remote code execution path and OIDC identity mismatching. An instance pinned to last year's version is not stable, it is unpatched. Add a reverse proxy with automatic TLS (Reverse proxy and TLS) and a restore you have actually tested.

You now personally maintain: a database, a backup job, a TLS certificate, an upgrade decision every few weeks, and for Outline an identity provider whose failure mode is total lockout.

What breaks and how to tell early#

Test these in week one, not month three, because they are the reasons people go back.

  • Mobile. There is no first-party app for any of the three. Install the web app on your phone on day one and write a page from it on a train with no signal. If that experience is unacceptable, it will still be unacceptable in March.
  • Offline. Notion caches. These do not. No connection means no notes.
  • Sharing with people who will not sign up. Outline and Docmost can publish a page to a public link. BookStack can make content publicly visible to guests. All three need the instance reachable from the internet, which means Remote access without port forwarding or a real reverse proxy, not just a Tailscale address you can reach and your client cannot.
  • Browser clipping. Notion's clipper has no equivalent here. If you clip constantly, look at Karakeep for that job specifically.
  • Search. Run a search you know the answer to. Outline and Docmost use PostgreSQL full text search, BookStack uses MySQL. All three are worse than Notion's, most visibly on partial words.

The point of no return#

Do not cancel Notion when the import finishes. Cancel it when all four of these are true:

  1. You have restored your backup onto a different machine and logged in. Not tested the backup job, restored it. For Outline that means proving you still have SECRET_KEY, which encrypts values inside the database and makes a perfect dump useless without it. For BookStack it is APP_KEY in .env, which encrypts multi-factor secrets.
  2. Everyone who uses it has written something in it, from a phone, unprompted, for two weeks.
  3. Your Notion export zips (Markdown and HTML both) are stored somewhere that is not the new server.
  4. You have run one upgrade cycle. Pull a new tag, restart, confirm nothing broke. That is the loop you own now, and finding out it hurts while Notion is still live is much cheaper.

Next#

Size the stack before you build it with the Stack planner, then read Backups that actually restore and write the restore procedure down before you import a single page. The rest of the category is in Documents.

Questions#

Does anything self-hosted have Notion's database views?

No. Outline, Docmost and BookStack are document wikis: pages in a tree with full text search. None of them model typed properties, relations between databases, rollups or multiple saved views over the same rows. The closest approximations are running a separate tool for that data, such as a kanban board in PLANKA or task lists in Vikunja, and accepting that your documents and your structured data now live in two systems.

Can I import my Notion export directly?

Docmost has a first-party Notion importer in the free edition: export your workspace as Markdown and CSV or as HTML, then upload the zip. Outline accepts Markdown zips. BookStack imports only its own portable zip format, so a Notion export has to be converted or pasted in page by page, which is the main reason people pick one of the other two for a large workspace.

Do I need SSO to run Outline?

Yes, and this surprises people. Outline's shipped .env.sample states that at least one third-party sign-in provider is required or you will have no sign-in options. There is no local username and password fallback and no admin escape hatch. Budget for Pocket ID, authentik or Keycloak alongside it, and keep that identity provider on separate infrastructure so an outage does not lock you out of your own notes.

Is Outline open source?

Not today. Outline ships under BUSL-1.1 with a Change Date of 2030-09-01, after which that release becomes Apache-2.0. Internal company and personal use is fine. Offering Outline to third parties as a document service terminates your rights. Docmost's core is AGPL-3.0 but the image you run bundles proprietary enterprise code, and BookStack is plain MIT with no split at all.

How much RAM does a Notion replacement need?

Outline idles around 550 MB across three containers (app, PostgreSQL, Redis) and wants 1 GB or more per the docs. Docmost is similar at roughly 500 MB idle for app, Postgres and Redis. BookStack is the cheapest at about 260 MB for PHP-FPM plus MariaDB. Add an identity provider for Outline and you are past a gigabyte before anyone writes a page.

What happens to my Notion links after migration?

Internal Notion links become dead. Notion's Markdown export rewrites page links to relative file paths that include the 32-character page id, so Meeting Notes 1a2b3c...md is what your links point at. Importers that resolve links do it by matching titles, which fails silently on duplicate titles. Expect to fix cross-page links by hand for anything you actually reference.

Sources#

Published . Last reviewed . Found something out of date? Tell us and we will fix it and log the change.