Bookstack - A Self-Hosted Wiki
Table of Contents
Bookstack - This article is part of a series.
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
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.
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.
Might be even more handy if you’re not the only one creating content 😉.
Audit Log #
Overview of all changes within Bookstack including:
- User registrations
- Changes on settings or any object
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.
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.
Dark And Light Modes #
Change between dark and light mode as you please or set the default in the configuration.
Roles And User Management #
The integrated user management allows granular permission settings.
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
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_FROMfirstname.lastname@example.org - 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
<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.