Docker 玩法

飞牛NAS部署 BookStack:个人Wiki知识库

引言

在信息爆炸的时代,如何高效地整理个人知识、团队文档,成为不少人的痛点。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。 - PUIDPGID 通常为 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,可以这样配置:

  1. 登录 NPM 后台(默认端口 81)。
  2. 添加 Proxy Host:
  3. Domain Names:填写你的域名,例如 wiki.yourdomain.com
  4. Scheme:http
  5. Forward IP:你的飞牛 NAS 内网 IP
  6. Forward Port:6875
  7. 勾选 Block Common Exploits
  8. 在 SSL 标签下,申请 Let's Encrypt 证书并开启强制 HTTPS。

完成后,就可以通过 https://wiki.yourdomain.com 安全地访问 BookStack 了。

如果没有 NPM,也可以直接在飞牛 NAS 的“网络设置”中配置端口转发,但注意安全性。

第五步:初始化 BookStack 设置

登录 BookStack 后台后,可以开始个性化配置。

进入 设置 -> 系统设置: - 修改站点名称、时区(Asia/Shanghai) - 配置邮件服务(用于密码找回等,可选) - 设置用户注册策略(如果只自己用,建议关闭开放注册)

BookStack 默认支持 Markdown 编辑,也支持代码高亮、图片拖拽上传等功能,非常顺手。

第六步:备份与迁移

数据无价,建议定期备份 bookstack/databookstack/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 的稳定存储和定时备份,你的知识资产将安全常驻。

💬 评论区
leave a comment

no comments yet