【经验分享】BookStack:个人知识库搭建
帆已扬
2026年03月10日 11:25

最近想找个地方记录经验和想法,输出一些东西,就想本地化搭一个B/S架构的知识库。首先想到的是 confluence,这个很好用,但是比较重而且收费,所以找到了它的轻量化版 BookStack,这里记录下搭建的注意事项。

一、官方文档

在官网上,找到了安装文档:https://www.bookstackapp.com/docs/admin/installation/

文档介绍的很清楚,BookStack需要一些组件:PHP、MySQL 或 MariaDB、Composer,还需要一个支持php的服务器,Apache 或是 nginx 都可以。知识库是要长期使用的,稳定性很重要,所以建议搞一个独立机器来装。

文档很贴心,给了安装脚本,怕麻烦的可以用这个来安装。不过需要在纯净的系统上用,安装前要提前做好快照。脚本(ubuntu-2404版本):https://codeberg.org/bookstack/devops/src/branch/main/scripts/installation-ubuntu-24.04.sh

二、安装脚本存在的问题

搭建环境是新装的Ubuntu-24.04虚拟机,发现脚本中有几处需要注意:

  • 14行 获取ip操作,取不到ip。`ip addr` 的输出没有 “state UP” 这个字符串,改成查找 'BROADCAST' 能正常取到(这可能和设备或版本有关)

代码块
Shell
自动换行
复制代码
# Get the current machine IP address
CURRENT_IP=$(ip addr | grep 'state UP' -A4 | grep 'inet ' | awk '{print $2}' | cut -f1  -d'/')
复制成功
  • 90行 启动MySQL服务,无法启动。服务名不对,应把 “mysql-server.service” 改为 “mysql.service”。(这里报错安装脚本不会退出,但后续数据库相关的配置都会异常)

代码块
Shell
自动换行
复制代码
# Set up database
function run_database_setup() {
  # Ensure database service has started
  systemctl start mysql-server.service
  sleep 3
复制成功
  • 107行 获取安装脚本的校验码,无法取到。可能是国内网络的原因,这里大概率会报错,导致安装脚本退出。我的做法是,注释掉获取校验码以及后面校验部分的代码。

代码块
Shell
自动换行
复制代码
# Install composer
function run_install_composer() {
  EXPECTED_CHECKSUM="$(php -r 'copy("https://composer.github.io/installer.sig", "php://stdout");')"
  php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
  ACTUAL_CHECKSUM="$(php -r "echo hash_file('sha384', 'composer-setup.php');")"

  if [ "$EXPECTED_CHECKSUM" != "$ACTUAL_CHECKSUM" ]
  then
      >&2 echo 'ERROR: Invalid composer installer checksum'
      rm composer-setup.php
      exit 1
  fi
复制成功

三、其他注意项

安装时注意tail下日志,看有没有异常;安装完,测试能否正常访问。如果用域名访问异常,可以尝试配一下hosts。

安装脚本中没有设置开机启动,可按如下配置:

代码块
Shell
自动换行
复制代码
设置 Apache2 MySQL PHP8.3-FPM 自启
sudo systemctl enable apache2
sudo systemctl enable mysql
sudo systemctl enable php8.3-fpm
复制成功

由于是单机使用,安全方面配置就没必要了;另外还可以做定时任务来定时备份,后面有需要再做吧。