ssddanbrown/bookstack
Free, open-source self-hosted knowledge base built on Laravel. Organize content in books, chapters, and pages with a simple WYSIWYG editor, powerful search, role-based permissions, and integrations—ideal for team wikis, documentation, and internal knowledge management.
Architecture fit. Unchanged by this release. BookStack remains a self-hosted Laravel application, not a Composer library — the correct integration model is "deploy and operate," not composer require. It assumes a LAMP-ish stack (PHP 8.2+, MySQL 8 / MariaDB, Nginx or Apache, local or S3-backed file storage) and ships as a monolith with an admin UI, REST API, and webhook/SSO surface. If our goal is a documentation/wiki capability adjacent to an existing Laravel product, the realistic pattern is to run BookStack as a separate service and integrate over its API and identity provider, not to embed its code. Nothing in v26.09.2 changes that calculus.
Integration feasibility. Unchanged — high for a standalone deployment (official Docker images, documented upgrade path, SAML2/OIDC/LDAP support, API tokens), medium-low for deep embedded-UI or custom theming work. One nuance this release adds: SAML2 route hardening affects the SSO callback surface, so SSO integration testing is now a mandatory part of the upgrade smoke set rather than an optional check.
Technical risk (v26.09.2). This is a security release and supersedes v26.09.1 — deploy .2, not .1. No breaking changes or deprecations announced, but five items carry real signal:
composer.lock, diff it between tags before rollout, and verify resolution against our exact PHP pin.Key questions. (1) Do we expose ZIP import to non-admin roles — and has that answer changed since .1? (2) Do we consume the comments or attachments API endpoints, and do our clients independently filter recycle-bin/draft content, or do they trust the API to? (3) Does our permission model grant attachment update/delete more broadly than page-view — i.e., was the draft-attachment defect actually exploitable in our configuration? (4) Have we rotated any credentials for security reasons since deployment, and do we need to force session invalidation because remember-me tokens survived those rotations? (5) Which PHP minor version are we pinned to, and does the second consecutive dependency bump still resolve cleanly? (6) Who owns the historical audit for both stale chapter-promotion permissions (.1) and draft-page attachment modifications (.2)? (7) Is a vendor-supported alternative required, given BookStack's community-only support model and a security-release cadence that has now produced two patches in rapid succession?
Stack fit. Requires PHP 8.2/8.3, Composer, MySQL 8+ or MariaDB 10.6+, and a web server; optional dependencies for image thumbnails and PDF export. Deploy via the official container image or a build-from-source composer install --no-dev. Front with a reverse proxy terminating TLS and passing the correct trusted-proxy headers, otherwise generated URLs and SSO callbacks break.
Migration path. Target v26.09.2 directly; the .1 fixes are cumulative and there is no reason to stage through .1. Back up the database and the storage/uploads tree (and .env), put the app in maintenance mode, pull v26.09.2, run composer install, php artisan migrate, clear caches, then bring it back up. Container deployments: tag bump plus the same migrate step in the entrypoint. Rollback means restoring the DB snapshot — migrations are forward-only, so a snapshot is mandatory. Because this is the second patch in a short window, capture the composer.lock diff from .1 (or from current prod) to .2 as part of the change record.
Compatibility. Verify the second consecutive dependency bump against our PHP pin before rollout; if we run 8.4, validate in staging first. Confirm image/PDF binaries and any S3 storage config still behave. Audit API clients for assumptions about both attachment payloads and comment payloads — .2 changes comment visibility for recycle-bin pages. Exercise the SAML2 login flow explicitly, since those routes were modified. No config-file or route additions are indicated, so a low-friction upgrade is still expected.
Sequencing.
Effort is small — roughly half a day for a standard single-instance deployment, one to two days if the permission/attachment remediation touches meaningful content volume, plus a few hours for the SSO and API-consumer verification that .2 newly requires.
Maintenance. The cadence assumption needs revising. BookStack already ships monthly-ish, but v26.09.1 → v26.09.2 is a security patch landing within days of a prior patch, on the same subsystem (API/content filtering) plus SSO and imports. Budget the recurring monthly window plus a fast lane: a defined SLA (e.g. 72 hours to staging, one week to production) for releases tagged "Security Release," with a named owner empowered to call the window. Each upgrade requires DB + uploads backup and a migration run; cost is dominated by verification, not the upgrade itself.
Support. Community support only — Codeberg issues, Discourse, documentation. No first-party commercial SLA. Two security releases in rapid succession is exactly the scenario where an internal owner matters: there is no vendor hotline if a patch regresses our SSO flow. Documented fallback remains export content and restore a prior image. Consider subscribing to the release blog/feed so security releases are detected by push, not by our monthly review.
Scaling. Unchanged. Vertical scaling of PHP-FPM plus database is the primary lever; search is database-bound, so large instances hit search latency before page latency — plan read replicas or a segmented content model past low tens of thousands of pages. Uploads to object storage rather than local disk; session and cache off local file storage for any multi-node setup. Note that the draft-attachment authorization defect and the remember-me session issue both scale in blast radius with the number of nodes and the breadth of permission grants, not with traffic.
Failure modes. Do not skip this patch if either API consumption or non-admin import is in play — and treat the two recycle-bin API leaks as evidence of a systemic filtering weakness, so add a standing regression check rather than assuming closure. Stale permission state after hierarchy changes (the .1 chapter-promotion fix; historical drift persists until remediated). Attachment authorization drift on draft pages (the .2 fix; historical modifications unexplained). Session persistence after credential rotation (the .2 fix; pre-existing remember-me tokens outlive it). SSO misconfiguration locking out all admins — .2 modifies SAML2 routes, so keep at least one local admin account as a break-glass path and test the IdP flow before opening the window. Reverse-proxy header errors causing broken links or SSO redirect loops. Silent dependency-resolution failures from the second consecutive PHP package bump. Failed migrations without a verified snapshot.
Ramp-up. End users need little beyond a content-structure convention; the editor is conventional. Administrator ramp-up is still one to two days for roles and permissions inheritance, SSO/LDAP, the API and webhooks, backup/restore, and the upgrade runbook — but add a half-day on security-response mechanics: how to read a BookStack security release, what the smoke set is, how to force session invalidation, and who audits permission drift. The permission model remains the top source of operational error — hierarchies inherit in non-obvious ways, which is precisely the class of bug .1 and .2 both touched — so document it explicitly, including how attachment permissions relate to page-view permissions on draft content, before rollout.
Recommendation. Adopt v26.09.2 as the baseline for any new deployment and schedule it as a prioritized security upgrade for existing instances — ahead of routine work unconditionally if we consume the comments or attachments API, if ZIP import is exposed beyond administrators, or if attachment permissions are granted more broadly than page-view. Treat .1 as superseded rather than as a separate step. Two items are upgrade plus audit, not just upgrade: chapter-promotion permission drift (.1) and draft-page attachment modification history (.2). One item is upgrade plus remediation: force session invalidation for any credentials rotated for security reasons before this patch. Finally, escalate the cadence question — two rapid security patches on overlapping surfaces, combined with community-only support, is the point at which we should decide deliberately whether an internal on-call owner is sufficient or whether the documentation workload justifies a commercially supported platform.
How can I help you explore Laravel packages today?