Amazonのアソシエイトとして、ラズパイダ(raspida.com)は適格販売により収入を得ています。詳しくは当サイトの プライバシーポリシーをご覧ください。

bookstackは、WikiにもあるようにOSS(オープンソースソフトウェア)でラズパイにも導入できて、日本語もサポートしているナレッジベースです。

BookStackは、シンプルで自己ホスト型で使いやすいプラットフォームを目的としたフリーでオープンソースのWikiソフトウェアです。PHPフレームワークであるLaravelに基づいて、BookStackはMITライセンスの下でリリースされています。本のアイデアを使用してページを整理し、情報を保存します。

https://en.wikipedia.org/wiki/BookStack

これ、ラズパイのDockerで構築するのに、とてもシンプルで分かりやすいと思いました。Dockerを初めて触るにはちょうど良いじゃないかな。しかも実用的です。

Pi 5では勿体ないけど、Pi 4、microSDカード起動なら惜しくないかな。

bookstackで私が気に入っているのは、記述するのにMarkdown方式も選べる点です。(WYSIWYGとMarkdownエディタ)Markdownエディタはライブプレビューにも対応しているのが嬉しい。

ある意味古くさい(?)レイアウトだから馴染めるというのもあります。先進的なUIはツラいお年頃だからです。

実用的でもあり、尚且つラズパイでも快適に動作し、導入もそれほど難しくないため、Dockerの練習用に是非一度トライしてみてください。

動作画面

サンプルとして、適当に作成してみました。

本棚、ブック、チャプターといった分け方になっていて、検索機能も充分です。

どう運営させるのが良いのか試行錯誤しています。ローカル環境で個人利用なら本棚は1つでもいいかも。

普段、obsidianでメモ類は管理しています。それだけでも満足なんですけど、あくまでも個人的な内容だけなので、外部からではなく、ローカル内でよく閲覧したい情報もあります。

サンプルとした料理レシピのようなタイプです。

ユーザーを追加すれば、複数人でも編集できます。データ自体も軽いので、スマホやタブレットでも負担は少ない。それに、スマホでのUIも悪くないですよ。

どういう風に使うか試行錯誤中です。

Dockerのインストール

Raspberry Pi OSは、bookwormのlite版 (64bit)でmicroSDカードで起動にしました。SSDドライブ起動も試しましたが、扱っているデータが相当数のボリュームでなければ、microSDカードの大容量で足りるかと思います。

はじめにDockerをインストールしていきます。

記事執筆時点のRaspberry Piだと次の方法が簡単です。適当な場所で実行していきます。この記事ではユーザールートで説明しています。

Raspberry Pi でDockerのインストール方法

適当な場所に移動し、以下スクリプトをダウンロードして実行します。

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh ./get-docker.sh

それぞれのバージョンを調べておく。

docker -v
Docker version 25.0.4, build 1a576c5

docker compose version
Docker Compose version v2.24.7

最低限、Docker自体はこれでOKです。

次はラズパイで設定しているユーザーをdockerグループに割り当てる作業です。本来はdocker専用のユーザーを作成する方が良いのでしょうが、複雑になるのでいつも既存ユーザーを割り当ててます。

sudo usermod -aG docker raspida

再起動後、dockerコマンドがsudoなしでも実行できるようになります。

Raspberry Piでも使う主だったユーザー系のコマンドはこんな感じ。

whoami
users
groups
id -u raspida
id -g raspida
id raspida

idコマンドにユーザー名だけで、id番号(uid)が1000、グループ番号(gid)が1000と分かります。

dockerではこのユーザーIDやグループIDで指定することがありますから、事前に調べておくと良いでしょう。

docker-compose.yml

docker-compose.ymlを作成していきます。

その前に、例としてユーザールートにbookstackのディレクトリを作成しました。配置場所は色々とありますが、ここでは分かりやすいようにこうしました。

mkdir bookstack
cd bookstack
nano docker-compose.yml

以下ymlの内容は、ハイライト表示してある箇所を確認してください。変更するべき行です。

特にパスワードは変更してください。サンプル文字列が同じになっている部分はどちらも同じ内容にしてください。

少なくともAPP_URLのIPアドレスは環境により異なります。ラズパイで設定したホスト名でもアクセスできます。(例:http://bookstack.local:6875)

version: "2"
services:
  bookstack:
    image: lscr.io/linuxserver/bookstack
    container_name: bookstack
    environment:
      - PUID=1000
      - PGID=1000
      - APP_URL=http://192.168.0.30:6875
      - DB_HOST=bookstack_db
      - DB_USER=bookstack
      - DB_PASS=bookstack_pass
      - DB_DATABASE=bookstackapp
    volumes:
      - ./bookstack_app_data:/config
    ports:
      - 6875:80
    restart: unless-stopped
    depends_on:
      - bookstack_db
  bookstack_db:
    image: lscr.io/linuxserver/mariadb
    container_name: bookstack_db
    environment:
      - PUID=1000
      - PGID=1000
      - MYSQL_ROOT_PASSWORD=root_pass
      - TZ=Asia/Tokyo
      - MYSQL_DATABASE=bookstackapp
      - MYSQL_USER=bookstack
      - MYSQL_PASSWORD=bookstack_pass
    volumes:
      - ./bookstack_db_data:/config
    restart: unless-stopped

これでdockerを立ち上げれば、Webブラウザから指定したURLでアクセスできます。

docker compose up -d

ユーザールートにbookstackディレクトリを作成しdocker-compose.ymlを配置した場合、次のように2つのディレクトリも作成されているハズです。

.
├── bookstack
│   ├── bookstack_app_data
│   ├── bookstack_db_data
│   └── docker-compose.yml
└── get-docker.sh

Volumeマウントしてあるディレクトリなので、ファイルのバックアップなどで使います。

■Pi 5は8GBモデルがオススメ

デフォルトユーザーとパスワード

Webブラウザでアクセスするとログイン画面になっています。

デフォルトのユーザー名とパスワードでログイン後、アカウントの設定で変更できます。

id:admin@admin.com
pass:password

メニューのマイアカウントで言語を日本語にします。日本語翻訳もきちんとしているので迷うことはありませんね。

パスワードの変更はアクセス&セキュリティセクションにあります。

設定項目も多くはないので、一度すべてに目を通しておくと良いでしょう。

メール送信ができない

この記事ではメール送信させるSMTPやsendmailの設定はしていません。

このままでは、特にパスワードを忘れた場合にリセットメールも送れませんから注意してください。

本格的に使うにはセットアップしたいところです。

分かりやすくお伝えできるようになったら、ここに追記していきますね。

ドキュメント

ちょっと難しいですけど、ドキュメントは充実しています。調べられるのは安心かな。

Docs · BookStack