ghcr.io/linuxserver/bookstack

ghcr.io/linuxserver/bookstack:v26.05.4-ls281

ghcr.iolinux/amd64v26.05.4-ls281大小: 108.80 MB更新于 2026年9月7日
让 AI 帮你使用轩辕镜像?

如果你使用 DeepSeek元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。

只需在 AI 对话中先发送下面这句话即可:

请先完整阅读并严格遵守以下文档中的全部规则与要求:

https://xuanyuan.cloud/agents.md

在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。

查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AIDeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。

https://linuxserver.io 团队为您带来另一个容器版本,其特点包括:

  • 定期且及时的应用更新
  • 简单的用户映射(PGID、PUID)
  • 带有 s6 overlay 的自定义基础镜像
  • 每周基础 OS 更新,整个 LinuxServer.io 生态系统共享通用层,以最小化空间占用、停机时间和带宽
  • 定期安全更新

您可以通过以下渠道找到我们:

  • https://blog.linuxserver.io - 关于如何使用我们的容器的所有内容,包括操作指南、观点等!
  • https://linuxserver.io/*** - 与社区和团队进行实时支持/聊天。
  • https://discourse.linuxserver.io - 在我们的社区论坛上发帖。
  • https://github.com/linuxserver - 查看我们所有仓库的源代码。
  • https://opencollective.com/linuxserver - 请考虑通过***或为我们的预算做出贡献来帮助我们

https://github.com/linuxserver/docker-bookstack

https://codeberg.org/bookstack/bookstack 是一个免费开源的 Wiki,旨在创建美观的文档。它配备了一个简单但功能强大的 WYSIWYG 编辑器,使团队能够轻松创建详细且有用的文档。

BookStack 由 SQL 提供支持,并为喜欢 Markdown 的用户提供了 Markdown 编辑器,旨在让文档编写成为一种乐趣而非负担。

有关 BookStack 的更多信息,请访问其网站:[***]

支持的架构

我们利用 docker manifest 实现多平台支持。有关更多信息,请参阅 docker 的https://distribution.github.io/distribution/spec/manifest-v2-2/#manifest-list文档和我们的https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/。

只需拉取 lscr.io/linuxserver/bookstack:latest 即可获取适合您架构的正确镜像,但您也可以通过标签拉取特定架构的镜像。

此镜像支持的架构如下:

架构可用标签
x86-64amd64-
arm64arm64v8-

应用设置

默认用户名为 ,密码为 password,可通过 [] :6875 访问容器。

此应用依赖于 MariaDB 数据库,可以是您已有的数据库或新数据库。如果您还没有 MariaDB,我们提供了一个镜像:https://github.com/linuxserver/docker-mariadb

如果您打算在子文件夹反向代理(如我们的 SWAG 容器或 Traefik)后使用此应用,您需要确保 APP_URL 环境变量设置为您的外部域名,否则应用将无法正常工作。

BookStack 的文档可在 [***] 找到。

BookStack 文件和目录路径

此容器确保 BookStack 的某些应用文件和文件夹(如用户文件上传文件夹)保留在 /config 文件夹中,以便当 /config 容器路径作为卷挂载时,这些文件和文件夹是持久且可访问的。在遵循 BookStack 文档时,您可能需要知道这些文件和文件夹相对于非容器 BookStack 安装的使用方式。

以下是容器 /config 路径与 BookStack 安装目录内相对路径的映射:

  • 容器内 /config 路径 => BookStack 相对路径
  • /config/www/.env => .env
  • /config/log/bookstack/laravel.log => storage/logs/laravel.log
  • /config/backups/ => storage/backups/
  • /config/www/files/ => storage/uploads/files/
  • /config/www/images/ => storage/uploads/images/
  • /config/www/themes/ => themes/
  • /config/www/uploads/ => public/uploads/

修改 APP_URL

如果在初始安装后修改 APP_URL,您应从主机终端运行以下命令来更新数据库中的 URL 条目:

docker exec -it bookstack php /app/www/artisan bookstack:update-url ${OLD_URL} ${NEW_URL}

高级用户(完全控制 .env 文件)

如果您希望使用 BookStack 的额外功能(如电子邮件、LDAP 等),您需要设置其他环境变量或根据 BookStack 文档创建自己的 .env 文件。

容器会将一个示例 .env 文件复制到主机系统的 /config/www/.env,供您使用。

只读操作

此镜像可以在只读容器文件系统下运行。有关详细信息,请https://docs.linuxserver.io/misc/read-only/

注意事项

  • /tmp 必须挂载为 tmpfs

使用方法

为帮助您开始使用此镜像创建容器,您可以使用 docker-compose 或 docker cli。

[!NOTE] 除非参数标记为“可选”,否则均为必填项,必须提供值。

docker-compose(推荐,https://docs.linuxserver.io/general/docker-compose

---
services:
  bookstack:
    image: lscr.io/linuxserver/bookstack:latest
    container_name: bookstack
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      - APP_URL=
      - APP_KEY=
      - DB_HOST=
      - DB_PORT=3306
      - DB_USERNAME=
      - DB_PASSWORD=
      - DB_DATABASE=
      - QUEUE_CONNECTION= #optional
    volumes:
      - /path/to/bookstack/config:/config
    ports:
      - 6875:80
    restart: unless-stopped

docker cli(https://docs.docker.com/engine/reference/commandline/cli/

docker run -d \
  --name=bookstack \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Etc/UTC \
  -e APP_URL= \
  -e APP_KEY= \
  -e DB_HOST= \
  -e DB_PORT=3306 \
  -e DB_USERNAME= \
  -e DB_PASSWORD= \
  -e DB_DATABASE= \
  -e QUEUE_CONNECTION= `#optional` \
  -p 6875:80 \
  -v /path/to/bookstack/config:/config \
  --restart unless-stopped \
  lscr.io/linuxserver/bookstack:latest

参数

容器通过运行时传递的参数进行配置(如上所示)。这些参数用冒号分隔,表示 <主机>:<容器>。例如,-p 8080:80 会将容器内的端口 80 暴露出来,可通过主机 IP 的端口 8080 访问。

ParameterFunction
-p 6875:80http/s web interface.
-e PUID=1000for UserID - see below for explanation
-e PGID=1000for GroupID - see below for explanation
-e TZ=Etc/UTCspecify a timezone to use, see this list.
-e APP_URL=The protocol, IP/URL, and port that your application will be accessed on (ie. http://192.168.1.1:6875 or https://bookstack.mydomain.com
-e APP_KEY=Session encryption key. You will need to generate this with docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey
-e DB_HOST=The database instance hostname
-e DB_PORT=3306Database port
-e DB_USERNAME=Database user
-e DB_PASSWORD=Database password (minimum 4 characters & non-alphanumeric passwords must be properly escaped.)
-e DB_DATABASE=Database name
-e QUEUE_CONNECTION=Set to database to enable async actions like sending email or triggering webhooks. See documentation.
-v /configPersistent config files
--read-only=trueRun container with a read-only filesystem. Please https://docs.linuxserver.io/misc/read-only/.

从文件设置环境变量(Docker secrets)

您可以通过使用特殊前缀 FILE__ 从文件中设置任何环境变量。

例如:

-e FILE__MYVAR=/run/secrets/mysecretvariable

这将根据 /run/secrets/mysecretvariable 文件的内容设置环境变量 MYVAR

运行应用程序的Umask设置

对于我们所有的镜像,我们提供了使用可选的 -e UMASK=022 设置来覆盖容器内启动的服务的默认umask设置的能力。
请记住,umask 不是 chmod,它根据其值减去权限,而不是添加权限。在寻求支持之前,请在此处查阅相关资料。

用户/组标识符

使用卷(-v 标志)时,主机操作系统和容器之间可能会出现权限问题,我们通过允许您指定用户 PUID 和组 PGID 来避免此问题。

确保主机上的任何卷目录都归您指定的同一用户所有,这样任何权限问题都会神奇地消失。

在这个例子中 PUID=1000PGID=1000,要找到您的PUID和PGID,请使用 id your_user 命令,如下所示:

id your_user

示例输出:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)

Docker Mods

我们发布了各种 https://github.com/linuxserver/docker-mods,以在容器内启用额外功能。可用于此镜像的Mod列表(如有)以及可应用于我们任何镜像的通用Mod可通过上方的动态徽章访问。

支持信息

  • 容器运行时的Shell访问:
docker exec -it bookstack /bin/bash
  • 实时监控容器日志:
docker logs -f bookstack
  • 容器版本号:
docker inspect -f '{{ index .Config.Labels "build_version" }}' bookstack
  • 镜像版本号:
docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/bookstack:latest

更新信息

我们的大多数镜像是静态的、版本化的,需要更新镜像并重新创建容器才能更新内部的应用程序。除某些例外情况(在相关的readme.md中注明)外,我们不建议也不支持在容器内更新应用程序。请查阅上方的应用程序设置部分,了解是否推荐对此镜像进行此类操作。

以下是更新容器的说明:

通过Docker Compose

  • 更新镜像:
  • 所有镜像:
docker-compose pull
  • 单个镜像:
docker-compose pull bookstack
  • 更新容器:
  • 所有容器:
docker-compose up -d
  • 单个容器:
docker-compose up -d bookstack
  • 您还可以删除旧的悬空镜像:
docker image prune

通过Docker Run

  • 更新镜像:
docker pull lscr.io/linuxserver/bookstack:latest
  • 停止运行中的容器:
docker stop bookstack
  • 删除容器:
docker rm bookstack
  • 使用上述相同的docker run参数重新创建新容器(如果正确映射到主机文件夹,您的 /config 文件夹和设置将被保留)
  • 您还可以删除旧的悬空镜像:
docker image prune

镜像更新通知 - Diun(Docker镜像更新通知器)

[!TIP] 我们推荐使用 https://crazymax.dev/diun/ 进行更新通知。不推荐也不支持使用其他自动无人值守更新容器的工具。

本地构建

如果您想出于开发目的或仅为了自定义逻辑而对这些镜像进行本地修改:

git clone https://github.com/linuxserver/docker-bookstack.git
cd docker-bookstack
docker build \
--no-cache \
--pull \
-t lscr.io/linuxserver/bookstack:latest .

使用 lscr.io/linuxserver/qemu-static 可以在x86_64硬件上构建ARM变体,反之亦然:

docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset

注册后,您可以使用 -f Dockerfile.aarch64 指定要使用的Dockerfile。

Versions

  • 05.08.26: - 以 PUID/PGID 管理的 abc 用户身份运行异步队列工作器。
  • 05.07.26: - 基于 Alpine 3.24 重新构建。
  • 29.04.26: - 切换为从 https://codeberg.org/bookstack/bookstack 拉取发布版本。
  • 28.12.25: - 基于 Alpine 3.23 重新构建。
  • 05.07.25: - 基于 Alpine 3.22 重新构建。
  • 04.01.25: - 添加 php-opcache。
  • 17.12.24: - 基于 Alpine 3.21 重新构建。
  • 11.10.24: - 优先使用环境配置而非 .env 文件配置。
  • 06.09.24: - 添加 php-exif 以读取图像 EXIF 数据。
  • 27.05.24: - 基于 Alpine 3.20 重新构建。> [!IMPORTANT] 现有用户应更新其 nginx 配置以避免 http2 弃用警告。
  • 25.01.24: -

[!IMPORTANT] 现有用户应更新:site-confs/default.conf - 清理默认站点配置。

  • 23.12.23: - 基于 Alpine 3.19 和 php 8.3 重新构建。
  • 31.10.23: - 进一步清理 sed 替换。
  • 07.06.23: - 添加 mariadb-client 以支持 bookstack-system-cli。
  • 25.05.23: - 基于 Alpine 3.18 重新构建,弃用 armhf。
  • 13.04.23: - 将 ssl.conf 包含移动到 default.conf。
  • 01.03.23: - 添加 php iconv。
  • 19.01.23: - 基于 Alpine 3.17 和 php8.1 重新构建。
  • 16.01.23: - 将 .env 值用引号包裹。
  • 05.01.23: - 修复数据库密码设置(sed 转义 &)。
  • 21.12.22: - 当环境变量更新时,更新 .env 文件中的数据库信息。
  • 10.10.22: - 移除密码转义逻辑,该逻辑曾导致少数用户出现问题。
  • 20.08.22: - 基于 Alpine 3.15 和 php8 重新构建。重构 nginx 配置(https://info.linuxserver.io/issues/2022-08-20-nginx-base)。
  • 14.03.22: - 添加主题支持的符号链接。
  • 11.07.21: - 基于 Alpine 3.14 重新构建。
  • 12.01.21: - 移除未使用的依赖项(自 0.31.0 版本起)。
  • 17.12.20: - 使 APP_URL 变量成为必填项(上游变更)。
  • 17.09.20: - 基于 Alpine 3.12 重新构建。修复 APP_URL 设置。默认将 php post max 和 upload max 文件大小提升至 100MB。
  • 19.12.19: - 基于 Alpine 3.11 重新构建。
  • 26.07.19: - 使用旧版本的 tidyhtml,等待上游修复。
  • 28.06.19: - 基于 Alpine 3.10 重新构建。
  • 14.06.19: - 添加 wkhtmltopdf 到镜像以支持 PDF 渲染。
  • 20.04.19: - 基于 Alpine 3.9 重新构建,添加 MySQL 初始化逻辑。
  • 22.03.19: - 切换到新的基础镜像,迁移至 arm32v7 标签。
  • 20.01.19: - 添加 php7-curl。
  • 04.11.18: - 添加 php7-ldap。
  • 15.10.18: - 更改高级用户功能。
  • 08.10.18: - 高级模式、符号链接变更、sed 修复、文档更新、添加部分 composer 文件。
  • 23.09.28: - 更新预发布版本。
  • 02.07.18: - 初始发布。

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

用户头像

oldzhang

运维工程师

Linux服务器

5

"Docker访问体验非常流畅,大镜像也能快速完成下载。"

专业版 · 高速稳定拉取镜像
50GB 仅 ¥8/年
高速镜像下载在线技术支持99.95% SLA 保障付费会员免广告