Tech Digest

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.

7 tools profiledMedian idle memory 260 MBLast reviewed

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:

bash
tar -czvf files.tar.gz .env public/uploads storage/uploads themes

That 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_ANONYMOUS and CMD_ALLOW_EMAIL_REGISTER both default to true, 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/wiki ends in broken assets and a login loop. Allocate a subdomain first.

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.

ToolOps loadIdle RAMLicenceIdentityBackup shape
BookStack2, Light260 MBMITNative OIDCMySQL dump
HedgeDoc2, Light250 MBAGPL-3.0Native OIDCPostgres dump
Trilium Notes2, Light200 MBAGPL-3.0Native OIDCSQLite backup
Docmost3, Moderate500 MBAGPL-3.0 core, proprietary Docmost Enterprise licence for `ee` directoriesLocal accounts onlyPostgres dump
Paperless-ngx3, Moderate450 MBGPL-3.0Native OIDCPostgres dump
Wiki.js3, Moderate260 MBAGPL-3.0Native OIDCPostgres dump
Outline4, Heavy550 MBBUSL-1.1 (Change Date 2030-09-01, converts to Apache-2.0)Native OIDCPostgres dump

Profiles#

Head to head in this category#

Leaving a cloud service in this category#

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.