Category
Documents, notes and knowledge
Everything in this category writes well on day one. The difference shows up on the day the project stalls, relicenses, or wants a database you no longer run.
Every tool here is pleasant to write in for the first month, which is the wrong thing to evaluate. What decides whether you were right is year five, when the project has stalled, relicensed, been forked twice, or needs a database version your host no longer ships. On that day the only feature that matters is whether you can get your content out in a form something else reads.
So evaluate the exit first and the editor second. The exit is a checkable thing: what exactly does a backup contain, and what would open it if the application never started again?
The default: BookStack#
BookStack is the boring one, and boring is the point. A Laravel app on MySQL, MIT licensed, one maintainer working on it full time since 2015. Between v24.05.1 and v26.05 the only documented manual upgrade steps were an export font permission change and a revision visibility change: everything else was a pull, composer install --no-dev and php artisan migrate.
Your archive is a mysqldump plus four paths:
tar -czvf files.tar.gz .env public/uploads storage/uploads themesThat is the whole product. There is no plugin ecosystem to rot, and the shelf, book, chapter, page hierarchy is rigid enough that nothing exotic can be encoded in it. The costs are real: MySQL or MariaDB only, no official Docker image so you take LinuxServer.io's or solidnerd's, and a tree that frustrates people who think in backlinks.
Two situations where BookStack is wrong.
You are one person and you think in trees. Trilium Notes: 200 MB, one SQLite file, no database service, scaling past 100,000 notes. Install from the right place, because three names circulate and two are dead ends: zadam/trilium redirects, TriliumNext/Notes was archived in June 2025, and development is at TriliumNext/Trilium with the image triliumnext/trilium. Single user is the real limit, not stability.
You have fifteen people and an identity provider already. Outline is the nicest thing here to use and the worst fit for one person, because it has no local accounts at all: the sample config says at least one third-party sign-in provider is required or you have no sign-in options. An expired certificate on that provider locks you out of your own wiki. It is BUSL-1.1 until 2030, not open source.
For paper, none of the above. Paperless-ngx is a different job: scan, OCR, index, find any document in seconds. It is the heaviest thing here at 450 MB idle and five containers with Gotenberg and Tika, and the one people say changed how they handle mail.
What the licence does to the exit#
Several tools here are not straightforwardly open source, and each restricts you differently. Outline is source-available until its 2030 change date. Docmost is AGPL at the root with ee directories under a proprietary licence whose submodule points at a private repository, so you cannot rebuild the image you run; SSO, page-level permissions and audit logs sit behind a key at 6 US dollars per seat per month with a ten seat minimum. HedgeDoc is AGPL and healthy, but its successor has no migration path after six years.
None of that makes them bad software. It changes what self-hosting is buying you, and it is worth knowing before a hundred pages are filed.
The mistakes people actually make#
- Backing up the database and not the key.
APP_KEY,SECRET_KEY,APP_SECRET: lose one and a perfect dump restores into unreadable content or locked-out MFA users. - Forgetting local file storage. Outline's backup docs cover Postgres and environment variables, not
/var/lib/outline/data, so the default storage is what people miss. Every document then renders with broken images. - Choosing the database you already run. Wiki.js 3.0 drops MySQL, MariaDB, MSSQL and SQLite for PostgreSQL only. Installing on MariaDB today buys you a database migration on top of an application migration later.
- Pinning to last year's version. BookStack's patch releases are almost all security fixes: v26.05.1 through v26.05.4 covered attachment permission leaks, a ZIP import remote code execution path and draft permission bypasses. A pinned instance is not stable, it is unpatched.
- Leaving HedgeDoc open.
CMD_ALLOW_ANONYMOUSandCMD_ALLOW_EMAIL_REGISTERboth default totrue, so a fresh instance on a public hostname lets anyone register. - Serving a wiki from a subpath. Wiki.js and Outline both refuse:
example.com/wikiends in broken assets and a login loop. Allocate a subdomain first.
What to read next#
BookStack vs Wiki.js and Outline vs Docmost settle the wiki choice; Paperless-ngx vs Nextcloud covers whether you need a document archive or just a folder. Replace Notion and Replace Evernote are the migrations off hosted note services. Every tool here sits on a database, so read Backing up a running database and Backups that actually restore before trusting the nightly job, then An update strategy that does not lose data for the security releases you cannot skip.
Every documents tool we profile#
Sorted by operational load, lightest commitment first. Every row links to a full profile with the resource numbers, the upgrade traps and the restore path.
| Tool | Ops load | Idle RAM | Licence | Identity | Backup shape |
|---|---|---|---|---|---|
| BookStack | 2, Light | 260 MB | MIT | Native OIDC | MySQL dump |
| HedgeDoc | 2, Light | 250 MB | AGPL-3.0 | Native OIDC | Postgres dump |
| Trilium Notes | 2, Light | 200 MB | AGPL-3.0 | Native OIDC | SQLite backup |
| Docmost | 3, Moderate | 500 MB | AGPL-3.0 core, proprietary Docmost Enterprise licence for `ee` directories | Local accounts only | Postgres dump |
| Paperless-ngx | 3, Moderate | 450 MB | GPL-3.0 | Native OIDC | Postgres dump |
| Wiki.js | 3, Moderate | 260 MB | AGPL-3.0 | Native OIDC | Postgres dump |
| Outline | 4, Heavy | 550 MB | BUSL-1.1 (Change Date 2030-09-01, converts to Apache-2.0) | Native OIDC | Postgres dump |
Profiles#
BookStack
A plain PHP wiki organized into shelves, books, chapters and pages, and it just keeps working
ops 2/5 · 250 MBHedgeDoc
Real-time collaborative Markdown pads you can share with a link, no account needed
ops 2/5 · 200 MBTrilium Notes
A hierarchical personal knowledge base that scales past 100,000 notes in one SQLite file
ops 3/5 · 500 MBDocmost
A Notion-shaped wiki with an AGPL core and a closed enterprise edition in the same image
ops 3/5 · 450 MBPaperless-ngx
Scan, OCR and index your paper mail so you can find any document in seconds
ops 3/5 · 260 MBWiki.js
A Node wiki with Markdown, a visual editor and bidirectional Git sync, stalled on version 2
ops 4/5 · 550 MBOutline
A polished team knowledge base that assumes you already have an identity provider
Head to head in this category#
- BookStack vs Wiki.jsA maintained PHP wiki against a Node wiki whose next version has been almost ready for four years.
- Outline vs DocmostOutline needs an identity provider before you can log in. Docmost charges for one. Pick your constraint.
- Paperless-ngx vs NextcloudA document archive with OCR against a file sync platform. Most people who run one should run both.
Leaving a cloud service in this category#
- Replace EvernoteENEX moves your notes. It does not move Evernote's OCR, and search results still point at archived repos.
- Replace NotionThe export looks complete and is not. What survives leaving Notion, and which wiki to land on.
Questions#
Which wiki will I still be able to read in ten years?
The one whose content is either plain rows you can dump or plain files you can read. BookStack is Laravel on MySQL with no plugin ecosystem, so a mysqldump plus public/uploads and storage/uploads is the whole archive, and the format has been stable since 2015. Wiki.js keeps everything including uploaded assets in Postgres, which makes dumps simple but means you cannot point anything else at an assets directory; its Git storage module gives you a second, human-readable Markdown copy that is worth enabling purely as insurance. Trilium is one SQLite file. Judge on that, not on the editor.
Is Outline open source?
No. Outline is BUSL-1.1, source-available, with a Change Date of 1 September 2030 after which that release becomes Apache-2.0. Internal company or household use is fine. The licence prohibits offering it as a document service to third parties, and the project states that selling, reselling or hosting Outline as a service terminates your rights. Docmost is a related case: the root LICENSE is AGPL-3.0 but the ee directories are proprietary and their submodule points at a private repository, so the image you run contains closed code you cannot rebuild.
How much RAM does a wiki cost?
More than the text justifies, because of the database. BookStack is about 260 MB plus MySQL. Wiki.js is 260 MB plus Postgres. Trilium is 200 MB and one SQLite file with no database service at all, which is the cheapest real option here. Outline is 550 MB plus Postgres plus Redis plus an identity provider you must already be running. Paperless-ngx is the heaviest at 450 MB idle and five containers once Gotenberg and Tika are in, and its costs are at consume time: OCR chews several hundred megabytes per worker thread.
Should I wait for Wiki.js 3 or HedgeDoc 2?
No. Wiki.js 3 had a developer preview in October 2022 and is still publishing prereleases marked not for production, with beta gated on full parity with 2.x and no date attached. HedgeDoc 2 started in 2020, shipped its first alpha in October 2023, and still has open issues on the 2.0 milestone with no migration tool written. Treat the version you install today as the version you will run for years. If you install Wiki.js now, install it on PostgreSQL, because version 3 drops every other engine.
What do I need to back up from a wiki?
The database dump, the uploads directory, and the secret that decrypts the database. That third item is where restores fail. BookStack's APP_KEY in .env encrypts multi-factor seeds, so restoring with a fresh key locks out every MFA user with no self-service recovery. Outline's SECRET_KEY makes encrypted database content unrecoverable if lost, and with the default FILE_STORAGE=local your attachments live in /var/lib/outline/data, which no database dump contains. Docmost needs APP_SECRET and its storage volume the same way.
Do I need a wiki at all, or will Markdown files do?
For one person taking notes, files plus a sync tool genuinely compete, and they win the ten year test outright because there is no format to migrate. A wiki starts earning its keep when you want full-text search across thousands of pages, permissions for other people, page history you did not have to think about, and links that do not break when you rename something. Be honest about which of those you actually need. Running Postgres, Redis and an identity provider so one person can keep notes is a poor trade.
What is the right way to back up Paperless-ngx?
Use document_exporter, not a copy of the media tree. docker compose exec -T webserver document_exporter ../export writes originals, archive PDFs, thumbnails and a manifest.json with every tag, correspondent, custom field and permission. The media directory on its own is a pile of files named 0000123.pdf with no filing at all. One catch that decides your retention policy: an export can only be imported into the same Paperless version that made it, so store the image tag alongside every export.
Published . Last reviewed . Found something out of date? Tell us and we will fix it and log the change.