NodeBBは、最新のウェブ用に構築されたNode.jsベースのフォーラムソフトウェアです。これは、MongoDBまたはRedisデータベースのいずれかで構築されています。 Webソケットを利用して、即時の対話とリアルタイムの通知を行います。 NodeBBには、ソーシャルネットワークの統合やストリーミングディスカッションなど、すぐに使用できる多くの最新機能があります。サードパーティのプラグインを使用することで、追加機能が有効になります。 NodeBBは、Githubにあるオープンソースプロジェクトです。このガイドでは、リバースプロキシとしてNginx、データベースとしてMongoDB、acme.shとLet's Encrypt for HTTPSを使用して、Debian9オペレーティングシステムにNodeBBBをインストールするプロセスを段階的に説明します。
NodeBBでは、次のソフトウェアをインストールする必要があります。
- Node.jsバージョン6 以上
- MongoDBバージョン2.6 以上またはRedisバージョン2.8.9 以上
- Nginxバージョン1.3.13 以上
- Git
注 : NodeBBの依存関係をインストールするには、512メガバイトを超えるシステムメモリが必要になる場合があります。 Linuxシステムのメモリが不足している場合は、スワップパーティションを有効にして補うことをお勧めします。
前提条件
- 1GB以上のRAMを搭載したDebian9システムを実行しています。
-  Aのドメイン名 /AAAAレコードが設定されました。
- sudo権限を持つroot以外のユーザー。
初期手順
Debianバージョンを確認してください:
lsb_release -ds
タイムゾーンを設定します:
sudo dpkg-reconfigure tzdataオペレーティングシステムパッケージ(ソフトウェア)を更新します。これは、オペレーティングシステムのデフォルトのソフトウェアパッケージの最新の更新とセキュリティ修正を確実に行うための重要な最初のステップです。
sudo apt update && sudo apt upgrade -yDebianオペレーティングシステムの基本的な管理に必要ないくつかの重要なパッケージをインストールします。
sudo apt install -y curl wget vim git unzip sudo socat bash-completion apt-transport-https
ステップ1:Node.jsとnpmをインストールします
NodeBBはNode.js上に構築されています。 NodeBBの推奨バージョンであるバージョン8をインストールします。 この記事の執筆時点で。 Linuxでは、いくつかのNode.jsインストールオプションがあります。Linuxバイナリ(x86 / x64)、ソースコード、またはパッケージマネージャーを使用します。 Node.jsのインストールと更新を簡単にするパッケージ管理オプションを使用します。
NodeSourceリポジトリからNode.jsの最新のロングタームサポート(LTS)リリースをダウンロードしてインストールします:
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt install -y nodejs
npmからネイティブアドオンをコンパイルしてインストールするには、ビルドツールのインストールも必要になる場合があります:
sudo apt install -y build-essential
 注 : npmはNode.jsとともに配布されます。つまり、Node.jsをダウンロードすると、システムにnpmが自動的にインストールされます。
  
Node.jsとnpmのバージョンを確認してください:
node -v && npm -v
# v10.15.1
# 6.4.1
 NpmはNode.jsとは別のプロジェクトであり、より頻繁に更新される傾向があります。その結果、Node.js(したがってnpm)をダウンロードしたばかりの場合でも、おそらくnpmを更新する必要があります。幸いなことに、npmは自分自身を更新する方法を知っています! npmを更新するには、ターミナルに次のように入力します:
 
sudo npm install -g [email protected]このコマンドは、npmを最新の安定バージョンに更新します。
npmのバージョンを次のように再確認します:
npm -v
# 6.7.0
そして、最新のバージョン番号を返す必要があります。
ステップ2:MongoDBをインストールして構成する
NodeBBにはデータを保存するためのデータベースが必要であり、MongoDBとRedisをサポートしています。このチュートリアルでは、データストアエンジンとしてMongoDBを選択しました。したがって、次のいくつかの手順では、MongoDBデータベースを公式のMongoDBrpmリポジトリからダウンロードしてインストールします。
公式のMongoDBリポジトリから安定バージョンのMongoDBパッケージをインストールするには、次のコマンドを発行します。
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
echo "deb https://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
sudo apt update
sudo apt install -y mongodb-orgMongoDBのバージョンを確認してください:
mongo --version | head -n 1 && mongod --version | head -n 1
開始して有効にします(再起動時に開始するように設定します )MongoDBサービス:
sudo systemctl start mongod.service
sudo systemctl enable mongod.service次のコマンドを実行して、MongoDBデータベースサーバーのステータスを確認します。
sudo systemctl status mongod.service
# active (running)次に、NodeBBのMongoDBデータベースとユーザーを作成します。
最初にMongoDBサーバーに接続します。
mongo
 組み込みのadminに切り替えます データベース。
> use admin管理ユーザーを作成します。
> db.createUser( { user: "admin", pwd: "<Enter a secure password>", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )
 注: プレースホルダーを置き換えます<Enter a secure password> 自分で選択したパスワードを使用します。 
 nodebbという新しいデータベースを追加します 。
> use nodebb
 データベースが作成され、コンテキストがnodebbに切り替えられます 。次に、nodebbを作成します 適切な権限を持つユーザー。
> db.createUser( { user: "nodebb", pwd: "<Enter a secure password>", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
 注: もう一度、プレースホルダーを置き換えます<Enter a secure password> 自分で選択したパスワードを使用します。 
Mongoシェルを終了します。
> quit()MongoDBを再起動し、前に作成した管理ユーザーが接続できることを確認します。
sudo systemctl restart mongodb.service
mongo -u admin -p your_password --authenticationDatabase=adminすべてがうまくいけば、MongoDBをインストールしてNodeBB用に準備する必要があります。次のステップでは、ウェブサーバーのインストールと構成を扱います。
ステップ3-acme.shクライアントをインストールしてLetsEncrypt証明書を取得する
このステップはオプションです。 HTTPSを使用してNodeBBフォーラムを保護する必要はありませんが、サイトのトラフィックを保護することをお勧めします。 Let's EncryptからTLS証明書を取得するには、acme.shクライアントを使用します。 Acme.shは、依存関係がゼロのLet'sEncryptからTLS証明書を取得するための純粋なUnixシェルソフトウェアです。
acme.shをダウンロードしてインストールします:
sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh 
./acme.sh --install --accountemail [email protected]
source ~/.bashrc
cd ~acme.shのバージョンを確認してください:
acme.sh --version
# v2.8.0
  RSAを取得する およびECC/ ECCSA  ドメイン/ホスト名の証明書:
# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256
 テスト用の偽の証明書が必要な場合は、--stagingを追加できます。 上記のコマンドにフラグを立てます。
上記のコマンドを実行した後、証明書 およびキー になります:
-   RSAの場合 :/home/username/example.comディレクトリ。
-   ECC/ECDSAの場合 :/home/username/example.com_eccディレクトリ。
発行された証明書を一覧表示するには、次のコマンドを実行できます:
acme.sh --list
 証明書を保存するディレクトリを作成します。 /etc/letsencryptを使用します ディレクトリ。
mkdir -p /etc/letsecnrypt/example.comsudo mkdir -p /etc/letsencrypt/example.com_ecc
証明書を/etc/letsencryptディレクトリにインストール/コピーします。
# RSA
acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"すべての証明書は60日ごとに自動的に更新されます。
証明書を取得したら、rootユーザーを終了し、通常のsudoユーザーに戻ります。
exitステップ4:Nginxをインストールして構成する
NodeBBは、多くのウェブサーバーで正常に機能します。このチュートリアルでは、Nginxを選択しました。
次のコマンドを発行して、Nginxパッケージをインストールします。
sudo apt install -y nginxインストール後、次のコマンドを実行してNginxのバージョンを確認できます:
nginx -v
開始して有効にします(再起動時に開始するように設定します )Nginxサービス:
sudo systemctl start nginx.service
sudo systemctl enable nginx.service次のコマンドを実行して、Nginxウェブサーバーのステータスを確認します:
sudo systemctl status nginx.service
# active (running)
 NodeBBは、デフォルトでポート4567で実行されます 。 http://example.com:4567の入力を避けるため 、NodeBBアプリケーションのリバースプロキシとしてNginxを構成します。ポート80でのすべてのリクエスト または443 (SSLを使用する場合 )ポート4567に転送されます 。
 sudo vim /etc/nginx/conf.d/nodebb.confを実行します NginxをHTTPSリバースプロキシとして構成します。
server {
  listen [::]:443 ssl http2;
  listen 443 ssl http2;
  listen [::]:80;
  listen 80;
  
  server_name example.com;
  
  client_max_body_size 50M;
  # RSA
  ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/example.com/private.key;
  # ECDSA
  ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;
  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 Support
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade"; 
  }
}Nginxの構成を確認してください:
sudo nginx -t最後に、変更を有効にするには、Nginxをリロードする必要があります:
sudo systemctl reload nginx.serviceステップ5:NodeBBをインストールしてセットアップする
NodeBBが存在するドキュメントルートディレクトリを作成します:
sudo mkdir -p /var/www/nodebbドキュメントのルートディレクトリに移動します:
cd /var/www/nodebb
 /var/www/nodebbの所有権を変更します your_userへのディレクトリ。
sudo chown -R [your_user]:[your_user] /var/www/nodebb注: 上記のコマンドのyour_userを、このチュートリアルの前提条件として作成する必要のあるroot以外のユーザーに置き換えます。 。
最新のNodeBBリポジトリをドキュメントルートフォルダに複製します:
git clone -b v1.11.x https://github.com/NodeBB/NodeBB.git .
 setupを使用してアプリを実行し、セットアップスクリプトを開始します 国旗。それぞれの質問に答えてください:
./nodebb setup
 NodeBBのセットアップが完了したら、./nodebb startを実行します。 NodeBBサーバーを手動で起動するには:
./nodebb startこのコマンドを実行すると、Webブラウザで新しいフォーラムにアクセスできるようになります。
  
 
ステップ6:NodeBBをシステムサービスとして実行する
 ./nodebb startを介して開始した場合 、システムの再起動時にNodeBBが自動的に再起動することはありません。これを回避するには、NodeBBをシステムサービスとして設定する必要があります。
実行中の場合は、NodeBBを停止します:
./nodebb stop
 新しいnodebbを作成します ユーザー:
sudo useradd nodebb
 /var/www/nodebbの所有権を変更します nodebbへのディレクトリ ユーザー:
sudo chown -R nodebb:nodebb /var/www/nodebb
 nodebb.serviceを作成します systemdユニット設定ファイル。このユニットファイルは、NodeBBデーモンの起動を処理します。 sudo vim /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
注: 選択した名前に従ってユーザー名とディレクトリのパスを設定します。
 nodebb.serviceを有効にする 再起動時にnodebb.service:をすぐに開始します 
sudo systemctl enable nodebb.service
sudo systemctl start nodebb.service
 nodebb.serviceを確認してください ステータス:
sudo systemctl status nodebb.service
sudo systemctl is-enabled nodebb.serviceおめでとう!これで、NodeBBディスカッションプラットフォームがDebian9システムに正常にインストールおよびデプロイされました。ドメイン上のフォーラムにアクセスして、フォーラムとやり取りできる必要があります。
- https://nodebb.org/
- https://docs.nodebb.org/
- https://github.com/NodeBB/NodeBB