軽量Wiki「BookStack」を Docker+Nginx で構築する
🔖 はじめに
この記事では、Raspberry Pi 5(Bookworm)上にDockerでBookStackを構築し、Nginxをリバースプロキシとして設定して、http://book.lan からアクセスできるようする方法を紹介します。
BookStackとは
BookStackは、ドキュメントを「本・章・ページ」で整理できるオープンソースのWikiです。
シンプルな画面とWYSIWYG/Markdown対応エディタで、技術メモから社内Wikiまで手軽にまとめられるのが特徴です。

BookStackの編集画面
Wiki.jsとの違い
BookStackと似たような立ち位置で、Wiki.jsというオープンソースもあります。
おおまかな違いは次のとおりです。
-
構造とUI
- BookStack:本棚型の階層構造で、読み物として整理しやすい
- Wiki.js:ページ中心+タグなどで柔軟に整理
-
思想
- BookStack:シンプル重視、迷わず使える
- Wiki.js:多機能・高い拡張性(Git連携など)
筆者も最初にWiki.jsを試しましたが、画像の貼り付けや管理がやや煩雑で、
画像を気軽に扱いたい今回の用途には合わず、採用を見送りました。
そこで本記事では、軽量で扱いやすいBookStackを、Raspberry Pi上にDockerで構築していきます。
🔖 Docker 導入
1. インストール
sudo apt update
sudo apt install -y docker.io docker-compose
2. サービスの自動起動設定
sudo systemctl enable --now docker
状態確認:
sudo systemctl status docker --no-pager
3. root権限での動作確認
$ sudo docker --version
Docker version 20.10.24+dfsg1, build 297e128
$ sudo docker-compose --version
docker-compose version 1.29.2, build unknown
4. dockerグループに現ユーザーを追加
sudo usermod -aG docker $USER
SSHをいったん切断して再接続後に動作確認(動けばOK):
docker ps
5. 動作テスト(hello-world、sudo無し)
docker run --rm hello-world
🔖 BookStack コンテナの作成
使用するdockerイメージ
- bookstack 25.12.1
- mariadb 11.4.8
1. プロジェクトディレクトリの作成
mkdir -p ~/bookstack
cd ~/bookstack
2. APP_KEYの生成
docker-compose.yml の APP_KEY に記載するアプリケーションキーを生成します。
下記コマンドを実行して、表示された base64:xxxxxxxxxx をメモしておいてください。
docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey
3. docker-compose.yml を作成
nano docker-compose.yml
注意事項:
- APP_URLにはアクセス先となるアプリケーションURLを記載する
- APP_KEYには2で作ったAPP_KEYを入力
- your_strong_password1, 2は自分でパスワードを作って置き換える
- bookstackのDB_PASSWORDと、mariadbのMYSQL_PASSWORDは同じ値にする
内容:
version: "3"
services:
bookstack:
image: lscr.io/linuxserver/bookstack:25.12.1
container_name: bookstack
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Tokyo
- APP_URL=http://book.lan
- APP_KEY=base64:xxxxxxxxxx
- DB_HOST=mariadb
- DB_PORT=3306
- DB_USERNAME=bookstack
- DB_PASSWORD=your_strong_password1
- DB_DATABASE=bookstack
- STORAGE_TYPE=local_secure_restricted
ports:
- 6875:80
depends_on:
- mariadb
restart: unless-stopped
volumes:
- ./bookstack:/config
mariadb:
image: lscr.io/linuxserver/mariadb:11.4.8
container_name: mariadb
environment:
- PUID=1000
- PGID=1000
- MYSQL_ROOT_PASSWORD=your_strong_password2
- MYSQL_DATABASE=bookstack
- MYSQL_USER=bookstack
- MYSQL_PASSWORD=your_strong_password1
volumes:
- ./db:/config
restart: unless-stopped
4. 起動
docker-compose up -d
docker-compose ps
🔖 Nginx 設定
1. 方針
ここでは hosts ファイルを編集して、サブドメイン方式(http://book.lan/)でアクセスできるようにします。
2. hosts エントリに追加(Windows)
Windows の hosts ファイルは以下にあります(編集には管理者権限が必要です)。
C:\Windows\System32\drivers\etc\hosts
hosts ファイルに以下を追記します。
# book.lan の名前解決
192.168.xx.xx book.lan
-
book.lanは任意の名前でOKです -
192.168.xx.xxは BookStack を動かしているサーバ(PC)のIPアドレスにします(固定IP必須)
3. Nginx に bookstack 用の設定を追加
sudo nano /etc/nginx/sites-available/book.conf
設定内容:
server {
listen 80;
server_name book.lan;
# Nginx側のアップロード上限
client_max_body_size 50m;
location / {
proxy_pass http://127.0.0.1:6875;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket / Upgrade 対応
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
/etc/nginx/nginx.conf(http {} の中)に追記:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
4. 設定を反映
# シンボリックリンクの作成(既に同名リンクがある場合は上書き)
sudo ln -sf /etc/nginx/sites-available/book.conf /etc/nginx/sites-enabled/book.conf
sudo nginx -t
sudo systemctl reload nginx
5. アクセス
ブラウザで http://book.lan/ にアクセスしてログイン画面が表示されればOKです。

6. ログイン
ログインで使用する初期メールアドレスとパスワードは以下のようになっています。
- メールアドレス:
admin@admin.com - パスワード:
password
ログイン後、パスワードを変更するなり、管理者ユーザーを追加して初期ユーザーアカウントを削除するなり、適宜設定を行って安全に運用してください。
7. データのバックアップ(参考)
BookStackのデータは、アプリ+DBの2つのボリュームを保護することが大事です。
-
./bookstack… BookStack本体の設定・アップロードファイルなど -
./db… MariaDBのデータ(ページ内容・ユーザー情報など)
この2つを定期的にどこかへコピーしておけば、基本的には復元できるようになります。
7-1. 手動バックアップ例
コンテナを一時停止して、ディレクトリを丸ごとコピーします。
cd ~/bookstack
# 1. コンテナ停止
docker-compose down
# 2. バックアップ先ディレクトリ(例)
BACKUP_DIR=~/backup/bookstack-$(date +%F)
mkdir -p "$BACKUP_DIR"
# 3. データコピー
cp -a ./bookstack "$BACKUP_DIR"/
cp -a ./db "$BACKUP_DIR"/
# 4. コンテナ再起動
docker-compose up -d
バックアップフォルダ(~/backup/bookstack-YYYY-MM-DD)を
外付けディスクやNASに移しておくと、トラブル時も安心です。
7-2. 復元のイメージ
Raspberry Pi を入れ替えたり、OSを入れ直した場合は:
- 新しい環境に Docker と docker-compose を入れる
- 同じ
docker-compose.ymlを設置する - そこへバックアップしておいた
bookstack/とdb/を上書きコピー -
docker-compose up -dで起動
これで、バックアップ時点の状態にほぼ戻せるはずです。
🔖 おわりに
Raspberry Pi 5 上に Docker+Nginx で BookStack を立てるところまでをまとめました。
いったんここまでできれば、「どこからでも同じURLで開ける自分専用Wiki」が手に入ります。
あとは実際に、
- 日々の作業メモや手順書
- サーバ設定の記録
- 調べごとのまとめ
などを少しずつ書き溜めていくだけで、自分だけのナレッジベースになっていきます。
ここまで読んで、同じように「軽いWiki環境がほしいな」と感じた方の参考になればうれしいです。
それでは今回はこの辺で。
また違う記事でお会いしましょう😊
Discussion