团队文档通常死于两种方式之一:散落在没人能搜索的聊天记录里,或者埋在一个难用到没人愿意更新的 wiki 里。BookStack 是少有的、大家真会用起来的自托管 wiki。内容按书架、书、章节和页面组织——这种结构不用培训谁都懂。而且它几乎不怎么占服务器。
为什么选 BookStack
- 结构一目了然。 用书和章节,而不是一堆平铺的页面。
- 编辑不吓人。 默认是所见即所得编辑器,喜欢 Markdown 的也能用。
- 正经的权限控制。 按书架、书或页面分配角色——人事文件不会让外包人员看到。
- 公司统一登录。 内置 LDAP、SAML2 和 OpenID Connect。
- 数据归你。 所有内容都在一个 MariaDB 数据库和服务器上的一个文件夹里。
它不是万能的。需要跟着代码一起改的开发文档,应该放在代码仓库里,而不是 wiki 里。
需要什么配置
BookStack 很轻量。对大多数团队来说,Micro-IP——1 vCPU、2 GB、每月 $10——绰绰有余。有了独立 IP,同事们才能在你的域名上通过 HTTPS 访问它。磁盘增长来自上传的截图和 PDF,而不是页面数量。
用 Docker Compose 安装
我们使用广泛采用的 LinuxServer.io 镜像。先生成一个应用密钥:
docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey
复制它输出的 base64:... 值。然后创建 docker-compose.yml:
services:
bookstack:
image: lscr.io/linuxserver/bookstack:latest
environment:
- PUID=1000
- PGID=1000
- APP_URL=https://wiki.example.com
- APP_KEY=base64:paste-your-key-here
- DB_HOST=db
- DB_PORT=3306
- DB_DATABASE=bookstack
- DB_USERNAME=bookstack
- DB_PASSWORD=change-me
volumes:
- ./bookstack:/config
ports:
- 127.0.0.1:6875:80
depends_on:
- db
restart: unless-stopped
db:
image: lscr.io/linuxserver/mariadb:latest
environment:
- PUID=1000
- PGID=1000
- MYSQL_ROOT_PASSWORD=change-me-too
- MYSQL_DATABASE=bookstack
- MYSQL_USER=bookstack
- MYSQL_PASSWORD=change-me
volumes:
- ./db:/config
restart: unless-stopped
docker compose up -d
docker compose logs -f bookstack
APP_URL 必须和大家实际使用的地址一致,包括 https://。写错的话,图片和链接会以奇怪的方式失效。更多 Compose 内容见我们的部署栈指南。
HTTPS 与首次登录
把一个子域名解析到服务器(方法),在 127.0.0.1:6875 前面放上 nginx,再用 certbot 加上证书——反向代理指南会一步步带你完成。
然后用默认账号登录:admin@admin.com / password。在分享链接之前,立刻修改邮箱和密码。其他人各自开账号,或者通过你们的身份提供商登录。
备份
需要保护的有两样:数据库,以及 ./bookstack 里的上传文件。像这样的夜间任务可以搞定数据库:
docker compose exec -T db mysqldump -u bookstack -pchange-me bookstack > /var/backups/bookstack.sql
然后把 /var/backups 和 compose 文件夹备份到异地——这正是我们的 restic 指南所做的。Managed Backups 还能在此之上加上整台服务器的每日还原点。
日常维护
更新只需 docker compose pull && docker compose up -d。BookStack 启动时会自动运行数据库迁移。大版本升级前读一下发布说明;它们简短又清楚。
如果团队还想要一个放工单和代码的地方,在同类套餐上再跑一个自托管的 Git 服务器,和它搭配得很好。
评论
暂无评论。来做第一个吧。