GNU/Linux >> Linux の 問題 >  >> Ubuntu

Nginxを使用してNodeBBフォーラムをインストールし、Ubuntu20.04LTSでSSLを暗号化する方法

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
    
ステップ1-ファイアウォールを構成する

最初のステップは、ファイアウォールを構成することです。 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)
ステップ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 --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をインストールする

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
ステップ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

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

ステップ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 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フォーラムを開きます。

ステップ9-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
ステップ10-Let’sEncryptSSL証明書を取得する

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にアクセスしてサイトを開くことができます。

ステップ11-SSL自動更新を確認する

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

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

$ sudo certbot renew --dry-run

エラーが発生しない場合は、設定されていることを意味します。 Certbotは自動的に証明書を更新します。証明書の有効期限について警告するメールが送信されます。

結論

このチュートリアルは以上です。 NodeBBフォーラムのセットアップが完了しました。ご不明な点がございましたら、下のコメント欄に投稿してください。


Ubuntu
  1. Ubuntu20.04でLetsEncryptを使用してNginxを保護する

  2. Nginxを使用してNextcloudをインストールし、Ubuntu20.04LTSでSSLを暗号化する方法

  3. Nginxを使用してMagento2をインストールし、Ubuntu20.04LTSでSSLを暗号化する方法

  1. NGINXを使用してShopwareをインストールし、Ubuntu18.04LTSで暗号化する方法

  2. Nginxを使用してAutomadCMSをインストールし、Ubuntu18.04でSSLを暗号化できるようにします

  3. Nginxを使用してGravCMSをインストールし、Ubuntu18.04LTSに暗号化する方法

  1. Ubuntu18.04LTSにNginxでosTicketをインストールする方法

  2. Nginxを使用してX-Cartをインストールし、Ubuntu18.04LTSでSSLを暗号化する方法

  3. Nginxを使用してDrupalをインストールし、Ubuntu20.04LTSでSSLを暗号化する方法