FreeBSD 12にNodeBBフォーラムをインストールする方法

NodeBBは、Node.jsベースのフォーラムソフトウェアです。Webソケットを利用して、即時の対話とリアルタイムの通知を行います。NodeBBのソースコードはGithubで公開されています。このガイドでは、Node.js、MongoDBをデータベースとして、Nginxをリバースプロキシとして、Acme.shをSSL証明書として使用して、新しいFreeBSD 12 VultrインスタンスでのNodeBBインストールプロセスについて説明します。

必要条件

NodeBBには、次のソフトウェアがインストールされている必要があります。

  • Node.jsバージョン6.9.0以降
  • MongoDBバージョン2.6以降
  • Nginx
  • ギット
  • 1024MB以上のRAM
  • A/ AAAAレコードが設定されたドメイン名

あなたが始める前に

FreeBSDのバージョンを確認してください。

uname -ro
# FreeBSD 12.0-RELEASE

FreeBSDシステムが最新であることを確認します。

freebsd-update fetch install
pkg update && pkg upgrade -y

システムに存在しない場合は、必要なパッケージをインストールします。

pkg install -y sudo vim unzip wget git bash socat gcc8 pkgconf vips

希望するユーザー名で新しいユーザーアカウントを作成します(ここではを使用しますjohndoe)。

adduser

# Username: johndoe
# Full name: John Doe
# Uid (Leave empty for default): <Enter>
# Login group [johndoe]: <Enter>
# Login group is johndoe. Invite johndoe into other groups? []: wheel
# Login class [default]: <Enter>
# Shell (sh csh tcsh nologin) [sh]: bash
# Home directory [/home/johndoe]: <Enter>
# Home directory permissions (Leave empty for default): <Enter>
# Use password-based authentication? [yes]: <Enter>
# Use an empty password? (yes/no) [no]: <Enter>
# Use a random password? (yes/no) [no]: <Enter>
# Enter password: your_secure_password
# Enter password again: your_secure_password
# Lock out the account after creation? [no]: <Enter>
# OK? (yes/no): yes
# Add another user? (yes/no): no
# Goodbye!

visudoコマンドを実行し、%wheel ALL=(ALL) ALL行のコメントを外して、wheelグループのメンバーが任意のコマンドを実行できるようにします。

visudo

# Uncomment by removing hash (#) sign
# %wheel ALL=(ALL) ALL

次に、で新しく作成したユーザーに切り替えますsu

su - johndoe

注: ユーザー名に置き換えjohndoeてください。

タイムゾーンを設定します。

sudo tzsetup

Node.jsをインストールする

NodeBBはNode.jsによって駆動されるため、インストールする必要があります。Node.jsの現在のLTSバージョンのインストールをお勧めします。

Node.jsとnpmをインストールします。

sudo pkg install -y node10 npm-node10

バージョンを確認してください。

node -v && npm -v
# v10.15.3
# 6.9.0

MongoDBをインストールして構成する

MongoDBはNodeBBのデフォルトデータベースです。

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

sudo pkg install -y mongodb40

バージョンを確認してください。

mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v4.0.6
# db version v4.0.6

MongoDBを有効にして起動します。

sudo sysrc mongod_enable=yes
sudo service mongod start

NodeBBのデータベースとユーザーを作成します。

最初に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 service mongod restart
mongo -u admin -p your_password --authenticationDatabase=admin

Nginxをインストールして構成する

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

sudo pkg install -y nginx

バージョンを確認してください。

nginx -v
# nginx version: nginx/1.14.2

Nginxを有効にして起動します。

sudo sysrc nginx_enable=yes
sudo service nginx start

デフォルトでは、NodeBBはポートで実行されます4567。入力を避けるhttp://example.com:4567ために、NodeBBアプリケーションのリバースプロキシとしてNginxを構成します。ポート80または443でのすべてのリクエストは、SSLが使用されている場合、ポートに転送されます4567

実行してsudo vim /usr/local/etc/nginx/nodebb.conf、以下の基本的なリバースプロキシ構成を入力します。

server {

  listen [::]:80;
  listen 80;

  server_name forum.example.com;

  root /usr/share/nginx/html;

  client_max_body_size 50M;

  location /.well-known/acme-challenge/ {
    allow all;
  }

  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_hide_header X-Powered-By;
    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";
  }

}

上記の設定で、server_nameディレクティブをドメイン/ホスト名で更新します。

でファイルして終了保存:+ W+ Q

次にnodebb.conf、メインnginx.confファイルに含める必要があります。

sudo vim /usr/local/etc/nginx/nginx.conf次の行を実行してhttp {}ブロックに追加します。

include nodebb.conf;

構成を確認してください。

sudo nginx -t

Nginxをリロードします。

sudo service nginx reload

Acme.shクライアントをインストールし、Let's Encrypt証明書を取得します(オプション)。

HTTPSでフォーラムを保護する必要はありませんが、サイトのトラフィックは保護されます。Acme.shは、依存関係がゼロのLet's EncryptからSSL証明書を取得するための純粋なUNIXシェルソフトウェアです。

Acme.shをダウンロードしてインストールします。

sudo mkdir /etc/letsencrypt
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
sudo ./acme.sh --install --home /etc/letsencrypt --accountemail [email protected]
cd ~

バージョンを確認してください。

/etc/letsencrypt/acme.sh --version
# v2.8.1

のRSAおよびECDSA証明書を取得しforum.example.comます。

# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --home /etc/letsencrypt -d forum.example.com --webroot /usr/share/nginx/html --reloadcmd "sudo service nginx reload" --keylength 2048
# ECDSA/ECC P-256
sudo /etc/letsencrypt/acme.sh --issue --home /etc/letsencrypt -d forum.example.com --webroot /usr/share/nginx/html --reloadcmd "sudo service nginx reload"  --keylength ec-256

上記のコマンドを実行すると、証明書とキーは次の場所にあります。

  • RSA: /etc/letsencrypt/forum.example.com
  • ECC / ECDSA: /etc/letsencrypt/forum.example.com_ecc

Let's Encryptから証明書を取得したら、それらを使用するようにNginxを構成する必要があります。

sudo vim /usr/local/etc/nginx/nodebb.conf再度実行して、NginxをHTTPSリバースプロキシとして構成します。

server {

  listen [::]:443 ssl http2;
  listen 443 ssl http2;
  listen [::]:80;
  listen 80;

  server_name forum.example.com;

  root /usr/share/nginx/html;

  client_max_body_size 50M;

  location /.well-known/acme-challenge/ {
    allow all;
  }

  # RSA
  ssl_certificate /etc/letsencrypt/forum.example.com/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/forum.example.com/forum.example.com.key;
  # ECDSA
  ssl_certificate /etc/letsencrypt/forum.example.com_ecc/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/forum.example.com_ecc/forum.example.com.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";
  }

}

構成を確認してください。

sudo nginx -t

Nginxをリロードします。

sudo service nginx reload

NodeBBをインストールする

ドキュメントルートディレクトリを作成します。

sudo mkdir -p /usr/local/www/nodebb

/usr/local/www/nodebbディレクトリの所有権をに変更しjohndoeます。

sudo chown -R johndoe:johndoe /usr/local/www/nodebb

ドキュメントルートフォルダーに移動します。

cd /usr/local/www/nodebb

最新のNodeBBをドキュメントルートフォルダーに複製します。

git clone -b v1.11.x https://github.com/NodeBB/NodeBB.git .

NodeBBセットアップコマンドを実行し、プロンプトが表示されたら各質問に答えます。

./nodebb setup

NodeBBのセットアップが完了したら、実行./nodebb startしてNodeBBサーバーを手動で起動します。

./nodebb start

このコマンドを実行すると、WebブラウザーでNodeBBフォーラムインスタンスにアクセスできるようになります。

PM2でNodeBBを実行する

経由./nodebb startで起動した場合、システムの再起動時にNodeBBは自動的に再起動しません。これを回避するには、NodeBBをシステムサービスとしてセットアップする必要があります。

実行中の場合は、NodeBBを停止します。

./nodebb stop

PM2をグローバルにインストールします。

sudo npm install pm2 -g

バージョンを確認してください。

pm2 -v
# 3.5.0

NodeBBドキュメントルートに移動します。

cd /usr/local/www/nodebb

PM2経由でNodeBBを起動します。

pm2 start app.js

NodeBBプロセスを一覧表示します。

pm2 ls

利用可能なinitシステムを検出します。

pm2 startup

このコマンドの出力をCLIにコピーアンドペーストして、起動フックを設定します。

プロセスリストを保存します。

pm2 save

それでおしまい。NodeBBインスタンスが稼働します。



Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。