團隊文件通常死於兩種方式之一:散落在沒人能搜尋的聊天記錄裡,或者埋在一個難用到沒人願意更新的 wiki 裡。BookStack 是少有的、大家真會用起來的自託管 wiki。內容按書架、書、章節和頁面組織——這種結構不用培訓誰都懂。而且它幾乎不怎麼佔伺服器。
為什麼選 BookStack
- 結構一目瞭然。 用書和章節,而不是一堆平鋪的頁面。
- 編輯不嚇人。 預設是所見即所得編輯器,喜歡 Markdown 的也能用。
- 正經的權限控制。 按書架、書或頁面分配角色——人事檔案不會讓外包人員看到。
- 公司統一登入。 內建 LDAP、SAML2 和 OpenID Connect。
- 資料歸您。 所有內容都在一個 MariaDB 資料庫和伺服器上的一個資料夾裡。
它不是萬能的。需要跟著程式碼一起改的開發文件,應該放在程式碼儲存庫裡,而不是 wiki 裡。
需要什麼設定
BookStack 很輕量。對大多數團隊來說,Micro-IP——2 vCPU、2 GB、每月 $10——綽綽有餘。有了獨立 IP,同事們才能在您的網域上透過 HTTPS 存取它。磁碟增長來自上傳的截圖和 PDF,而不是頁面數量。
用 Docker Compose 安裝
我們使用廣泛採用的 LinuxServer.io 映像。先產生一個應用金鑰:
docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey
複製它輸出的 base64:... 值。然後建立 docker-compose.yml:
services:
bookstack:
image: lscr.io/linuxserver/bookstack:latest
environment:
- PUID=1000
- PGID=1000
- APP_URL=https://wiki.example.com
- APP_KEY=base64:paste-your-key-here
- DB_HOST=db
- DB_PORT=3306
- DB_DATABASE=bookstack
- DB_USERNAME=bookstack
- DB_PASSWORD=change-me
volumes:
- ./bookstack:/config
ports:
- 127.0.0.1:6875:80
depends_on:
- db
restart: unless-stopped
db:
image: lscr.io/linuxserver/mariadb:latest
environment:
- PUID=1000
- PGID=1000
- MYSQL_ROOT_PASSWORD=change-me-too
- MYSQL_DATABASE=bookstack
- MYSQL_USER=bookstack
- MYSQL_PASSWORD=change-me
volumes:
- ./db:/config
restart: unless-stopped
docker compose up -d
docker compose logs -f bookstack
APP_URL 必須和大家實際使用的位址一致,包括 https://。寫錯的話,圖片和連結會以奇怪的方式失效。更多 Compose 內容見我們的部署棧指南。
HTTPS 與首次登入
把一個子網域解析到伺服器(方法),在 127.0.0.1:6875 前面放上 nginx,再用 certbot 加上憑證——反向代理指南會一步步帶您完成。
然後用預設帳號登入:admin@admin.com / password。在分享連結之前,立刻修改電子郵件和密碼。其他人各自開帳號,或者透過您們的身分提供商登入。
備份
需要保護的有兩樣:資料庫,以及 ./bookstack 裡的上傳檔案。像這樣的夜間任務可以搞定資料庫:
docker compose exec -T db mysqldump -u bookstack -pchange-me bookstack > /var/backups/bookstack.sql
然後把 /var/backups 和 compose 資料夾備份到異地——這正是我們的 restic 指南所做的。Managed Backups 還能在此之上加上整台伺服器的每日還原點。
日常維護
更新只需 docker compose pull && docker compose up -d。BookStack 啟動時會自動執行資料庫遷移。大版本升級前讀一下發布說明;它們簡短又清楚。
如果團隊還想要一個放工單和程式碼的地方,在同類方案上再跑一個自託管的 Git 伺服器,和它搭配得很好。
評論
目前還沒有評論。歡迎成為第一位。