Skip to main content
  1. Posts/

Bookstack - A Self-Hosted Wiki

·4 mins· loading ·
Self-hosting Application
Timo
Author
Timo
Business Applications Architect, Network Engineer, Self-hosting Hobbyist.
Table of Contents
Bookstack - This article is part of a series.
Part 1: This Article

If you’re on the lookout for your very own personal Wiki you’ll stumble over a lot of solutions, every one with their pros and cons.
After trying out other great Wikis like Wiki.js, Outline or Mkdocs I always came back to Bookstack for its simplicity.

What Makes Bookstack So Special?
#

BookStack is a simple, self-hosted, easy-to-use platform for organizing and storing information.

  • Simple Requirements
  • High usability even for non-technical users (optional Markdown editor)
  • Feature rich but still polished
    Book view
    Book view example.

The main reason I stuck to Bookstack is how easy it is to create and maintain your documentation. Of course this comes with a price, which makes it not as customizable as Wiki.js for example. On the other hand it never felt so easy and quick to keep my personal knowledge base or documentations up-to-date which in the end of the day is the most important – Why even bother to run a Wiki if you can’t trust it? Let’s get into some of the features I love about Bookstack.

Shelves, Books And Chapters
#

Bookstack has a unique way of organizing content. There is no classical tree or folder structure, you’re actually creating a digital stack of books (hence the name I guess 😃) which are divided in chapters and pages and can be put in shelves to further organize them.

Shelf view
Organizing your Books in Shelves.

You might need some time to get used to this structure, but you’ll soon find yourself creating new shelves quicker than any IKEA fan ever could and fill them with content.

Page Revisions
#

Quick access to all revisions of any created object with simple actions to review changes or restore versions.

Page revisions
Page Revisions of a Book.

Might be even more handy if you’re not the only one creating content 😉.

Audit Log
#

Overview of all changes within Bookstack including:

  • Logins
  • User registrations
  • Changes on settings or any object
  • Audit log
    Comprehensive audit log.

Creating Content
#

Bookstack comes with an easy to use but feature-rich WYSIWYG editor which leads to lightning fast content creation even by non-technical users. To ensure your documentations are uniform it’s possible to define templates and use them on the fly via drag & drop.

Editor
WYSIWYG editor, showcasing the use of templates.

There is even an optional Markdown editor if that’s what you prefer but all the main features are available in the WYSIWYG editor too.

Built-In diagrams.net
#

Integrated diagrams.net (former Draw.io) functionality for easy creation of mind maps, flow charts or even network diagrams.

diagrams.net
Native diagrams.net integration.

Dark And Light Modes
#

Change between dark and light mode as you please or set the default in the configuration.

Dark and light mode
Easy and quick switching between dark and light mode.

Roles And User Management
#

The integrated user management allows granular permission settings.

Roles And User Management
User roles settings.

Customization
#

Bookstack comes with an integrated solution to add your personal logo and change colors for all of your content.
If that’s not enough you can change other visuals such as fonts or code block themes via custom HTML Head options as described here or even go deeper and override visuals with help of the Visual Theme System as described here.

Bookstack customization
Customize application logo and color settings.

Authentication
#

Besides the usual local authentication via email/password even social providers such as GitHub, Google or Slack can be used. OKTA, SAML2 and LDAP options are available too.

Installation (docker-compose)
#

Bookstack is set up in minutes using docker-compose, check out the official documentation for more information. Spin it up and check it out, it’s worth a look.

version: "2"
services:
  bookstack:
    image: lscr.io/linuxserver/bookstack
    container_name: bookstack
    environment:
      - PUID=<puid>
      - PGID=<pgid>
      - APP_URL=https://bookstack.domain.tld
      - DB_HOST=bookstack_db
      - DB_USER=<user>
      - DB_PASS=<password>
      - DB_DATABASE=bookstackapp
      - APP_DEFAULT_DARK_MODE=true # Sets dark mode as default
      - MAIL_FROM=bookstack@domain.tld
      - MAIL_FROM_NAME=BookStack
      - MAIL_DRIVER=smtp
      - MAIL_HOST=<smtp_server>
      - MAIL_PORT=<port>
      - MAIL_USERNAME=<smtp_username>
      - MAIL_PASSWORD=<smtp_password>
      - MAIL_ENCRYPTION=tls
      - APP_TIMEZONE=Europe/Berlin
      - APP_AUTO_LANG_PUBLIC=true
    volumes:
      - /path/to/config:/config
    ports:
      - <port>:80
    restart: unless-stopped
    depends_on:
      - bookstack_db

  bookstack_db:
    image: lscr.io/linuxserver/mariadb
    container_name: bookstack_db
    environment:
      - PUID=<puid>
      - PGID=<pgid>
      - TZ=Europe/Berlin
      - MYSQL_ROOT_PASSWORD=<password>
      - MYSQL_DATABASE=bookstackapp
      - MYSQL_USER=<user>
      - MYSQL_PASSWORD=<password>
    volumes:
      - /path/to/config:/config
    restart: unless-stopped
Change all the <variables>, set strong passwords and adjust the timezone.

Final Thoughts
#

When it comes to customization there are probably solutions out there that make things easier, even though Bookstack supports rudimentary customization settings out of the box too. The high usability, the great performance without being resource heavy and the many features while maintaining a very polished feel makes Bookstack my favorite Wiki so far.

If you enjoy Bookstack as much as I do, make sure to give it a ⭐ on the Bookstack GitHub repository.

Bookstack - This article is part of a series.
Part 1: This Article