Skip to main content

Ubuntu 20.04(22.04)にBookstackをインストール

Redmineのプラグイン、knowledgebaseのようなWiki編集/公開システム「BookStack」をインストールしたときのメモです。

https://www.bookstackapp.com/

前提

  • こちらが既に動いています。

  • Ubuntu 20.04

    • Ubuntu 22.04でも動作を確認
  • Apache 2.4系

  • MySQL 8系

  • PHP 8.1系

  • Composer 2.6

また、このサイト用のドメインを有しており、ドメインに即した証明書も発行済みです。

さっくりとした手順

  1. DBを作成します。
  2. BookStackをダウンロードします。
  3. BookStackの設定を行います。
  4. Apache設定ファイルを用意します。
  5. Webサービス再起動後、設定を反映します。

DB作成

mysql -u root -p
CREATE DATABASE bookstack set utf8mb4;
CREATE USER 'bookstackuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON bookstack.* TO 'bookstackuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

DB名/パスワードはポリシーに応じて適切なものを指定します。

  • DB作成確認
mysql -u snipeitbookstack -p

設定したパスワードでログインできることを確認

  • DB確認
SHOW DATABASES;

bookstackがあることを確認

  • ログアウト
exit

BookStackの配置

  • 配置ディレクトリに移動
cd /home/www-data && pwd

※ パーティションの都合上、/home/www-dataに置いています。
※ 環境に合わせて適切なWebサービス公開ディレクトリを指定してください。

  • git clone
sudo git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch 
  • 所有者変更
sudo chown -R www-data:www-data BookStack

設定及びインストール

  • ディレクトリ移動
cd /home/www-data/BookStack && pwd

git cloneしたディレクトリを指定します。

  • Composer Install
sudo composer install --no-dev
  • 設定ファイルのサンプルをコピー
sudo cp -pi .env.example .env
  • ファイルの編集

教義・信仰に沿ったエディタで以下を編集します。

APP_URL=https://hoge.example.com
# 公開用URLを指定します

# Database details
DB_HOST=localhost
DB_DATABASE=bookstack
DB_USERNAME=bookstackuser
DB_PASSWORD=password
# DB名、パスワードなどは先ほど作成したものです。
  • DBマイグレート
sudo php artisan key:generate
sudo php artisan db:seed --force
sudo php artisan migrate --force

Apache用のファイル作成

  • バーチャルファイル作成
    • BookStack用の設定ファイル作成
    • 【】の箇所は、自分の環境に合わせて修正してください。
cat <<- __EOF__ | sudo tee -a /etc/apache2/sites-available/bookstack.conf
<VirtualHost *:80>
    servername hoge.example.com
    # ドメイン名を指定します
    RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# HTTPアクセスを強制的にHTTPSにリダイレクトします
</VirtualHost>

<VirtualHost *:443>
    ServerName hoge.example.com
    # ドメイン名を指定します
    CustomLog /var/log/bookstack/bs_access.log combined
    ErrorLog /var/log/bookstack/bs_error.log
    DocumentRoot /home/www-data/BookStack/public
    # 自身の環境に合わせて適切なログ格納ディレクトリを指定します
    <Directory /home/www-data/BookStack/public>
    # 自身の環境に合わせます
        AllowOverride All
        Require all granted
        Options +FollowSymLinks
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^ index.php [L]
    </Directory>

#SSL設定
  SSLEngine on
    Protocols h2 http/1.1
  # SSLを有効化します

SSLCertificateFile /etc/certs/example.com.crt
# SSL証明書を指定します
SSLCertificateKeyFile /etc/private/example.com.key
# 秘密鍵を指定します

# SSLCACertificateFile /etc/certs/example.com.CA.crt
# 中間証明書が発行元から別ファイルで提供されている場合は、この直上をコメントアウトして中間証明書を指定します

#セキュリティヘッダー付与

    Header always set Strict-Transport-Security "max-age=63072000"
    Header set X-Content-Type-Options "nosniff"
    Header always append X-Frame-Options "SAMEORIGIN"
    Header set X-XSS-Protection "1; mode=block"

</VirtualHost>

SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
SSLCipherSuite          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:EC6-GCM-SHA384
SSLHonorCipherOrder     off
SSLSessionTickets       off

SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
__EOF__

設定反映

  • Apache設定ファイル有効化
sudo a2ensite bookstack.conf
  • コンフィグチェック
sudo apache2ctl configtest

SyntaxOKを確認します

  • Webサービス再起動
sudo systemctl restart apache2.service

インストール確認

https://設定したドメイン

でアクセスします。

以下のログイン画面が出れば成功です。

  • admin@admin.com
  • passowrd

が初期パスワードです。直ちに、アカウント情報(特にパスワード)を強固なものに設定してください。なお、ログインIDはメールアドレスとなっています。