NodeBBインストール · 3 min read · Oct 19, 2025

Ubuntu 20.04 LTSにNginxとLet's Encrypt SSLを使用してNodeBBフォーラムをインストールする方法

NodeBBは、MongoDB/Redisをデータベースプラットフォームとして使用するNode.jsによって動かされる現代的なフォーラムソフトウェアです。ウェブソケットを使用して、即時のインタラクションとリアルタイム通知を提供します。

このチュートリアルでは、Ubuntu 20.04ベースのサーバーにNodeBBフォーラムをインストールする方法を学びます。

前提条件

  • sudo権限を持つ非rootユーザーを持つUbuntu 20.04ベースのサーバー。
  • 最低2GBのRAM。サーバーに1GBのRAMしかない場合は、スワップパーティションを有効にするのが最良です。
  • すべてが更新されていることを確認してください。 shell $ sudo apt update && sudo apt upgrade
  • いくつかの必須パッケージ。これらのいくつかはすでにサーバーにインストールされている可能性があります。 shell $ sudo apt install curl wget nano ca-certificates gnupg2 lsb-release

ステップ1 - ファイアウォールの設定

最初のステップはファイアウォールの設定です。Ubuntuにはデフォルトでufw(Uncomplicated Firewall)が付属しています。

ファイアウォールが実行中かどうかを確認します。

$ sudo ufw status

次の出力が表示されるはずです。

Status: inactive

SSHポートを許可して、ファイアウォールを有効にしたときに現在の接続が切断されないようにします。

$ sudo ufw allow OpenSSH

MongoDBサーバー用の27017ポートと、NodeBBフォーラムを実行するための4567ポートを許可します。HTTPおよびHTTPSポートも許可します。

$ sudo ufw allow 27017
$ sudo ufw allow 4567
$ 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
27017                      ALLOW       Anywhere
4567                       ALLOW       Anywhere
80                         ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
27017 (v6)                 ALLOW       Anywhere (v6)
4567 (v6)                  ALLOW       Anywhere (v6)
80 (v6)                    ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

ステップ2 - Node.jsのインストール

ここではNode.jsのLTSバージョンをインストールします。Node.jsをインストールするために次のコマンドを実行します。

$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
$ sudo apt install nodejs

Nodeが正しくインストールされているか確認します。

$ node --version

次のような出力が表示されるはずです。

v12.18.3

npmも確認します。

$ npm --version
6.14.6

ステップ3 - MongoDBのインストール

MongoDBはNodeBBのデフォルトデータベースです。MongoDBの代わりにRedisを使用することもできます。このチュートリアルでは両方のデータベースをカバーします。

Ubuntu 20.04用のMongoDBのリポジトリはまだ準備ができておらず、Ubuntu自体には非常に古いバージョンが含まれています。私たちの目的のために、18.04用のMongoDBリポジトリを使用します。公式のサポートが利用可能になったら、最新のリポジトリでパッケージリストを更新できます。

MongoDBの公開鍵をインポートします。

$ wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -

MongoDBリポジトリを追加します。

$ echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list

ローカルパッケージデータベースを更新します。

$ sudo apt update

MongoDBをインストールします。

$ sudo apt install mongodb-org

MongoDBのインストールを確認します。

$ mongod --version
db version v4.2.8
...

MongoDBサービスを開始します。

$ sudo systemctl start mongod

MongoDBサービスを有効にします。

$ sudo systemctl enable mongod

MongoDBサービスの状態を確認します。

$ sudo systemctl status mongod

ステップ4 - MongoDBの設定

Mongoの管理はMongoDBシェルを通じて行います。MongoDBのデフォルトインストールはポート27017でリッスンします。

MongoDBシェルにアクセスします。

$ mongo

組み込みのadminデータベースに切り替えます。

> use admin

管理ユーザーを作成します。これはNodeBBの管理ユーザーとは異なります。

> db.createUser( { user: "admin", pwd: "yourpassword", roles: [ { role: "root", db: "admin" } ] } )

プレースホルダー“yourpassword”を自分のパスワードに変更します。

NodeBB用の新しいデータベースを追加します。

> use nodebb

次に、nodebbデータベースを管理するためのnodebbユーザーを作成します。

> db.createUser( { user: "nodebb", pwd: "yourpassword", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )

readwrite権限により、NodeBBはnodebbデータベースからデータを保存および取得できます。clustermonitor権限により、NodeBBは管理パネルを介して表示されるデータベース統計に対して読み取り専用アクセスを持ちます。

Mongoシェルを終了します。

> quit()

MongoDB設定ファイルを編集のために開きます。

$ sudo nano /etc/mongod.conf

ファイルの最後に次の行を追加します。

security:
  authorization: enabled

MongoDBを再起動し、前に作成した管理ユーザーを確認します。

$ sudo systemctl restart mongod
$ mongo -u admin -p yourpassword --authenticationDatabase=admin

すべてが正しく設定されていれば、Mongoプロンプトが表示されるはずです。

ステップ5 - Gitのインストール

NodeBBをインストールする前に、Gitをインストールする必要があります。

Gitをインストールするために次のコマンドを実行します。

$ sudo apt install git

Gitの初期設定を行うために次のコマンドを実行します。

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

ステップ6 - NodeBBのインストール

NodeBBをrootユーザーとして実行することは推奨されません。

特権のないユーザーを作成します。

$ sudo adduser nodebb

お好みのパスワードを設定し、他のオプションはスキップします。

NodeBBフォーラムが存在するディレクトリを作成します。

$ sudo mkdir /var/www/nodebb

フォルダーの所有権を新しく作成したユーザーに変更します。

$ sudo chown -R nodebb:nodebb /var/www/nodebb

新しく作成したユーザーでログインします。

$ su nodebb

NodeBBインストールディレクトリに移動します。

$ cd /var/www/nodebb

NodeBBをインストールするには、まずそのGithubリポジトリをクローンする必要があります。

NodeBBを/var/www/nodebbディレクトリにクローンします。コマンドの最後のドットは現在のディレクトリを指します。

$ git clone -b v1.14.2 https://github.com/NodeBB/NodeBB.git .

ここでは、チュートリアル執筆時点で最新の安定版であるNodeBBのv1.14.2をクローンしました。NodeBBの最新の安定ブランチは、NodeBBの最新リリースページで見つけることができます。

NodeBBにはコマンドラインユーティリティが付属しています。次のコマンドを使用してNodeBBをインストールします。

$ ./nodebb setup

デフォルト値を選択するにはEnterを押します。

このNodeBBにアクセスするために使用するURLの値には、フォーラムにアクセスするための最終的なURLを選択します。サーバーのIP経由でフォーラムにアクセスする場合は、それを入力するか、フォーラムの完全なドメインを入力します。ここではhttp://forum.example.comを入力します。

MongoDBユーザー名を求められるまでデフォルト値を選択し続けます。そのとき、nodebbと、MongoDBを設定する際にそのユーザー名のために選択したパスワードを入力します。データベースnodebbが選択されるはずです。また、管理ユーザーを作成し、その詳細を求められます。

セットアップが完了したら、次のコマンドを実行してNodeBBを開始します。

$ ./nodebb start

フォーラムが実行中になりました。http://:4567を介してアクセスできるはずです。

NodeBBデフォルトホームページ

NodeBBへの接続が失われたようです。再接続を試みていますのでお待ちください。というエラーメッセージが表示されることがあります。これは、NodeBBのデフォルトURLhttp://forum.example.comを選択したために表示されますが、セットアップ中にIPアドレスを入力すれば、エラーは表示されなくなりますが、フォーラムのドメインを選択した後に再度設定を行う必要があります。

NodeBBユーザーから退出します。

$ exit

ステップ7 - Nginxのインストール

Ubuntu 20.04にはデフォルトで最新の安定版Nginxが含まれています。それをインストールします。

$ sudo apt install nginx

正しくインストールされているか確認します。

$ nginx -v
nginx version: nginx/1.18.0 (Ubuntu)

Nginxを開始し、有効にします。

$ sudo systemctl start nginx
$ sudo systemctl enable nginx

ウェブブラウザでサーバーのIPアドレスを開きます。サーバーが稼働していることを示す次のページが表示されるはずです。

Nginxデフォルトページ

ステップ8 - Nginxの設定

次のコマンドを実行して、サイトの設定ファイルを追加します。

$ sudo nano /etc/nginx/sites-available/nodebb.conf

エディタに次のコードを貼り付けます。

server {
    listen 80;

    server_name forum.example.com;
    
    access_log /var/log/nginx/forum.example.com.access.log;
    error_log /var/log/nginx/forum.example.com.error.log;

    location / {
        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;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;

        proxy_pass http://127.0.0.1:4567;
        proxy_redirect off;

        # Socket.IOサポート
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

Ctrl + Xを押してエディタを終了し、プロンプトが表示されたらYを入力します。

完了したら、Nginxの設定が正しいことを確認します。

$ sudo nginx -t

設定を有効にするためにNginxサービスを再読み込みします。

$ sudo systemctl reload nginx

ブラウザでhttp://forum.example.comにアクセスしてNodeBBフォーラムを開きます。

NodeBBフォーラムホームページ

ステップ9 - NodeBBをシステムサービスとして実行する

NodeBBサービスはシステム再起動後に実行されません。NodeBBを毎回起動するのを避けるために、システムサービスとしてインストールする必要があります。

まずNodeBBサービスを停止します。

$ ./nodebb stop

次のコマンドを実行してnodebb.servicesystemdユニット設定ファイルを作成および編集します。

$ sudo nano /etc/systemd/system/nodebb.service

エディタに次のコードを貼り付けます。

[Unit]
Description=NodeBB
Documentation=https://docs.nodebb.org
After=system.slice multi-user.target mongod.service

[Service]
Type=forking
User=nodebb

StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=nodebb

Environment=NODE_ENV=production
WorkingDirectory=/var/www/nodebb
PIDFile=/var/www/nodebb/pidfile
ExecStart=/usr/bin/env node loader.js
Restart=always

[Install]
WantedBy=multi-user.target

ここでは、ステップ6で作成したユーザー名nodebbと、NodeBBをインストールするために選択したパスを選択しました。

NodeBBサービスを有効にします。

$ sudo systemctl enable nodebb

NodeBBサービスを開始します。

$ sudo systemctl start nodebb

サービスの状態を確認します。

$ sudo systemctl status nodebb

ステップ10 - Let’s Encrypt SSL証明書を取得する

NodeBBフォーラムをHTTPSで保護することは、サイトのトラフィックを保護するための必要なステップです。このチュートリアルでは、SSLをインストールするためにCertbotクライアントを使用します。

まず、Certbotツールをインストールします。

$ sudo apt install certbot python3-certbot-nginx

証明書を生成します。

$ sudo certbot --nginx -d forum.example.com

これが初めてCertbotをシステムで実行する場合、メールアドレスを求められ、利用規約に同意する必要があります。また、EFF財団とデータを共有することに同意するかどうかも尋ねられますが、これは「いいえ」と答えることができます。その後、CertbotはLet’s Encryptサーバーと通信し、ドメインを確認するためのチャレンジを実行します。

成功した場合、HTTPSリダイレクトの処理方法を尋ねられます。

HTTPSアクセスが必須かオプションかを選択してください。
-------------------------------------------------------------------------------
1: 簡単 - HTTPとHTTPSの両方のアクセスを許可
2: 安全 - すべてのリクエストを安全なHTTPSアクセスにリダイレクト
-------------------------------------------------------------------------------
適切な番号[1-2]を選択して[Enter]を押してください(キャンセルするには'c'を押してください):

安全を選択し、Enterを押します。これにより、httpドメインへのすべてのリクエストが適切にhttpsバージョンにリダイレクトされます。証明書が作成され、Nginxの設定ファイルがSSL設定で更新されます。

証明書が準備できました。https://forum.example.comにアクセスしてサイトを開くことができます。

ステップ11 - SSL自動更新の確認

これはこのチュートリアルを終える前の最後のステップです。

更新プロセスを確認するために、更新プロセスのドライランを実行します。

$ sudo certbot renew --dry-run

エラーが表示されなければ、設定は完了です。Certbotは自動的に証明書を更新します。証明書の有効期限について警告するメールが送信されます。

結論

これでこのチュートリアルは終了です。NodeBBフォーラムのセットアップが完了しました。質問がある場合は、下のコメントに投稿してください。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。