Multiple Users, Multiple Wikis
  • TypeScript 84.7%
  • JavaScript 10.6%
  • CSS 4.1%
  • HTML 0.5%
  • Shell 0.1%
Find a file
2026-08-07 21:02:06 -04:00
.github It did not fix it 2026-07-13 21:43:45 -04:00
.vscode saving some work 2026-02-24 12:25:35 -05:00
archive rename file 2026-01-20 19:51:38 -05:00
create-package a few fixes (published) 2026-07-25 07:01:54 -04:00
dev move dev folder 2025-05-25 15:14:53 -04:00
editions/mws-docs code cleanup 2025-09-10 11:10:43 -04:00
packages fix a bug with svg in jsx-render 2026-08-07 21:02:06 -04:00
plugins updates and work in progress 2026-06-24 15:34:05 -04:00
prisma use latest tw5 docs 2026-07-30 23:58:19 -04:00
public various cleanup 2026-07-09 22:05:57 -04:00
scripts use latest tw5 docs 2026-07-30 23:58:19 -04:00
tools various cleanup 2026-07-09 22:05:57 -04:00
.gitignore manually deduplicating code across actions 2026-06-30 12:44:48 -04:00
AGENTS.md working on profile screen 2026-07-06 10:44:17 -04:00
ARCHITECTURE.md fix a bug renaming bags and adjust referer checks 2026-07-10 10:18:00 -04:00
CONTRIBUTING.md add some notes about architecture 2026-07-07 21:48:47 -04:00
docker-compose.directory.yml Simplify Docker setup: remove .env.example and .dockerignore, change to ./store path, encourage direct docker-compose download 2026-01-03 03:00:23 +00:00
docker-compose.volume.yml Rename docker-compose.volumes.yml to docker-compose.volume.yml 2026-01-03 03:08:58 +00:00
DOCKER.md update readme a bit 2026-07-07 03:13:47 -04:00
Dockerfile Separate store and cache volumes, remove passwords.key references 2026-01-03 02:42:37 +00:00
LICENSE Initial commit 2025-02-18 08:53:40 +00:00
mws.dev.mjs prisma changes, cleanup sendAdmin, fix write events bug 2025-11-15 19:31:41 -05:00
mws.run.mjs package versions, dependency updates, a couple bug fixes 2026-07-24 09:38:51 -04:00
package-lock.json package versions, dependency updates, a couple bug fixes 2026-07-24 09:38:51 -04:00
package.json use latest tw5 docs 2026-07-30 23:58:19 -04:00
PLANNING.md add referer assertions (very basic) 2026-07-09 22:45:51 -04:00
README.md a few tweaks for updates 2026-07-22 20:48:35 -04:00
tsBuildFlags.mjs add twVersion field now so we can add the feature easier later. 2026-07-22 21:02:57 -04:00
tsconfig.json a few tweaks for updates 2026-07-22 20:48:35 -04:00
tsup.config.ts package versions, dependency updates, a couple bug fixes 2026-07-24 09:38:51 -04:00

MultiWikiServer

Donate via PayPal to support development

Multiple users, multiple wikis for TiddlyWiki.

  • Bag & Recipe system for storing tiddlers.
  • User and Role management with ACL.
  • Multiple database engines supported, using Prisma.
  • Third-party OAuth and password-based login.

Flexible and Extendible

  • Plugins can add routes and hooks.
  • Abstractions everywhere, allowing flexibility.
  • The source code is fully typed and easy to navigate.
  • Admin endpoints can also be called from the CLI.

Most of these features are still in development.

Here's a sneak peak at the new UI that's coming

Dark Mode

light mode

Light Mode

dark mode

Warning: Security between users is still a dumpster fire.

While the database structure is reliable, the security mechanism is more like swiss cheese.

Do not use it to protect feelings or intellectual property.

There are plenty of ways for anyone with write access to get around the security restrictions.

this is fine

Also, this is a database, please make backups

Databases try very hard to be perfect, and data bugs are rare. But that doesn't mean things can't go wrong. Backups are pretty important.

How to run

The init command creates a new folder and installs what you need to get started. You can name "my-folder" whatever you want.

  • npm init @tiddlywiki/mws@latest my-folder
  • cd my-folder
  • npx mws listen --listener

You can run npx mws help to get more information about the commands.

  • the server runs on port 8080. It does not use HTTPS by default, but you can enable it by specifying a key and cert.
  • A passwords.key file is created which contains the password master salt. If this file changes, all passwords will become unusable and need to be reset.
  • Your database is in the store folder. All files in the store folder are data files, not temp or lock files! Never delete them!

The initial user created on first run has the username admin and password 1234.

If you run into trouble, or need help figuring something out, feel free to start a discussion. If you know what's wrong, you can also open an issue.

Updates

Within 0.x versions, please do NOT use npm install to update your instance from one minor version to the next.

To update between 0.x versions, open each wiki and click the cloud status icon, then click "save snapshot for offline use". You can then create a new instance and import your wikis via the browser.

Always, always, always save a backup of your store folder before updating.

Starting with 0.2

  • You can update to the latest version of MWS using npm update.
  • You can update to the latest version of tiddywiki using npx mws update-tiddlywiki.

If there are any database changes, MWS should pick them up and apply them on startup. The changes are generated by prisma's builtin migration and are supposed to preserve data, but backups are still highly recommended.

Backups

It is recommended to backup your entire data folder, not just the store folder, with a few exceptions.

  • You must always backup the entire store folder. Never delete any files in the store folder. All files in the store folder are data files!
  • passwords.key can be backed up, but since it never changes you could also just save a copy of it in a more secure location separate from your normal backups.
  • You should backup package.json and package-lock.json.
  • The node_modules folder can be ignored. npm ci will reinstall the node_modules folder based on package-lock.json.
  • The cache folder (next to the store folder) is generated every time MWS starts, so it's nothing but bloat. You can always ignore it.
  • Only the tw5/versions.txt file needs to be saved from the tw5 folder.

So essentially, the paths you need to backup are:

  • /package.json
  • /package-lock.json
  • /store
  • /tw5/versions.txt
  • /passwords.key (or save it separately)

Development

In 0.2, the development data folder is /dev/wiki.

If you want to work on the project, or just try out the latest changes,

  • git clone https://github.com/TiddlyWiki/MultiWikiServer
  • cd MultiWikiServer
  • npm install or npm run install-android
  • npm run certs - if you want https (unix only)
  • npm start update-tiddlywiki - Download the latest TiddlyWiki version
  • npm start init-store - Create the admin user and import default wikis.
  • npm start - this will run the build every time, but it's very fast.

The development wiki will be active at http://localhost:8080/

You can change the listeners as explained in the mws.dev.mjs file.