使用 BookStack 寫文檔,一個開源的 Confluence 替代品
BookStack 是一個開源的、基于網頁的文檔系統(tǒng),它允許你創(chuàng)建一個結構化的知識庫供個人、團隊或公司使用。BookStack 專注于易用性和設計,以適合具有潛在的混合技術技能的受眾。它建立在 PHP 框架 Laravel 之上,使用 MySQL 或 MariaDB 作為數(shù)據(jù)存儲。
在嘗試為我的工作場所尋找文檔或維基系統(tǒng)后,我構建了 BookStack。??Confluence?? 是最符合我要求的選項,但基于用戶的定價帶了的阻礙。Confluence 的封閉性也對我要構建的文檔的壽命提出了質疑。最后,我決定建立自己的平臺來滿足我的需求。我用 MIT 許可發(fā)布它,以回饋我多年來喜愛并從中受益的開源社區(qū)。
內容層次和組織選項
為了保持熟悉和直觀,BookStack 使用了現(xiàn)實世界的書籍術語來描述其組織結構。文檔內容被創(chuàng)建為 “頁Page”:
- “頁” 屬于一個特定的 “書Book”。
- 在一本書中,“頁” 可以選擇性地被分組為 “章節(jié)Chapter”。
- 隨著文檔的增長,你可以使用 “書架Shelve” 來對 “書” 進行分類,如果需要,“書” 可以成為多個書架的一部分。
這種結構是 BookStack 的核心,而且往往是決定 BookStack 是否適合你的使用情況的選擇因素。
在這個核心層次上,BookStack 還提供了標簽、用戶收藏夾和高級搜索功能,以確保內容可被發(fā)現(xiàn)。
編寫文檔
在 BookStack 中編寫文檔的主要方法是通過使用其所見即所得(WYSIWYG)編輯器,它利用了開源的 ??Tiny?? 項目。這個編輯器提供了一系列的內容格式,包括:
- 各種標題級別
- 代碼塊
- 可折疊的塊
- 表格
- 圖片
- 鏈接
- iFrame 嵌入
- 提醒呼出
- 項目符、編號和任務列表
- 繪圖(通過與開源 ??diagrams.net?? 的整合)
如果你喜歡 ??Markdown??,你可以使用內置的 Markdown 編輯器,它提供實時預覽并支持與所見即所得編輯器相同的功能集。如果權限允許,你甚至可以根據(jù)你所編輯的頁面,在這些編輯器選項之間跳轉。
你的數(shù)據(jù)是如何存儲的
如果使用了 Markdown,除了原始的 Markdown 內容外,文檔以相對簡單的 HTML 格式存儲在 ??MySQL 或 MariaDB?? 數(shù)據(jù)庫中。很多設計和開發(fā)決定都是為了保持這種 HTML 格式的簡單性。它盡可能地使用普通的標準 HTML 元素,以確保原始文檔內容保持開放和可移植。
上傳的圖片、附件和創(chuàng)建的圖紙被保存在本地文件系統(tǒng)中,但也可以選擇存儲在一個與 s3 兼容的數(shù)據(jù)存儲中,比如開源的 ??MinIO??。
為了保持你的內容可訪問性,有內置的選項可以將內容導出為 PDF、HTML、純文本或 Markdown。對于外部使用,有一個 HTTP REST API 和一個 Webhook 系統(tǒng)。在擴展方面,一個 “邏輯主題系統(tǒng)” 允許在廣泛的系統(tǒng)事件中運行自定義的 PHP 代碼。
為商業(yè)做好準備
BookStack 具有一系列的功能來支持商業(yè)環(huán)境。內置了對一系列認證選項的支持,包括 SAML2、OpenID Connect 和 LDAP,允許使用 ??KeyCloak?? 等平臺輕松實現(xiàn)單點登錄。也支持多因子認證(MFA),并且可以根據(jù)角色進行授權。審計日志提供整個實例的修改活動的完整可見性。
一個完全基于角色的權限系統(tǒng)為管理員提供了對系統(tǒng)內容的創(chuàng)建、查看、更新和刪除操作的完全控制。這允許每個角色的系統(tǒng)默認值,以及在每個層次項目基礎上設置自定義權限的選項。
支持的社區(qū)
經過 7 年多的積極開發(fā),BookStack 的社區(qū)已經發(fā)展到了各種討論和支持的渠道。我們現(xiàn)在有:
如果你想體驗一下 BookStack,你可以 ??在我們的演示網站?? 試試。要了解如何設置你自己的實例,請訪問 ??我們文檔中的安裝頁面??。