ghcr.io/linuxserver/bookstack:26.09.1
让 AI 帮你使用轩辕镜像? · 展开查看说明 · 点击收起说明
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这段话即可:
请先阅读并遵守:https://xuanyuan.cloud/agents.md
未读文档前不要生成 pull 命令或排错方案。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
https://linuxserver.io 团队为您带来全新的容器版本,具备以下特性:
- 定期及时的应用程序更新
- 简单易用的用户映射机制(PGID、PUID)
- 搭载 s6 overlay 的自定义基础镜像
- 每周对基础操作系统执行更新,全 LinuxServer.io 生态共享通用层,最大程度减少存储空间占用、停机时间与带宽消耗
- 常规安全更新
您可以通过以下渠道找到我们:
- https://blog.linuxserver.io - 涵盖我们提供的容器的所有实用玩法,包括操作指南、观点分享等丰富内容!
- https://linuxserver.io/*** - 实时支持通道,可与社区及团队直接交流
- https://github.com/orgs/linuxserver/discussions - 前往我们的社区论坛发帖交流
- https://github.com/linuxserver - 查看我们所有仓库的源代码
- https://opencollective.com/linuxserver - 欢迎考虑通过***或参与预算协作的方式支持我们的项目
https://github.com/linuxserver/docker-bookstack
https://codeberg.org/bookstack/bookstack 是一款免费开源的 Wiki 程序,专为制作精美的技术文档设计。它搭载了简单但功能强大的所见即所得(WYSIWYG)编辑器,可让团队轻松创建详尽实用的文档内容。
BookStack 基于 SQL 驱动,同时为偏好纯文本编辑的用户内置了 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-64 | ✅ | amd64- |
| arm64 | ✅ | arm64v8- |
应用程序配置
默认用户名是 admin@admin.com,默认密码为 password,启动容器后可通过 http://<主机地址>:6875 访问服务。
该应用依赖 MariaDB 数据库,您可以使用现有数据库实例,也可以全新部署。如果您尚未准备好数据库镜像,我们提供了官方维护的 MariaDB 容器镜像,获取地址为 https://github.com/linuxserver/docker-mariadb。
如果您计划将该应用部署在子路径反向代理后方,例如搭配我们的 SWAG 容器或 Traefik 使用,请务必将 APP_URL 环境变量设置为您的外部访问域名,否则服务将无法正常工作。
BookStack 的完整官方文档可访问 [***] 获取。
BookStack 文件与目录路径说明
本容器将 BookStack 的部分核心应用文件和文件夹(例如用户上传文件目录)统一存放在 /config 路径下,当您将容器内的 /config 路径绑定为数据卷时,这些数据即可持久化保留且始终可访问。当您参考 BookStack 官方文档操作时,可能需要了解容器内路径与原生非容器化 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 命令行两种方式快速基于本镜像创建容器。
[!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 命令行(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 端口对外访问容器服务。
| 参数 | 说明 |
|---|---|
-p 6875:80 | http/https Web 界面 |
-e PUID=1000 | 用户 ID,详见下文说明 |
-e PGID=1000 | 用户组 ID,详见下文说明 |
-e TZ=Etc/UTC | 指定使用的时区,可查阅时区数据库列表 |
-e APP_URL= | 应用对外提供服务的协议、IP/域名与端口,例如 http://192.168.1.1:6875 或 https://bookstack.mydomain.com |
-e APP_KEY= | 会话加密密钥,需要执行 docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey 生成 |
-e DB_HOST= | 数据库实例主机名 |
-e DB_PORT=3306 | 数据库端口 |
-e DB_USERNAME= | 数据库用户名 |
-e DB_PASSWORD= | 数据库密码(最短 4 位,非字母数字类密码必须正确转义) |
-e DB_DATABASE= | 数据库名称 |
-e QUEUE_CONNECTION= | 设置为 database 即可启用邮件发送、Webhook 触发等异步操作,详见官方文档 |
-v /config | 持久化存储配置文件 |
--read-only=true | 以只读文件系统运行容器,请https://docs.linuxserver.io/misc/read-only/了解详情 |
通过文件传入环境变量(Docker 机密)
你可以使用特殊前缀 FILE__,从文件读取内容来设置任意环境变量。
示例如下:
-e FILE__MYVAR=/run/secrets/mysecretvariable
该配置会将环境变量 MYVAR 的值设置为 /run/secrets/mysecretvariable 文件的内容。
运行应用的 Umask 配置
我们所有镜像都支持通过可选参数 -e UMASK=022 覆盖容器内启动服务的默认 umask 设置。
请注意 umask 不等于 chmod,它的作用是从原有权限值中减去对应权限,不会新增权限。在寻求技术支持前,请先参考 umask ***说明 了解详情。
用户/用户组标识
使用卷(-v 参数)时,宿主机操作系统与容器之间可能出现权限问题,我们提供指定用户 PUID 和用户组 PGID 的功能来规避该问题。
请确保宿主机上所有映射卷目录的所属用户与你指定的用户一致,即可彻底消除权限问题。
以上文的 PUID=1000 和 PGID=1000 为例,你可以使用 id your_user 命令查询自己的用户与用户组 ID,操作如下:
id your_user
输出示例:
uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)
Docker Mods
我们发布了多种 https://github.com/linuxserver/docker-mods,用于为容器扩展额外功能。当前镜像支持的 Mod 列表(如有)以及适用于所有 LinuxServer 镜像的通用 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 Image Update Notifier)
[!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 文件,完成对应架构镜像的构建。
版本更新记录
镜像信息
镜像名称:ghcr.io/linuxserver/bookstack
参考标签:latest
更新日志
- 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 重建镜像。现有用户需更新自身 nginx 配置,避免出现 http2 弃用警告。
- 25.01.24: - 现有用户需更新 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 与 php 8.1 重建镜像。
- 16.01.23: - 为
.env中的所有值添加引号包裹。 - 05.01.23: - 修复数据库密码设置问题(sed 转义
&字符)。 - 21.12.22: - 当环境变量更新时,同步更新 .env 文件中的数据库信息。
- 10.10.22: - 移除密码转义逻辑,该逻辑会导致小部分用户出现使用问题。
- 20.08.22: - 基于 alpine 3.15 与 php 8 重建镜像。重构 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 帖子最大大小与上传最大文件大小提升至 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.18: - 预发布版本更新。
- 02.07.18: - 首次正式发布。
镜像拉取常见问题
功能
错误码
用户好评
来自真实用户的反馈,见证轩辕镜像的优质服务