Why BookStack Beats a Shared Google Doc for Team Knowledge
Most teams outgrow their documentation setup before they realize it has happened. A folder of Google Docs becomes impossible to navigate, a Notion workspace turns into a graveyard of half-finished pages, and a shared Confluence account costs more per seat than anyone wants to justify. BookStack offers a different path: a self-hosted, open-source wiki platform built around a clean, hierarchical structure – Books, Chapters, and Pages – that keeps documentation organized without requiring users to invent their own system every time.
What makes BookStack worth the setup effort is its opinionated structure. Unlike raw wikis or markdown-based tools, BookStack gives every piece of content a clear home. A Book might be “Server Infrastructure,” a Chapter inside it might be “Deployment Procedures,” and individual Pages hold the actual runbooks. That hierarchy is enforced by the interface itself, which means new contributors are less likely to dump a document somewhere random and orphan it.
It runs on a standard LAMP stack, ships with Docker support, and can sit behind a reverse proxy with minimal configuration.

What You Need Before You Start
This guide uses Docker Compose, which keeps the installation clean and portable. You will need a Linux server or VPS with Docker and Docker Compose installed, a domain name or local hostname pointing to the machine, and at least 1 GB of RAM available for the containers. BookStack pairs a PHP application container with a MySQL database, so both services will run side by side under the same Compose file.
Start by creating a working directory. Something like /opt/bookstack works well. Inside it, create a file named docker-compose.yml. The official LinuxServer.io image for BookStack is the most widely maintained option and handles the PHP environment, web server, and app configuration in a single container. Pull from lscr.io/linuxserver/bookstack and pair it with lscr.io/linuxserver/mariadb for the database layer.
Your Compose file needs to define two services: the BookStack app and the MariaDB instance. Set the environment variables carefully – DB_HOST, DB_DATABASE, DB_USERNAME, and DB_PASSWORD in the app service must match what you define in the MariaDB service. The APP_URL variable is where most first-time setups go wrong; it must exactly match the URL users will access, including the protocol. If you plan to put BookStack behind a reverse proxy like Traefik, set APP_URL to your public HTTPS address from the start, not the container’s local address.

Running the Stack and First-Time Configuration
With the Compose file written, bring the stack up with docker compose up -d. The first boot takes slightly longer than subsequent starts because the app container initializes the database schema, runs migrations, and seeds the default admin account. Give it thirty to sixty seconds before hitting the URL in your browser. If you get a database connection error on first load, the most common cause is that the MariaDB container is still initializing when BookStack tries to connect – running docker compose logs -f bookstack shows the real-time output and makes the sequence visible.
Once the interface loads, log in with the default admin credentials: email is admin@admin.com and password is password. Change both immediately. From the admin panel, set your application name, configure the default language and timezone, and decide whether user registration should be open or invite-only. For internal team wikis, invite-only with email verification is the safer default. BookStack also supports LDAP and SAML authentication out of the box, which means it can connect to an existing identity provider if your organization already runs one.
Storage for uploaded images and attachments defaults to local disk inside the container, which means you need a persistent volume mapped to the host to avoid losing files on container restart. Add a volume mount pointing /config inside the container to a directory on your host, such as /opt/bookstack/config. That single directory stores app configuration, uploaded content, and logs. Backups then become straightforward: copy that directory and dump the MariaDB database on a schedule using a cron job or a tool like Automysqlbackup.
Organizing Your Knowledge Base for Long-Term Use
The technical setup is the easy part. The harder challenge is getting content into a structure that actually holds up as the team grows. BookStack’s Book-Chapter-Page model works best when Books map to broad domains – think “HR Policies,” “DevOps,” or “Product Specs” – rather than individual projects that might come and go. Chapters then subdivide each domain into logical clusters, keeping the navigation shallow enough that someone new can find what they need without a search query.
BookStack includes a full-text search across all content, a WYSIWYG editor alongside a Markdown editor, page revision history with diff views, and a tagging system that cuts across the hierarchy when a document belongs to more than one domain. Permissions are granular enough to lock specific Books to certain teams while leaving others public across the instance. The audit log in the admin panel tracks every edit, deletion, and permission change, which matters more than most teams expect once documentation starts influencing real decisions.
The API is worth enabling early, even if you have no immediate use for it. BookStack exposes a full REST API for creating, updating, and reading content, which opens the door to automated documentation pipelines – a CI job that posts deployment notes directly to a Page, or a script that pulls structured data from another internal tool and keeps a reference page current without manual updates.

BookStack does not try to be everything. It has no task management, no comments threads in the style of a forum, and no real-time collaborative editing. Those absences are a design choice, and for teams that have watched a Notion workspace collapse under the weight of too many use cases, that restraint is exactly the point.
Frequently Asked Questions
Can BookStack run without Docker?
Yes. BookStack supports a traditional LAMP stack install, but Docker Compose is faster to deploy and easier to maintain for most self-hosters.
Is BookStack suitable for a single user?
Absolutely. It works well for personal knowledge bases and scales up to multi-team setups with role-based permissions and LDAP integration.





