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

Ubuntu20.04でProsodyXMPPサーバーをセットアップする方法

Prosodyは、Luaで記述された無料のオープンソースXMPPサーバーです。高速で軽量です。 XMPPは、インスタントメッセージングに最適なプロトコルです。このチュートリアルでは、Ubuntu20.04にProsodyXMPPサーバーをインストールして構成する方法を説明します。このチュートリアルを終了すると、独自のチャットサーバーが作成されます。

ステップ1:Ubuntu20.04にProsodyをインストールする

ProsodyはデフォルトのUbuntuリポジトリに含まれています。 Prosodyチームは、パッケージリポジトリも管理しています。最新バージョンを入手したい場合は、次のコマンドでProsodyリポジトリを追加する必要があります。

echo 'deb https://packages.prosody.im/debian focal main' | sudo tee /etc/apt/sources.list.d/prosody.list

次に、次のコマンドを実行してProsody公開鍵をダウンロードおよびインポートします。これにより、APTパッケージマネージャーは、このリポジトリからダウンロードされたパッケージの整合性を検証できます。

wget https://prosody.im/files/prosody-debian-packages.key -O- | sudo apt-key add -

次に、ローカルパッケージインデックスを更新し、最新バージョンのProsodyをインストールします。

sudo apt update

sudo apt install prosody

インストールすると、Prosodyが自動的に起動します。次のコマンドでステータスを確認できます:

systemctl status prosody

出力:

● prosody.service - Prosody XMPP Server
   Loaded: loaded (/lib/systemd/system/prosody.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2020-04-19 13:58:40 UTC; 16s ago
     Docs: https://prosody.im/doc
 Main PID: 1894 (lua5.2)
    Tasks: 1 (limit: 1108)
   CGroup: /system.slice/prosody.service
           └─1894 lua5.2 /usr/bin/prosody -F

Apr 19 13:58:40 localhost systemd[1]: Started Prosody XMPP Server.

実行されていない場合は、

で開始できます。
sudo systemctl start prosody

システムの起動時に自動起動を有効にするには、

を実行します。
sudo systemctl enable prosody

ステップ2:ファイアウォールでポートを開く

次のコマンドでわかるように、デフォルトでは、パブリックIPアドレスのTCPポート5269および5222でリッスンします。 (Ubuntuにnetstatコマンドがない場合は、sudo apt install net-toolsを使用してインストールできます。 。)

sudo netstat -lnptu | grep lua

  • ポート5222は、クライアントからサーバーへの接続に使用されます。
  • ポート5269は、サーバーからサーバーへの接続に使用されます。

UbuntuでUFWファイアウォールを有効にしている場合は、次のコマンドで上記のポートを開く必要があります。

sudo ufw allow 5222,5269/tcp

ステップ3:ProsodyXMPPサーバーを構成する

Nanoなどのコマンドラインテキストエディタを使用して、メインの構成ファイルを編集します。

sudo nano /etc/prosody/prosody.cfg.lua

module_enabled {...}で セクションでは、行のコメントを解除して特定のモジュールを有効にしたり、行をコメントアウトして特定のモジュールを無効にしたりできます。各モジュールには、その機能を説明する説明があります。 Bの略であるBOSHモジュールを有効にすることをお勧めします。 idirection-streams O ver S 同期H TTP。 HTTPを介したXMPP通信を可能にします。

次に、構成ファイルを下にスクロールします。 XMPPクライアントからのアカウント登録を許可する場合は、allow_registrationを設定します。 本当に。これを行う前に、悪用を防ぐ方法を知っている必要があることに注意してください。 XMPPを初めて使用する場合は、XMPPクライアントが自分でアカウントを登録することを許可したくないでしょう。

allow_registration = true;

Prosodyは、暗号化された通信のみを許可します。これは、次の2行で示されています。

c2s_require_encryption = true

s2s_require_encryption = true

ただし、接続を暗号化できるように、仮想ホストを作成してTLS証明書をインストールする必要があります。デフォルトでは、次の行に示すように、Prosodyにはlocalhostという1つの仮想ホストしかありません。

VirtualHost "localhost"

次に、chat.example.comのような別の仮想ホストを作成します 。このファイルに次の行を追加します。

VirtualHost "chat.example.com"

ファイルを保存して閉じます。次に、Let’sEncryptから信頼できるTLS証明書を取得してインストールする必要があります。

ステップ4:Let’sEncryptから信頼できるTLS証明書を取得する

次のコマンドを発行して、Let’s Encryptクライアント(certbot)をUbuntuサーバーにインストールします。

sudo apt install certbot

Webサーバーをまだ実行していない場合は、他の方法を使用するよりもWebサーバーでTLS証明書を取得してインストールする方が簡単なため、Webサーバー(ApacheまたはNginx)をインストールすることをお勧めします。

Apache Webサーバーを使用する場合は、Apacheプラグインをインストールする必要があります。 (次のコマンドは、Apache Webサーバーがまだシステムにインストールされていない場合にインストールします。)

sudo apt install python3-certbot-apache

Nginx Webサーバーを使用している場合は、Nginxプラグインをインストールします。 (次のコマンドは、Nginx Webサーバーがまだシステムにインストールされていない場合にインストールします。)

sudo apt install python3-certbot-nginx

ApacheWebサーバーでTLS証明書を取得する

chat.example.com用のApache仮想ホストが必要です Let'sEncryptTLS証明書を取得する前に。仮想ホストファイルを作成します:

sudo nano /etc/apache2/sites-available/prosody.conf

次に、次のテキストをファイルに貼り付けます。 chat.example.comを置き換えます あなたの本当のドメイン名で。 DNSAレコードを設定することを忘れないでください。

<VirtualHost *:80>        
        ServerName chat.example.com

        DocumentRoot /var/www/prosody
</VirtualHost>

ファイルを保存して閉じます。次に、webrootディレクトリを作成します。

sudo mkdir /var/www/prosody

www-dataを設定します (Apacheユーザー)webrootの所有者として。

sudo chown www-data:www-data /var/www/prosody -R

この仮想ホストを有効にします。

sudo a2ensite prosody.conf

変更を有効にするためにApacheをリロードします。

sudo systemctl reload apache2

仮想ホストを作成して有効にしたら、次のコマンドを実行してLet’sEncryptTLS証明書を取得してインストールします。

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d chat.example.com

赤いテキストを実際のデータに置き換えます。次のように表示されます。これは、証明書が正常に取得されたことを意味します。証明書が保存されているディレクトリも表示されます。

NginxWebサーバーでTLS証明書を取得する

chat.example.com用のNginx仮想ホストが必要です Let'sEncryptTLS証明書を取得する前に。仮想ホストファイルを作成します:

sudo nano /etc/nginx/conf.d/prosody.conf

次に、次のテキストをファイルに貼り付けます。 chat.example.comを置き換えます あなたの本当のドメイン名で。 DNSAレコードを設定することを忘れないでください。

server {
      listen 80;
      listen [::]:80;
      server_name chat.example.com;

      root /var/www/prosody/;

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

ファイルを保存して閉じます。次に、Webルートディレクトリを作成します。

sudo mkdir /var/www/prosody/

www-dataを設定します (Nginxユーザー)Webルートの所有者として。

sudo chown www-data:www-data /var/www/prosody -R

変更を有効にするためにNginxをリロードします。

sudo systemctl reload nginx

仮想ホストを作成して有効にしたら、次のコマンドを実行して、Let’sEncrypt証明書をNginxプラグインで取得してインストールします。

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d chat.example.com

次のように表示されます。これは、証明書が正常に取得されたことを意味します。証明書が保存されているディレクトリも表示されます。

ステップ5:ProsodyにTLS証明書をインストールする

メインの構成ファイルを編集します。

sudo nano /etc/prosody/prosody.cfg.lua

Prosody仮想ホストに移動し、TLS証明書とキーファイルを追加します。

ssl = {
      key = "/etc/letsencrypt/live/chat.example.com/privkey.pem";
     certificate = "/etc/letsencrypt/live/chat.example.com/fullchain.pem";
}

このように:

ファイルを保存して閉じます。 ProsodyXMPPサーバーはprosodyとして実行されるため ユーザーの場合、次のコマンドを使用して、韻律ユーザーがTLS証明書とキーファイルを読み取れるようにする必要があります。

sudo apt install acl
sudo setfacl -R -m u:prosody:rx /etc/letsencrypt/

ステップ6:ユーザーアカウントを作成する

Prosody XMPPサーバーのユーザーアカウントは、次のコマンドを使用して作成できます。パスワードの入力を求められます。

sudo prosodyctl adduser [email protected]

パスワードを変更するには、

を実行します
sudo prosodyctl passwd [email protected]

ステップ7:Prosodyを再起動します

次のコマンドを実行して、構成ファイルの構文を確認します。

sudo prosodyctl check config

構文が正しい場合は、変更を有効にするためにProsodyを再起動します。

sudo systemctl restart prosody

ステップ8:XMPPクライアントを構成する

このチュートリアルでは、XMPPクライアントとしてPidginインスタントメッセンジャーを使用します。共感はあなたが使うことができるもう一つのクライアントです。次のコマンドを実行して、Ubuntuデスクトップにインストールできます。

sudo apt install pidgin

sudo apt install empathy

最初の起動時に、Pidginにアカウントを追加する必要があります。 追加をクリックします ボタン。

次に、プロトコルのリストからXMPPを選択し、ユーザー名、ドメイン、パスワードを入力します。

追加を押します ボタンをクリックするとログインします。

BOSHを設定する

前に説明したように、BOSHを使用すると、WebブラウザでXMPPoverHTTPを使用できます。たとえば、Jitsi Meetビデオ会議ソフトウェアはBOSHを使用してProsodyをWebページに統合しているため、参加者はオンラインビデオ会議に参加しながらテキストチャットを行うことができます。

BOSHモジュールを有効にした場合は、Prosody構成ファイル(/etc/prosody/prosody.cfg.lua)を編集します。 )そして、構成ファイルの最後に次の2行を追加します。

consider_bosh_secure = true;
cross_domain_bosh = true;
https_ssl = {
        certificate = "/etc/letsencrypt/live/chat.example.com/fullchain.pem";
        key = "/etc/letsencrypt/live/chat.example.com/privkey.pem";
    }

場所:

  • 最初の行は安全なHTTPS接続を強制します。
  • 2行目は、BOSH応答にCORヘッダーを追加して、任意のドメインからのリクエストを許可します。
  • https_sslパラメーターは、BOSHサービスのTLS証明書とキーファイルを指定します。

ファイルを保存して閉じます。次に、Prosodyを再起動します。

sudo systemctl restart prosody

UbuntuサーバーでUFWファイアウォールを有効にしている場合は、次のコマンドでポート5280と5281を開く必要があります。

sudo ufw allow 5280,5281/tcp

このチュートリアルを終了すると、BOSHエンドポイントは次のアドレスで利用できるようになります。ポート5280 プレーンテキストHTTP、ポート 5281用です HTTPSの場合。

http://chat.example.com:5280/http-bind

または

https://chat.example.com:5281/http-bind.

BOSHエンドポイントは、クライアントがHTTP経由でXMPPサーバーに接続するために使用するURLです。

マルチユーザーチャットルーム

MUC(マルチユーザーチャット)を有効にするには、Prosody構成ファイルに次の行を追加します。 conference.example.comを置き換えます 好みのサブドメインで。

Component "conference.example.com" "muc"
     restrict_room_creation = "admin"

2行目では、管理者のみが部屋を作成できます。 XMPPサーバーの管理者を定義するには、最初にsudo prosodyctl adduserを使用してアカウントを作成する必要があります 上記のようなコマンド。次に、構成ファイルで、アカウントをadmin {...}に追加します。 以下のようなセクション。

admins = { "[email protected]", "[email protected]" }

次のコマンドを実行して、構成ファイルの構文を確認します。

sudo prosodyctl check config

構文が正しい場合は、変更を有効にするためにProsodyを再起動します。

sudo systemctl restart prosody

トラブルシューティング

Prosodyのメインログファイルは/var/log/prosody/prosody.logです。 。エラーログ/var/log/prosody/prosody.errもあります 。 Prosodyが期待どおりに機能しない場合は、エラーログを確認することをお勧めします。

TLS証明書の自動更新

Cronジョブを作成して、TLS証明書を自動的に更新できます。 rootユーザーのcrontabファイルを開きます。

sudo crontab -e

Apache Webサーバーを使用している場合は、ファイルの最後に次の行を追加します。

@daily certbot renew --quiet && systemctl reload postfix dovecot apache2

Nginx Webサーバーを使用している場合は、次の行を追加します。

@daily certbot renew --quiet && systemctl reload postfix dovecot nginx

これらのプログラムに新しい証明書と秘密鍵を取得させるには、Postfix、Dovecot、およびWebサーバーをリロードする必要があります。


Ubuntu
  1. Ubuntu18.04にSquidプロキシサーバーをセットアップしてインストールする方法

  2. Ubuntu 20.04/18.04にRedisをインストールする方法

  3. Ubuntu14.04サーバーにZimbra8.6をインストールする方法

  1. Ubuntu18.04にMySQLをインストールする方法

  2. Ubuntu18.04でOpenVPNサーバーをセットアップする方法

  3. Ubuntu18.04にMinecraftサーバーをインストールする方法

  1. Ubuntu20.04にNginxをインストールする方法

  2. Ubuntu20.04にMariaDBをインストールする方法

  3. Ubuntu14.04にVNCサーバーをインストールする方法