NodeBBは、データベースプラットフォームとしてMongoDB/Redisを使用するNode.jsを利用した最新のフォーラムソフトウェアです。インスタントインタラクションとリアルタイム通知にWebソケットを使用します。
このチュートリアルでは、Ubuntu20.04ベースのサーバーにNodeBBフォーラムをインストールする方法を学習します。
-
sudo権限を持つroot以外のユーザーがいるUbuntu20.04ベースのサーバー。
-
最小2GBのRAM。サーバーにRAMが1GBしかない場合は、スワップパーティションを有効にするのが最善です。
-
すべてが更新されていることを確認してください。
$ sudo apt update && sudo apt upgrade
-
いくつかの重要なパッケージ。これらの一部はすでにサーバー上にあります。
$ sudo apt install curl wget nano ca-certificates gnupg2 lsb-release
最初のステップは、ファイアウォールを構成することです。 Ubuntuにはデフォルトでufw(Uncomplicated Firewall)が付属しています。
ファイアウォールが実行されているかどうかを確認します。
$ sudo ufw status
次の出力が得られるはずです。
Status: inactive
SSHポートを許可して、ファイアウォールが有効にしたときに現在の接続を切断しないようにします。
$ sudo ufw allow OpenSSH
27017
を許可する MongoDBサーバーと4567
のポート NodeBBフォーラムを実行するためのポート。 HTTP
を許可する およびHTTPS
ポートも同様です。
$ sudo ufw allow 27017
$ sudo ufw allow 4567
$ sudo ufw allow 80
$ sudo ufw allow 443
ファイアウォールを有効にします。
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
ファイアウォールのステータスをもう一度確認してください。
$ 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)
ここにNode.jsのLTSバージョンをインストールします。次のコマンドを実行してNode.jsをインストールします。
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
$ sudo apt install nodejs
ノードが正しくインストールされているかどうかを確認してください。
$ node --version
同様の出力が表示されるはずです。
v12.18.3
npmもチェックしてください。
$ npm --version
6.14.6
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
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プロンプトが表示されます。
NodeBBのインストールに進む前に、Gitをインストールする必要があります。
次のコマンドを実行してGitをインストールします。
$ sudo apt install git
次のコマンドを実行して、Gitの初期構成を実行します。
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
rootユーザーとしてNodeBBを実行することはお勧めできません。
非特権ユーザーを作成します。
$ 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 setup
Enterキーを押して、デフォルト値を選択できます。
このNodeBBへのアクセスに使用されるURLの値 でフォーラムにアクセスする最終的なURLを選択します。サーバーIPを介してフォーラムにアクセスする場合は、サーバーIPを入力するか、フォーラムの完全なドメインを入力します。ここにhttp://forum.example.com
と入力します 。
MongoDBユーザー名の入力を求められるまで、デフォルト値を選択し続けます nodebbと入力したときです そして、MongoDBの構成中にそのユーザー名に対して以前に選択したパスワード。データベースnodebb 選択する必要があります。また、管理者ユーザーとその詳細を作成するように求められます。
セットアップが完了したら、次のコマンドを実行してNodeBBを起動します。
$ ./nodebb start
フォーラムが実行されています。 http://<yourserverip>:4567
からアクセスできるはずです。 。
NodeBBへの接続が失われたようです。再接続を試みるまでお待ちください。というエラーメッセージが表示される場合があります。 NodeBB http://forum.example.com
のデフォルトURLを選択したために表示されます http://<yourserverip
ではありません 。ただし、セットアップ中にIPアドレスを入力すると、エラーは発生しなくなりますが、フォーラムのドメインを選択した後で、後で再度構成する必要があります。
NodeBBユーザーを終了します。
$ exit
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
WebブラウザでサーバーのIPアドレスを開きます。次のページが表示されます。これは、サーバーが稼働していることを意味します。
次のコマンドを実行して、サイトの構成ファイルを追加します。
$ 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 Support
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サービスは実行されません。 NodeBBを毎回起動しないようにするには、システムサービスとしてインストールする必要があります。
最初にNodeBBサービスを停止します。
$ ./nodebb stop
次のコマンドを実行して、nodebb.service
を作成および編集します systemdユニット構成ファイル。
$ 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
ここでは、ユーザー名をnodebb
として選択しました。 手順6で作成したパスと、NodeBBをインストールするために選択したパス。
NodeBBサービスを有効にします。
$ sudo systemctl enable nodebb
NodeBBサービスを開始します。
$ sudo systemctl start nodebb
サービスのステータスを確認してください。
$ sudo systemctl status nodebb
HTTPSを使用してNodeBBフォーラムを保護することは、サイトのトラフィックを保護するために必要な手順です。このチュートリアルでは、Certbotクライアントを使用してSSLをインストールします。
まず、Certbotツールをインストールします。
$ sudo apt install certbot python3-certbot-nginx
証明書を生成します。
$ sudo certbot --nginx -d forum.example.com
システムでCertbotを初めて実行する場合は、電子メールアドレスを入力し、利用規約に同意するよう求められます。また、あなたがノーと言うことができるEFF財団とデータを共有することに同意するかどうか尋ねられます。その後、CertbotはLet's Encryptサーバーと通信し、チャレンジを実行してドメインを確認します。
それが成功すると、HTTPSリダイレクトを処理する方法を尋ねられます。
Please choose whether HTTPS access is required or optional.
-------------------------------------------------------------------------------
1: Easy - Allow both HTTP and HTTPS access to these sites
2: Secure - Make all requests redirect to secure HTTPS access
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
Secure
を選択します 選択してEnterキーを押します。これにより、httpドメインへのすべてのリクエストがhttpsバージョンに適切にリダイレクトされます。その後、証明書が作成され、Nginx構成ファイルがSSL設定で更新されます。
証明書の準備ができており、https://forum.example.com
にアクセスしてサイトを開くことができます。
これは、このチュートリアルを終了する前の最後のステップです。
更新プロセスのドライランを実行して、更新プロセスを確認します。
$ sudo certbot renew --dry-run
エラーが発生しない場合は、設定されていることを意味します。 Certbotは自動的に証明書を更新します。証明書の有効期限について警告するメールが送信されます。
このチュートリアルは以上です。 NodeBBフォーラムのセットアップが完了しました。ご不明な点がございましたら、下のコメント欄に投稿してください。