インストールガイド · 5 min read · Oct 21, 2025
Ubuntu 20.04にNginxを使ってBookStackをインストールする方法

BookStackは、情報を整理し保存するための自己ホスト型のオープンソースで使いやすいプラットフォームです。Wiki、ドキュメンテーションウェブサイト、ノートテイキングアプリケーションなど、さまざまな目的に使用できます。Laravel PHPフレームワークを使用して構築されており、データを保存するためにMySQLを使用します。編集目的のために、WYSIWYGまたはMarkdownエディタのいずれかを選択できます。多要素認証とダークモードをサポートし、多言語対応です。
このチュートリアルでは、Ubuntu 20.04ベースのサーバーにBookStackをインストールする方法を学びます。
前提条件
- Ubuntu 20.04を実行しているサーバー
- サーバーを指す完全修飾ドメイン名(FQDN)
- sudo権限を持つ非rootユーザー
- PHPバージョン7.3以上
- MySQL>=5.6およびMariaDB>=10.0
- GitおよびComposer。
ステップ1 - ファイアウォールの設定
最初のステップはファイアウォールを設定することです。Ubuntuにはデフォルトでufw(Uncomplicated Firewall)が付属しています。
ファイアウォールが実行中かどうかを確認します。
$ sudo ufw status
次の出力が得られるはずです。
Status: inactive
SSHポートを許可して、ファイアウォールを有効にしたときに現在の接続が切断されないようにします。
$ sudo ufw allow OpenSSH
HTTPおよびHTTPSポートも許可します。
$ sudo ufw allow 80
$ sudo ufw allow 443
ファイアウォールを有効にします。
$ sudo ufw enable
コマンドは既存のssh接続を中断する可能性があります。操作を続行しますか (y|n)? y
ファイアウォールはアクティブで、システム起動時に有効になっています
再度ファイアウォールの状態を確認します。
$ sudo ufw status
同様の出力が表示されるはずです。
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80 ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
ステップ2 - Gitのインストール
最初のステップはGitをインストールすることです。BookStackをダウンロードおよび更新するために必要です。次のコマンドを実行してGitをインストールします。
$ sudo apt install git
インストールを確認します。
$ git --version
ステップ3 - PHPと拡張機能のインストール
BookStackはPHPに依存しているため、PHPとその拡張機能をインストールする必要があります。
Ubuntuには古いPHPバージョンが付属しています。まず、OndrejのPHPリポジトリを追加する必要があります。
$ sudo add-apt-repository ppa:ondrej/php
次に、BookStackに必要なPHPとその拡張機能をインストールします。
$ sudo apt install php7.4-fpm php7.4-mbstring php7.4-gd php7.4-xml unzip php7.4-bcmath php7.4-curl php7.4-mysql
インストールを確認します。
$ php --version
PHP 7.4.25 (cli) (built: Oct 22 2021 12:34:33) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.25, Copyright (c), by Zend Technologies
ステップ4 - MariaDBのインストールと設定
Ubuntuには古いバージョンのMariaDBが付属しています。最新バージョンをインストールするために、公式のMariaDBリポジトリを追加します。次のコマンドを実行してリポジトリを追加します。
$ curl -LsS -O https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
$ sudo bash mariadb_repo_setup --mariadb-server-version=10.6
次のコマンドを実行してMariaDBサーバーをインストールします。
$ sudo apt install mariadb-server
MariaDBのインストールを保護します。
$ sudo mysql_secure_installation
さまざまなプロンプトが表示されます。次のように回答します。
Enter current password for root (enter for none): Press Enter
Switch to unix_socket authentication [Y/n] Type y
Change the root password? [Y/n] Type n
Remove anonymous users? [Y/n] Type y
Disallow root login remotely? [Y/n] Type y
Remove test database and access to it? [Y/n] Type y
Reload privilege tables now? [Y/n] Type y
次のコマンドを使用してMariaDBシェルに接続します。
$ sudo mysql
Bookstack用の新しいデータベースを作成します。
$ create database bookstack;
新しいデータベースユーザーを作成します。
$ CREATE USER 'bookstackuser'@'localhost' identified by 'bookstackpassword';
強力なパスワードを選択します。
ユーザーにデータベースへの権限を付与します。
$ grant CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on `bookstack`.* to 'bookstackuser'@'localhost';
MySQLシェルを終了します。
$ exit
ステップ5 - Composerのインストール
ComposerはPHPの依存関係管理ツールであり、BookStackが基づいているLaravelに必要です。
Composerインストーラーのスクリプトをダウンロードします。
$ curl -sS https://getcomposer.org/installer -o composer-setup.php
次のコマンドを実行してインストーラーを確認します。
$ HASH=`curl -sS https://composer.github.io/installer.sig`
$ echo $HASH
$ php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
上記のコマンドはインストーラーのハッシュ値を取得し、ダウンロードしたスクリプトと一致させます。インストーラーが安全に実行できる場合、次の出力が表示されます。
Installer verified
Composerをインストールします。
$ sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
そのバージョンを確認してインストールを確認します。
$ composer --version
Composer version 2.1.9 2021-10-05 09:47:38
ステップ6 - BookStackのダウンロードとインストール
BookStackアプリのルートフォルダーを作成します。
$ sudo mkdir -p /var/www/bookstack
/var/www/bookstackディレクトリの所有権を現在ログインしているユーザーに変更します。
$ sudo chown -R $USER:$USER /var/www/bookstack
BookStack GitHubリポジトリのリリースブランチを新しく作成したフォルダーにクローンします。
$ cd /var/www/bookstack
$ git clone https://github.com/BookStackApp/BookStack.git --branch=release --single-branch .
cloneコマンドの最後のdotを見逃さないでください。これにより、すべてのファイルが新しいディレクトリを作成するのではなく、現在のディレクトリにダウンロードされます。
/var/www/bookstackディレクトリからComposerインストーラーを実行します。
$ composer install --no-dev
.env.exampleファイルを.envにコピーして、インストール用の環境変数を保存します。
$ cp .env.example .env
ファイルを編集するために開きます。
$ sudo nano .env
アプリケーションのURLとデータベースの詳細を入力します。メール機能を使用する場合は、SMTPの詳細を入力するか、そうでなければファイルから削除します。
APP_URL=https://example.com
DB_HOST=localhost
DB_DATABASE=bookstack
DB_USERNAME=bookstackuser
DB_PASSWORD=bookstackpassword
ファイルを保存するには、Ctrl + Xを押し、完了したらYを入力します。設定できる設定がさらにたくさんあります。それらについて詳しく知りたい場合は、.env.example.completeファイルを開き、必要なものを.envファイルにコピーしてください。
ユニークなアプリケーションキーを生成します。この値は自動的に.envファイルに入力されます。コマンドを続行するにはyesと入力します。
$ php artisan key:generate
**************************************
* Application In Production! *
************************************
本当にこのコマンドを実行しますか? (yes/no) [no]:
> yes
アプリケーションキーが正常に設定されました。
データベースを更新します。
$ php artisan migrate************************************ * Application In Production! * ************************************** 本当にこのコマンドを実行しますか? (yes/no) [no]: > yes マイグレーションテーブルが正常に作成されました。 Migrating: 2014_10_12_000000_create_users_table Migrated: 2014_10_12_000000_create_users_table (0.12 seconds) .......
ステップ7 - Let’s Encrypt SSLのインストール
Let’s Encryptを使用してSSL証明書をインストールするには、Certbotツールをインストールする必要があります。
そのためにSnapdパッケージインストーラーを使用します。ほとんどのUbuntuサーバーにはSnapツールが付属していません。それを修正するために、Snapをインストールします。
$ sudo apt install snapd
Snapdのバージョンが最新であることを確認します。
$ sudo snap install core
$ sudo snap refresh core
Certbotをインストールします。
$ sudo snap install --classic certbot
次のコマンドを使用して、Certbotコマンドが/usr/binディレクトリにシンボリックリンクを作成して実行できることを確認します。
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
インストールを確認します。
$ certbot --version
certbot 1.20.0
SSL証明書を生成します。
$ sudo certbot certonly --standalone --agree-tos --preferred-challenges http -m [email protected] -d example.com
上記のコマンドは、サーバーの/etc/letsencrypt/live/etherpad.example.comディレクトリに証明書をダウンロードします。
Diffie-Hellmanグループ証明書を生成します。
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Let’s Encryptの自動更新のためのチャレンジウェブルートディレクトリを作成します。
$ sudo mkdir -p /var/lib/letsencrypt
SSLを更新するためのCronジョブを作成します。これは毎日実行され、証明書を確認し、必要に応じて更新します。そのために、まず/etc/cron.daily/certbot-renewファイルを作成し、編集のために開きます。
$ sudo nano /etc/cron.daily/certbot-renew
次のコードを貼り付けます。
#!/bin/sh
certbot renew --cert-name bookstack.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
ファイルを保存するには、Ctrl + Xを押し、完了したらYを入力します。
タスクファイルの権限を変更して実行可能にします。
$ sudo chmod +x /etc/cron.daily/certbot-renew
ステップ8 - Nginxのインストールと設定
Ubuntuには古いバージョンのNginxが付属しています。最新バージョンをインストールするには、公式のNginxリポジトリをダウンロードする必要があります。
Nginxの安定版のリポジトリを追加します。
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
Nginxをインストールします。
$ sudo apt install nginx
インストールを確認します。
$ nginx -v
nginx version: nginx/1.20.1
Nginxサービスを有効にします。
$ sudo systemctl enable nginx
PHP-FPMの設定
/etc/php/7.4/fpm/pool.d/www.confファイルを開きます。
$ sudo nano /etc/php/7.4/fpm/pool.d/www.conf
PHPプロセスのUnixユーザー/グループをnginxに設定する必要があります。ファイル内のuser=www-dataおよびgroup=www-data行を見つけてnginxに変更します。
...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
user = nginx
group = nginx
...
また、ファイル内のlisten.owner=www-dataおよびlisten.group=www-data行を見つけてnginxに変更します。
listen.owner = nginx
listen.group = nginx
ファイルを保存するには、Ctrl + Xを押し、完了したらYを入力します。
PHP-FPMプロセスを再起動します。
$ sudo systemctl restart php7.4-fpm
Nginxの設定
/etc/nginx/conf.d/bookstack.confファイルを作成して開きます。
$ sudo nano /etc/nginx/conf.d/bookstack.conf
次のコードを貼り付けます。
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name bookstack.example.com;
access_log /var/log/nginx/bookstack.access.log;
error_log /var/log/nginx/bookstack.error.log;
ssl_certificate /etc/letsencrypt/live/bookstack.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/bookstack.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/bookstack.example.com/chain.pem;
ssl_session_timeout 5m;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
root /var/www/bookstack/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
}
# enforce HTTPS
server {
listen 80;
listen [::]:80;
server_name bookstack.example.com;
return 301 https://$host$request_uri;
}
ファイルを保存するには、Ctrl + Xを押し、完了したらYを入力します。
/etc/nginx/nginx.confファイルを開きます。
$ sudo nano /etc/nginx/nginx.conf
include /etc/nginx/conf.d/*.conf;の前に次の行を追加します。
server_names_hash_bucket_size 64;
ファイルを保存するには、Ctrl + Xを押し、完了したらYを入力します。Nginxを再度検証します。
Nginxの設定ファイルの構文を確認します。
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
最後に、新しい設定を有効にするためにNginxサービスを開始します。
$ sudo systemctl start nginx
ディレクトリの所有権をnginxユーザーに変更して、ウェブサーバーがフォルダーにアクセスして書き込めるようにします。
$ sudo chown -R nginx:nginx /var/www/bookstackステップ9 - BookStackを実行する
あなたのBookstackは使用する準備が整いました。ブラウザでhttps://bookstack.example.comのURLを開くと、ログインページが表示されます。

デフォルトの管理者アカウント[email protected]とパスワードpasswordを使用してログインします。設定 >> ユーザーページを開き、新しいユーザーを追加ボタンをクリックします。

ユーザーの詳細を入力し、ユーザー役割の下の管理者ボックスにチェックを入れ、SMTPの詳細を設定していないため、ユーザー招待メールを送信のチェックを外します。強力なパスワードを選択します。完了したら保存をクリックします。

次に、デフォルトの管理者ユーザーをクリックし、ユーザーを削除ボタンをクリックしてユーザーを削除します。

削除する前にドロップダウンメニューから新しく作成したユーザーを選択して、管理者ユーザーの所有権を移転します。完了するには確認をクリックします。そのユーザーでログインしている場合は、自動的にログアウトされます。新しく作成したユーザーで再度ログインする必要があります。

BookStackのバックアップと復元
BookStackのバックアップ
データベースとファイルを別々にバックアップする必要があります。データベースをバックアップするには、mysqldumpツールを使用します。
$ sudo mysqldump -u bookstackuser bookstack > bookstack.backup.sql
次のファイルとフォルダーもバックアップする必要があります。
.env- 重要な設定を含むファイル。public/uploads- アップロードされた画像を含むフォルダー。storage/uploads- アップロードされたページ添付ファイルを含むフォルダー。
次のコマンドを実行して、上記のファイルとフォルダーの圧縮アーカイブを作成します。
$ sudo tar -czvf bookstack-files-backup.tar.gz .env public/uploads storage/uploads
BookStackの復元
次のコマンドを実行してデータベースを復元します。
$ sudo mysql -u bookstack < bookstack.backup.sql
新しいバージョンのBookStackに復元する場合は、sudo php artisan migrateコマンドを実行する必要があります。
上記で作成した圧縮ファイルを復元するには、次のコマンドを使用します。
$ sudo tar -xvzf bookstack-files-backup.tar.gz
権限を変更する必要もあります。
BookStackの更新
BookStackを更新する前に、前述のプロセスを使用して適切なバックアップを取ることを確認してください。
BookStackを更新するには、Gitリポジトリから元のファイルをプルします。
$ cd /var/www/bookstack
$ sudo git pull origin release
次のコマンドを実行してインストールを続行します。
$ sudo composer install --no-dev
$ sudo php artisan migrate
キャッシュをクリアするために次のコマンドも実行する必要があります。
$ sudo php artisan cache:clear
$ sudo php artisan config:clear
$ sudo php artisan view:clear
結論
これで、Ubuntu 20.04サーバーにBookStackをインストールするためのチュートリアルが終了します。質問がある場合は、下のコメントに投稿してください。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。