前言

关于知识库软件,我也尝试过很多个不同的软件,像是飞书、Obsidian、印象笔记、Flowus,以及最近在用的TiddlyWiki,特别是TiddlyWiki,已经是最贴近我的实际需求了,但还是没办法多端同步。反正自己买着服务器建独立站,不如继续利用一下服务器的资源。

在决定使用Bookstack之前,我还尝试了MediaWiki,但一周体验下来,操作体验对我来说,太反常识了,对于建立个人知识库来说并不是一个好的选择,最后在体验过Bookstack的Demo之后决定就是他了。

附:Demo-Bookstack

服务器情况

腾讯云轻量应用服务器Wordpress镜像

image.png

开始安装

本文主要讲述Docker镜像安装,并且是使用Docker Compose安装;

玻珠因为不了解docker相关内容直接去问AI,导致一直出现数据库没办法连接的问题,浪费了大量的时间去调整。
最后还是直接使用官方的指导配置一键安装成功

安装docker

我们只需要在登录到宝塔面板,从侧边栏进入点击docker,根据提示安装即可;

确认Docker安装成功

安装dockerCompose也很简单,我们先确定Docker是否正确安装,登录进服务器后,在命令行输入docker --version,如显示对应版本号即表示Docker已经安装好;
image.png

使用curl安装Docker Compose

在命令行中输入以下指令安装Docker Compose

sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

赋予Docker Compose执行权限

sudo chmod +x /usr/local/bin/docker-compose

验证安装

在命令行中输入 docker-compose --version 确认是否安装成功
image.png

Docker Compose配置

创建文件夹,并创建一个名字为docker-compose.yml的配置文件

image.png

根据提示配置yml文件

完整配置说明可查看官方文件:docker-compose.yml

将下方配置内容复制到你的docker-compose.yml文件中,并将localhost调整为你的服务器外网ip

services:
  bookstack:
    image: lscr.io/linuxserver/bookstack:version-v25.02
    container_name: bookstack
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC  # 根据需求调整时区,默认为UTC+0,需要和下方mariadb的TZ保持一致
      - APP_URL=http://localhost:6876
      # - APP_KEY=base64:FmsryFy67lD+FopSfMMtS+3SGsloxUQb+yqXGl6XdiM= # 先注释掉这一行,配置完成启动后再生成新的配置填入
      - DB_HOST=mariadb
      - DB_PORT=3306
      - DB_DATABASE=bookstack # 替换为你所需的名字,需要调整的话要和下方mariadb的MYSQL_DATABASE保持一致
      - DB_USERNAME=bookstack # 替换为你所需的名字,但需要和下方mariadb的MYSQL_USER保持一致
      - DB_PASSWORD=bookstack8432 # 替换为你所需的密码,但需要和下方mariadb的MYSQL_PASSWORD保持一致
    volumes:
      - ./bookstack_app_data:/config
    ports:
      - 6876:80
    restart: unless-stopped

  mariadb:
    image: lscr.io/linuxserver/mariadb:11.4.4
    container_name: mariadb
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC  # 根据需求调整时区,默认为UTC+0,需要和上方bookstack的TZ保持一致
      - MYSQL_ROOT_PASSWORD=mysupersecretrootpassword # 替换你自己的密码
      - MYSQL_DATABASE=bookstack  # 和上方bookstack的DB_DATABASE保持一致
      - MYSQL_USER=bookstack  # 和上方bookstack的DB_USERNAME保持一致
      - MYSQL_PASSWORD=bookstack8432  # 和上方bookstack的DB_PASSWORD保持一致
    volumes:
      - ./bookstack_db_data:/config

    restart: unless-stopped

通过Docker compose配置启动镜像

在docker-compose.yml同目录下运行命令行并执行docker-compose up -d
image.png

查看镜像日志,并按提示生成key

查看bookstack的docker日志,发现提示The application key is missing, halting init! You can generate a key with: docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey And apply it to the APP_KEY environment variable.
我们只需要按照他的方法生成appkey填入配置,然后重启docker即可
image.png

services:
  bookstack:
    image: lscr.io/linuxserver/bookstack:version-v25.02
    container_name: bookstack
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC  # 根据需求调整时区,默认为UTC+0,需要和下方mariadb的TZ保持一致
      - APP_URL=http://localhost:6876
      - APP_KEY=base64:FmsryFy67lD+FopSfMMtS+3SGsloxUQb+yqXGl6XdiM= # 先注释掉这一行,配置完成启动后再生成新的配置填入
      - DB_HOST=mariadb
      - DB_PORT=3306
      - DB_DATABASE=bookstack # 替换为你所需的名字,需要调整的话要和下方mariadb的MYSQL_DATABASE保持一致
      - DB_USERNAME=bookstack # 替换为你所需的名字,但需要和下方mariadb的MYSQL_USER保持一致
      - DB_PASSWORD=bookstack8432 # 替换为你所需的密码,但需要和下方mariadb的MYSQL_PASSWORD保持一致
    volumes:
      - ./bookstack_app_data:/config
    ports:
      - 6876:80
    restart: unless-stopped

  mariadb:
    image: lscr.io/linuxserver/mariadb:11.4.4
    container_name: mariadb
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC  # 根据需求调整时区,默认为UTC+0,需要和上方bookstack的TZ保持一致
      - MYSQL_ROOT_PASSWORD=mysupersecretrootpassword # 替换你自己的密码
      - MYSQL_DATABASE=bookstack  # 和上方bookstack的DB_DATABASE保持一致
      - MYSQL_USER=bookstack  # 和上方bookstack的DB_USERNAME保持一致
      - MYSQL_PASSWORD=bookstack8432  # 和上方bookstack的DB_PASSWORD保持一致
    volumes:
      - ./bookstack_db_data:/config

    restart: unless-stopped

重启docker容器

image.png

检查Bookstack是否成功运行

命令行中输入通过curl访问一下你的url,查看内容是有出现login字样(APP_URL),如有则表示成功
image.png

创建站点

在宝塔面板中的PHP项目添加一个站点,域名填写你服务器的公网ip,PHP版本选择静态
image.png

反向代理

使用这种方式启动的Bookstack是运行在容器网络内,需要对其进行反向代理,供外部访问;

创建成功后,对你刚建立的站点点击:设置/反向代理/添加反向代理
代理名称随意,目标url填入docker-compose.yml配置文件中的APP_URL,发送域名保持默认
image.png

服务器防火墙配置

到腾讯云面板检查服务器是否存在6876的防火墙规则,如无,则需要创建一个

下图为小程序配置,路径为:控制台/轻量应用服务器/{你的服务器名}/防火墙

图片.png

初始化登录

Bookstack教程中提供初始管理员账号密码,官网地址:Bookstack

账号:admin@admin.com

密码:password

图片.png

登录成功

注:登录成功后建议马上调整管理员账号密码。

现在,你可以使用你的Bookstack来搭建个人知识库啦

图片.png
图片.png

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐