02-bookstack.md

kstack: book: Centerpoint Home Lab chapter: Documents & Organization page: BookStack tags: [bookstack, wiki, documentation, mariadb, oidc]

Overview

BookStack is the self-hosted personal knowledge base and documentation wiki — the platform this very documentation is written in. It organises content into Shelves → Books → Chapters → Pages and provides a full Markdown editor. Access is protected by Authentik OIDC on the external route. On the internal route, authentication still passes through BookStack's own OIDC flow (no Traefik ForwardAuth bypass), so the Authentik session is always required.

Access

Type URL Auth
External https://wiki.jeeves5454.ddns.net Authentik OIDC + GeoBlock + CrowdSec
Internal https://wiki.home.local Authentik OIDC (Step-CA TLS)

BookStack uses its own OIDC integration rather than Traefik ForwardAuth. The external Traefik route applies GeoBlock and CrowdSec but not authentik-auth@docker — BookStack manages the OIDC redirect itself.

Containers

Container Image Role
bookstack lscr.io/linuxserver/bookstack:latest Web application
bookstack-db mariadb:10.11 MariaDB database

bookstack (application)

Key environment variables:

Variable Value / Notes
APP_URL https://wiki.jeeves5454.ddns.net
AUTH_METHOD oidc
AUTH_AUTO_INITIATE true — skips BookStack login page, redirects to Authentik
OIDC_NAME Authentik
OIDC_ISSUER https://auth.jeevesconsults.ca/application/o/book-stack-website-s/
OIDC_ISSUER_DISCOVER true
OIDC_CLIENT_ID QjpMMmpDqNCQIM75np6gGyMkN9Y569AtyNVhfJvx
OIDC_CLIENT_SECRET REDACTED
OIDC_EXTERNAL_ID_CLAIM email
OIDC_DISPLAY_NAME_CLAIMS name
OIDC_FETCH_AVATAR false
OIDC_END_SESSION_ENDPOINT false
DB_HOST bookstack-db
DB_DATABASE bookstack
DB_USERNAME bookstack
DB_PASSWORD REDACTED
MAIL_HOST smtp.gmail.com
MAIL_PORT 587
MAIL_USERNAME jeeves5454@gmail.com
MAIL_ENCRYPTION TLS
MAIL_FROM noreply@jeevesconsults.ca
PUID / PGID 1000
TZ America/Toronto

Bind mounts:

Host Path Container Path Purpose
/home/jeeves/docker/bookstack/config /config App config, attachments, uploads
/home/jeeves/docker/bookstack/public /public Public web assets

bookstack-db (MariaDB 10.11)

Bind mounts:

Host Path Container Path
/home/jeeves/docker/bookstack/db /var/lib/mysql

Traefik Labels

traefik.http.routers.bookstack-ext.rule: Host(`wiki.jeeves5454.ddns.net`)
traefik.http.routers.bookstack-ext.entrypoints: websecure
traefik.http.routers.bookstack-ext.tls.certresolver: letsencrypt
traefik.http.routers.bookstack-ext.middlewares: plex-geoblock@file,crowdsec-bouncer@file
traefik.http.routers.bookstack-ext.service: bookstack-svc

traefik.http.routers.bookstack-int.rule: Host(`wiki.home.local`)
traefik.http.routers.bookstack-int.entrypoints: websecure
traefik.http.routers.bookstack-int.tls.certresolver: step-ca
traefik.http.routers.bookstack-int.service: bookstack-svc

traefik.http.services.bookstack-svc.loadbalancer.server.port: 80

Notes / Gotchas


Last Updated: 2026-06-17


Revision #2
Created 2026-06-17 04:45:51 UTC by Admin
Updated 2026-06-17 04:45:51 UTC by Admin