Docker安装BookStack 打造个人知识库

BookStack 是一个强大而优雅的开源知识管理平台,它通过“书架-书籍-章节-页面”的清晰结构,帮助你轻松地构建一个系统化、易于检索的个人知识库。 如果你厌倦了散落在各处的零散文档和笔记,希望拥有一个完全受自己控制、结构井然的知识中心,BookStack 是一个非常理想的选择。

官网地址:https://www.bookstackapp.com/

1.环境准备

确保系统已安装Docker和Docker-compose,若尚未安装,可参考以下步骤操作:

1.1 安装Docker

(1)安装docker。
sudo curl -fsSL https://github.com/tech-shrimp/docker_installer/releases/download/latest/linux.sh| bash -s docker –mirror Aliyun
Docker安装BookStack 打造个人知识库

(2)启动docker。
sudo systemctl start docker
Docker安装BookStack 打造个人知识库

1.2 安装Docker-compose

(1)下载docker-compose文件。
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Docker安装BookStack 打造个人知识库

(2)赋予docker-compose执行权限。
sudo chmod +x /usr/local/bin/docker-compose
Docker安装BookStack 打造个人知识库

2.拉取镜像源

使用docker拉取bookstack的最新镜像。
sudo docker pull linuxserver/bookstack
Docker安装BookStack 打造个人知识库

3.创建并启动容器

(1)建一个目录用于存放BookStack的数据,并且编写 docker-compose.yml 文件来配置BookStack服务。
mkdir bookstack
cd bookstack
vim docker-compose.yml
Docker安装BookStack 打造个人知识库

(2)在docker-compose.yml 文件中写入BookStack服务。

# 声明 Compose 版本(适配主流 Docker 版本)
version: '3.8'

# 所有服务嵌套在 services 下(必须缩进2个空格)
services:
  # bookstack 服务(缩进2个空格,与services对齐层级)
  bookstack:
    image: lscr.io/linuxserver/bookstack:version-v25.02
    container_name: bookstack
    environment:  # 环境变量(缩进4个空格)
      - PUID=1000  # 列表形式,以-开头,缩进6个空格
      - PGID=1000
      - TZ=Etc/UTC  # 时区与mariadb保持一致
      - APP_URL=http://127.0.0.1:6876  # 修改为你自己对外访问的IP地址
      # 先注释下面這一行的APP_KEY,启动后生成再填入!启动后生成再填入!启动后生成再填入!
      # - APP_KEY=base64:FmsryFy67lD+FopSfMMtS+3SGsloxUQb+yqXGl6XdiM=
      - DB_HOST=mariadb
      - DB_PORT=3306
      - DB_DATABASE=bookstack
      - DB_USERNAME=bookstack
      - DB_PASSWORD=bookstack8432
    volumes:  # 数据卷(缩进4个空格)
      - ./bookstack_app_data:/config  # 列表形式,-开头
    ports:  # 端口映射(缩进4个空格)
      - 6876:80  # 列表形式,-开头
    restart: unless-stopped
    depends_on:  # 依赖mariadb,确保先启动数据库
      - mariadb

  # mariadb 服务(缩进2个空格,与bookstack同级)
  mariadb:
    image: lscr.io/linuxserver/mariadb:11.4.4
    container_name: mariadb
    environment:  # 环境变量(缩进4个空格)
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      - MYSQL_ROOT_PASSWORD=bookstack1234 #设置你的数据库密码
      - MYSQL_DATABASE=bookstack
      - MYSQL_USER=bookstack
      - MYSQL_PASSWORD=bookstack8432
    volumes:  # 数据卷(缩进4个空格)
      - ./bookstack_db_data:/config
    restart: unless-stopped

容器创建完后,必须去掉APP_KEY的注释“#”,必须去掉APP_KEY的注释“#”,必须去掉APP_KEY的注释“#”。

创建完成后用你的ip地址加端口即可访问(本例http://127.0.0.1:6876),如果要用域名,请再配置反向代理即可。

Bookstack教程中提供初始管理员账号密码
账号:admin@admin.com
密码:password

当前bookstack中的图片地址采用的是绝对地址,如果你进行服务器迁移、域名或ip地址更换后,图片的连接地址就失效了,所以需要进数据库进行图片地址的批量替换。

进入数据库容器的命令如下:

# 进入 mariadb 容器
docker exec -it mariadb bash

# 本地 socket 登录(已解决权限问题)
mariadb -u数据库用户名(没有空格经跟-u) -p数据库密码(没有空格经跟-P) bookstack

以下是在 MariaDB [bookstack]> 命令行中逐行执行以下 SQL(覆盖所有旧地址场景):

-- 1. 替换原 IP+端口 为 纯域名(核心)
UPDATE images SET url = REPLACE(url, 'http://你原来的ip或域名:6876', 'http://你迁移后的ip或域名');
UPDATE pages SET html = REPLACE(html, 'http://你原来的ip或域名:6876', 'http://你迁移后的ip或域名');
UPDATE pages SET markdown = REPLACE(markdown, 'http://你原来的ip或域名:6876', 'http://你迁移后的ip或域名');
UPDATE attachments SET url = REPLACE(url, 'http://你原来的ip或域名:6876', 'http://你迁移后的ip或域名');
UPDATE attachments SET download_url = REPLACE(download_url, 'http://你原来的ip或域名:6876', 'http://你迁移后的ip或域名');
UPDATE settings SET value = REPLACE(value, 'http://你原来的ip或域名:6876', 'http://你迁移后的ip或域名');

-- 2. 兜底:移除所有 URL 中残留的 :6876(防止个别漏改)
UPDATE images SET url = REPLACE(url, ':6876', '');
UPDATE pages SET html = REPLACE(html, ':6876', '');
UPDATE pages SET markdown = REPLACE(markdown, ':6876', '');
UPDATE attachments SET url = REPLACE(url, ':6876', '');
UPDATE attachments SET download_url = REPLACE(download_url, ':6876', '');
UPDATE settings SET value = REPLACE(value, ':6876', '');

-- 刷新权限
FLUSH PRIVILEGES;

-- 退出数据库
EXIT;

正常情况按如上命令执行后就可以使用了,如果未生效,可尝试下面的方式清理一下缓存

# 退出 mariadb 容器
exit

# 进入 bookstack 容器清理缓存
docker exec -it bookstack bash -c "
  php artisan cache:clear && 
  php artisan config:clear && 
  php artisan view:clear && 
  php artisan route:clear
"

# 重启 bookstack 确保所有配置生效
docker-compose restart bookstack

原创文章,作者:产品大法师VIP Plus,如若转载,请注明出处:https://www.pmtemple.com/open-source-project/17893/

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年1月15日 下午10:03
下一篇 2024年12月24日 下午8:35

相关推荐

发表回复

登录后才能评论
微信公众号
微信公众号
edgesensor_high 小程序
小程序
分享本页
返回顶部