引言
在信息爆炸的时代,如何高效地整理个人知识、团队文档,成为不少人的痛点。BookStack 是一款开源的、自托管的 wiki 知识库系统,界面简洁、支持 Markdown 编辑、权限管理完善,非常适合作为个人或团队的文档中心。
飞牛 NAS(fnOS)基于 Linux 内核,自带 Docker 支持,部署 BookStack 非常方便。本文将手把手教你如何在飞牛 NAS 上使用 Docker Compose 部署 BookStack,并配置 Nginx 反向代理实现域名访问。
环境准备
- 飞牛 NAS 已安装并正常运行(系统版本建议最新)
- 已开启 SSH 或直接在飞牛 NAS 的“应用中心”安装“文件管理器”和“终端”
- 已安装 Docker 和 Docker Compose(飞牛 NAS 默认已集成 Docker,Compose 可通过命令安装)
- 一个可用的域名(可选,但推荐用于外网访问)
- 稍懂 Linux 基础命令
第一步:创建 BookStack 数据目录
在飞牛 NAS 的共享文件夹(例如 /vol1/1000/docker)下创建 BookStack 的专用文件夹。
mkdir -p /vol1/1000/docker/bookstack
cd /vol1/1000/docker/bookstack
建议将数据与系统分离,方便备份和迁移。我们将在该目录下放置 docker-compose.yml 和后续的配置文件。
第二步:编写 Docker Compose 配置
在 bookstack 目录下新建 docker-compose.yml 文件,内容如下:
version: '3'
services:
bookstack:
image: lscr.io/linuxserver/bookstack:latest
container_name: bookstack
environment:
- PUID=1000
- PGID=1000
- APP_URL=http://你的域名或IP:6875
- DB_HOST=bookstack_db
- DB_PORT=3306
- DB_USER=bookstack
- DB_PASS=你的数据库密码
- DB_DATABASE=bookstack
volumes:
- ./data:/config
ports:
- 6875:80
restart: unless-stopped
depends_on:
- bookstack_db
bookstack_db:
image: lscr.io/linuxserver/mariadb:latest
container_name: bookstack_db
environment:
- PUID=1000
- PGID=1000
- MYSQL_ROOT_PASSWORD=你的数据库root密码
- TZ=Asia/Shanghai
- MYSQL_DATABASE=bookstack
- MYSQL_USER=bookstack
- MYSQL_PASSWORD=你的数据库密码
volumes:
- ./db_data:/config
restart: unless-stopped
几点说明:
- APP_URL 填写你最终访问 BookStack 的地址。如果使用 IP+端口,就写 http://192.168.1.100:6875;如果使用域名,就写 https://wiki.yourdomain.com。
- PUID 和 PGID 通常为 1000(飞牛 NAS 默认用户),你可以通过 id 命令查看。
- 数据库密码请替换为强密码,并确保两个 service 中的密码一致。
- 端口 6875 可以修改为你喜欢的端口,只要不冲突。
第三步:启动容器
在 bookstack 目录下执行:
docker-compose up -d
等待镜像拉取和容器启动。首次启动会下载 BookStack 和 MariaDB 镜像,时间取决于网络。
启动后,访问 http://你的飞牛IP:6875,应该能看到 BookStack 的登录页面。
默认管理员账号:[email protected],密码:password。登录后请立即修改密码。
第四步:配置反向代理(可选但重要)
直接使用 IP+端口访问虽然可用,但不安全也不美观。推荐使用 Nginx Proxy Manager(NPM)或飞牛自带的“反向代理”功能(如果有)。
如果你使用飞牛 NAS 的“应用中心”安装了 Nginx Proxy Manager,可以这样配置:
- 登录 NPM 后台(默认端口 81)。
- 添加 Proxy Host:
- Domain Names:填写你的域名,例如
wiki.yourdomain.com
- Scheme:http
- Forward IP:你的飞牛 NAS 内网 IP
- Forward Port:6875
- 勾选 Block Common Exploits
- 在 SSL 标签下,申请 Let's Encrypt 证书并开启强制 HTTPS。
完成后,就可以通过 https://wiki.yourdomain.com 安全地访问 BookStack 了。
如果没有 NPM,也可以直接在飞牛 NAS 的“网络设置”中配置端口转发,但注意安全性。
第五步:初始化 BookStack 设置
登录 BookStack 后台后,可以开始个性化配置。
进入 设置 -> 系统设置:
- 修改站点名称、时区(Asia/Shanghai)
- 配置邮件服务(用于密码找回等,可选)
- 设置用户注册策略(如果只自己用,建议关闭开放注册)
BookStack 默认支持 Markdown 编辑,也支持代码高亮、图片拖拽上传等功能,非常顺手。
第六步:备份与迁移
数据无价,建议定期备份 bookstack/data 和 bookstack/db_data 两个目录。
备份命令示例:
tar -czf bookstack_backup_$(date +%Y%m%d).tar.gz /vol1/1000/docker/bookstack/data /vol1/1000/docker/bookstack/db_data
恢复时,只需将备份解压回原目录,然后重新 docker-compose up -d 即可。
常见问题
Q:启动后页面一直加载或报数据库连接错误?
检查 docker-compose.yml 中的数据库密码是否一致,以及 DB_HOST 是否写对了 service 名称 bookstack_db。可以查看容器日志排查:
docker logs bookstack
docker logs bookstack_db
Q:如何修改默认端口?
修改 docker-compose.yml 中 ports 部分的 6875:80 为 你想要的端口:80,然后 docker-compose up -d 重建容器。
Q:BookStack 更新怎么办?
进入 bookstack 目录,执行:
docker-compose pull
docker-compose up -d
即可拉取最新镜像并重启容器,数据不会丢失。
总结
通过 Docker Compose,我们在飞牛 NAS 上快速部署了 BookStack 个人知识库系统。整个过程仅需编写一个配置文件、运行两条命令,之后就能拥有一个功能完备、美观易用的 wiki 平台。无论是整理技术笔记、搭建团队文档,还是记录生活灵感,BookStack 都能胜任。配合飞牛 NAS 的稳定存储和定时备份,你的知识资产将安全常驻。