チームのドキュメントがだめになる道はたいてい 2 つです。誰も検索できないチャットのスレッドに散らばるか、使いにくすぎて誰も更新しない Wiki に埋もれるか。BookStack は、実際に使ってもらえる珍しいセルフホストの Wiki です。内容は棚、本、章、ページに収まり、誰でも研修なしで理解できる構造になっています。しかもサーバーはほとんど要りません。
BookStack を選ぶ理由
- わかりやすい構造。 ページの平らな山ではなく、本と章。
- 誰も怖がらない編集画面。 既定は WYSIWYG エディターで、好きな人は 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 でログインします。リンクを共有する前に、メールアドレスとパスワードをすぐ変更してください。ほかのメンバーには個別のアカウントを用意するか、ID プロバイダー経由でログインしてもらいます。
バックアップ
守るべきものは 2 つ、データベースと ./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 サーバーを並べるのがおすすめです。
コメント
まだコメントはありません。最初になりましょう。