---
# System prepended metadata

title: Wiki/KB project

---

# Wiki/KB project

TLDR TikiWiki is looking pretty good, worth a first try.

## Desirables

My guess on what we want out of a wiki solution.

### Critical
- self hosted?
- easy to contribute to
  - low barrier for entry
  - either good WISIWYG, or easy markup language, or both
  - easy to add/embed multimedia
  - Can have all the powerful features, but no good if people don't want to use it
- good search function
- backups
- secure & private to non-sigp
- cross-references/links to other notes

### Important

- Nested structure
- FOSS
- permissioned access control
  - depends if storing sensitive "HR" docs
  - arguably infrastructure docs
- category or tags for pages
- templates for new articles
- 2FA auth or VPN required
- markdown or some other easy markup language
  - e.g. for mediawiki, might have a scriptable workflow that passes markdown content through pandoc, or a plugin
- if supporting both markdown and some other syntax, we want it to be stored on the backend in a consistent format
  - i.e. users should be able to pick which syntax they use, not some people write pages in one, and others in another. And when they edit existing pages, they're forced to use one of them.
- version or edit history
  - standalone or git-based
- easy maintenance - software updates etc

### Nice to have
- role-based permissions
- google SSO? or OAUTH
- offline-editor integration
- note templates
- drag and drop image/multimedia upload
- comment/discussion
- easy data export for other platforms
- API integrations
  - e.g. for discord(?), idk about mattermost, syncing AWS network structure
- plugin system

## Products

### Tiki Wiki

FOSS groupware, but based on a wiki

https://doc.tiki.org/Wiki
- More popular than Dokuwiki (but both popular)
- write in wiki syntax (similar to mediawiki, docuwiki), but apparently also markdown support
  - https://doc.tiki.org/PluginMarkdown?highlight=markdown
- Can also have "structures", grouping pages into a tree or book
  https://doc.tiki.org/Structures
- sounds like a good permission hierarchy
- Has out of the box "profiles" to support common setups:
  https//profiles.tiki.org
https://open.spotify.com/playlist/4t3Tlq0qbjxdxudE9T5lb4?si=Uy35Yq
- Big dev team https://en.wikipedia.org/wiki/Tiki_Wiki_CMS_Groupware#Project_team

#### Evaluation

- Barrier for entry is too high, too many hurdles to make it nice to add notes so is unlikely that people will bother to add
- Bit of a monolith
- Better presets etc than mediawiki, and content, but editing is somewhat troublesome
- Markdown plugin only supports md "blocks" in the wiki syntax page
    Rather than an editor mode
- A solid amount of maintenance effort (not quite as much as mediawiki prob)
- lots of plugins and docs are pretty old

### Wiki.js
https://js.wiki/

- markdown + live preview, wysiwyg
- seems "modern & trendy"
- pretty popular on github
- git-backed storage option
- has a light/dark mode
- postgres recommended (other dbs not supported in next major release)
   - I am more familiar with postgres anyway :)
- has an aws marketplace image builder https://github.com/Requarks/wiki-packer
- security reporting is a plaintext email
- has higher resource recommendations than tiki, docuwiki
- has an "upgrade companion" update helper for docker installations
  written in C#?!
  https://github.com/Requarks/wiki-update-companion


### Bookstack
https://www.bookstackapp.com/

- docs tier of book -> chapter -> page
- wysiwyg & markdown editing with live preview
- live demo https://demo.bookstackapp.com/
- php (laravell) + mysql
- has a light/dark mode

### Growi Docs
https://docs.growi.org/

- First impression seems pretty suitable!
- Markdown editing with side-by-side realtime preview, but more structurable for a wiki
- in nodejs
- Integration with codimd https://docs.growi.org/en/admin-guide/admin-cookbook/integrate-with-hackmd.html
- BUT!
    - Seems a bit new/immature, likely more fiddly
    - Developers and most users are Japanese, so a bit of a language barrier in searching through issues, being notified of problems
    - A fair few recent security vulns reported - XSS, RCE: https://weseek.co.jp/tags/GROWI/
        - Nicely reported (according to web translate), but recent + problematic + language barrier
- Any feature difference to bookstack?

### Dokuwiki
Like mediawiki syntax but no database, only flat files on the backend

- Built in ACLs
- Kinda slow out of the box, IIRC there's an AJAX plugin to make things smoother with partial page loading
- Easier backups because no DB required
- Only 1 editor at a time per page
- Single developer, but well-maintained
- Seems pretty small core that you extend with plugins/templates
- Lots of plugins, inc markdown plugin
    - Not obvious, but looks like the markdown plugin lets you write a "markdown block" that's then rendered, rather than letting someone edit in markdown that's then converted to the same syntax. (So doesn't let people choose how they want to edit)
    
### Outline
https://github.com/outline/outline
- nodejs + react
- whats the diff compared to wiki.js?
    - seems a little smaller in terms of integrations etc
    - not as many auth providers?
    - perhaps faster? that's their pitch
    - openapi
    - less full-fledged docs
    - security reporting is a plaintext email
- more focused on their Saas hosted model?

### Notion.so

- Docs/Notes, wiki & project management
- Editor seems similar to hackmd but more fleshed out structuring
- Tree-style nested docs
- Apparently pretty nice/seamless to edit
- Not FOSS or self-hosted
- \$ for private team
  - \$10/user/month base plan https://www.notion.so/pricing
    (\$8 if paying annually, a bit sneaky)
  
### Mediawiki
What wikipedia uses

- Heaps of plugins and widely used
    - Big and massively used
    - But designed around the Wikipedia use-case
- Not designed for granular permissions
- Kinda annoying to embed files/images (at least by default)
- Perhaps difficult to structure nicely (at the category and page level)
  - Arbitrary structure/categorization of pages
  - Enough flexibility to shoot yourself in the foot
- Powerful
- Small core, add what plugins you need
- More geared to situations where the content is read much more than written?
  - Separate edit & publish
  - Also a wide set of possible authors
- No real-time collab
- WYSIWYG & wikitext
    - no good markdown support from the looks of things

### Bluespice Mediawiki
Fork/extension of mediawiki for enterprise usage

- Apparently better ACL, permissions management
- Elasticsearch - normal mediawiki search isn't as strong?
- Can use mediawiki plugins

### Gollum
https://github.com/gollum/gollum
- git-based
- markdown and lots of syntax support
- fairly minimal and no easy permissions setup
- search?

### XWiki
java-based enterprise wiki
- admin can choose between many content syntax formats, inc markdown
- Apparently a good FOSS alternative to confluence

### HackMD

Like GDocs for Markdown notes & books

- Collaborative markdown editor
- Not FOSS or self-hosted
- \$ for private team
  - \$5/user/month base plan https://hackmd.io/pricing
- No WYSIWYG?
- Seamless editing and real-time collab like GDocs
- Can structure into "book mode" with various chapter sections
  - Better than individual docs/notes, but not great as a KB
  - so only 1 level of nested docs/categories
- https://hackmd.io/s/features
 - Offline editor integration for vscode
- a bit annoying to link to other pages (need uuid)

### CodiMD

FOSS core of HackMD

- Collaborative markdown editor
- Previously "HackMD Community Edition"
- No "book mode", so only grouped in individual notes

### Hedgedoc
Community fork of CodiMD

https://hedgedoc.org/
- Collaborative markdown editor
- was originally called CodiMD
    - forked from before, doesn't share code with current HackMd or CodiMD
    https://hedgedoc.org/history/
- doesn't seem to have access list permissions
    - either private (you only), or all signed in, public
    - separate r and rw permissions
    - no "these people or groups can read" (unless multiple people can be nominated as "owners")
- currently undergoing rewrite into typescript
  - separate frontend React Client, Typescript backend
  - (Current CodiMD is an open core for the rewritten "HackMD Enterprise")


### Github Wiki

- Could have separate repos with wikis, and use repo permissions to control access
- Seems a bit "shoehorny", messy
- Not an obvious/easy way to search through
- No real-time editing/collab
- Only markdown-based
- A bit annoying to embed images
- Can't embed arbitrary file types 


### https://etherpad.org

Like a FOSS google doc
- real time editing
- individual documents (like Word), not really for a wiki/kb

### Nextcloud

Self-hosted file storage, for the purposes of a wiki, closer to microsoft office + dropbox
- Also calendar, groupware, chat, meetings

### Foswiki

https://www.wikimatrix.org/show/foswiki
- git & flat files

## Structuring/What to Include

- Internal KB
  - e.g. question/answer, who? what? when? why?
- Best practice/guidelines for various tasks, collection of relevant resources/links
  - coding style
  - security review tips/tricks
  - checklist
  - perhaps differentiating between official SigP - "you should do this" and general advice tips/tricks
- Network/infrastructure docs
  - e.g. what server/service is where
- Procedures
  - e.g. HR, backup, disaster recovery
  - expense reimbursement
  - individual computer requirements
    - e.g. encrypted storage

## Random useful links/resources

- Wiki choice wizard: https://www.wikimatrix.org/wizard
- https://www.wikimatrix.org/compare/tiki-wiki-cms-groupware+twiki
- https://tiki.org/Tiki-vs-DokuWiki
- https://tiki.org/Tiki-vs-MediaWiki