著者は、 Open Internet / Free Speech Fund を選択して、 Write forDOnationsプログラムの一環として寄付を受け取りました。

序章

Prosody は、TLS暗号化された1対1のチャットおよびグループチャットルームをサポートするXMPPチャットサーバーです。 XMPP (Extensible Messaging and Presence Protocol)は、正式にはJabberとして知られているオープンメッセージングプロトコルです。 これは、すべてのXMPPチャットクライアントがProsodyサーバーに接続してチャットを開始できることを意味します。

XMPP は、 Internet Engineering Task Force(IETF)によって維持されている成熟したオープンスタンダードです。 何百万人ものユーザーが使用しているGoogleTalk など、多くのアプリケーションで積極的に保守および展開されています。 ProsodyのようなXMPPサーバーは、20年以上前から存在しているチャットサーバーの柔軟なオプションです。

このチュートリアルでは、1対1およびグループチャットセッションをサポートするProsodyサーバーをインストールおよび構成し、ファイルをチャットパネルにアップロードして共有する機能を提供します。 すべてのチャットセッションはTLS暗号化証明書によって保護されるため、個人データは非公開になります。

前提条件

このガイドを開始する前に、次のものが必要です。

  • Ubuntu 18.04の初期サーバーセットアップガイドに従ってセットアップされた少なくとも512MBのRAMを備えた1つのUbuntu18.04サーバー。これには、sudo対応の非rootユーザーとファイアウォールが含まれます。
  • ローカルシステムにインストールされているXMPPチャットクライアント。 このXMPPクライアントページにリストされているチャットアプリケーションはすべて、Prosodyサーバーと互換性があります。
  • サーバーを指す2つのホスト名。 Prosodyは1つを直接チャットに使用し、もう1つをグループチャットルームに使用するため、2つのホスト名が必要です。 DNS How-Tos に従って、ホスト名をDigitalOceanDropletsにポイントする方法を学びます。 このガイドでは、次の2つのホスト名の例を使用します。
  • chat.your-domain:1対1のチャットホスト名。
  • room.your-domain:グループチャットルームのホスト名。

このガイドを開始するには、sudo対応のroot以外のユーザーとしてサーバーにログインします。

ステップ1—Prosodyのインストール

このステップでは、カスタムProsody APTリポジトリをサーバーに追加し、そこからProsodyをインストールします。 Prosodyリポジトリを使用して、最新のパッケージを確実にインストールします。

まず、テキストエディタで新しいリポジトリファイルを作成して開きます。 このファイルには、APTパッケージマネージャーのProsodyリポジトリ情報が含まれています。

  1. sudo nano /etc/apt/sources.list.d/prosody.list

次の行をファイルに追加します。

/etc/apt/sources.list.d/prosody.list
deb https://packages.prosody.im/debian bionic main

次に、ProsodyAPT公開鍵をダウンロードしてインストールする必要があります。 サーバーはこれを使用して、ProsodyパッケージがProsodyチームによって作成され、改ざんされていないことを確認します。

次のコマンドは、wgetユーティリティを使用して、現在のディレクトリにキーをダウンロードします。

  1. wget https://prosody.im/files/prosody-debian-packages.key

apt-key addコマンドを使用して、ProsodyのキーをAPTのキーリングに追加します。

  1. sudo apt-key add prosody-debian-packages.key

キーが不要になったため、キーを削除できるようになりました。

  1. rm prosody-debian-packages.key

サーバーのパッケージデータベースを更新して、Prosodyリポジトリからの新しいパッケージバージョンが含まれるようにします。

  1. sudo apt update

これで、Prosodyサーバーパッケージといくつかの追加のオプションパッケージをインストールする準備が整いました。

  1. sudo apt install prosody prosody-modules lua-dbi-sqlite3 lua-event

インストールしたパッケージは次のとおりです。

  • prosody:韻律サーバー。
  • prosody-modules:Prosodyサーバーの機能を拡張する追加のProsodyモジュール。
  • lua-dbi-sqlite3:ProsodyがSQLiteデータベースを使用できるようにします。
  • lua-event:Prosodyがより多くの同時クライアントを処理できるようにします。

これで、Prosodyのインストールが完了しました。 次のステップでは、ProsodyがProsodyサーバーとの間でインターネットを通過するときにデータを暗号化するために使用する2つのTLS証明書を取得します。

ステップ2—TLS証明書を取得する

Prosodyは、TLS証明書を使用して、サーバーとクライアント間の接続を暗号化します。 これらの証明書は、HTTPSURLを使用してWebサイトにアクセスするときに使用するものと同じものです。 Let’s Encrypt は、無料のTLS証明書を提供する非営利団体です。 また、証明書を取得および管理するためのcertbotユーティリティも提供しています。 この手順では、certbotユーティリティをインストールし、それを使用して、サーバーを指定した2つのホスト名の証明書のペアを取得します。

Let’s Encrypt UbuntuPPAリポジトリからcertbotをインストールして、最新のパッケージを使用していることを確認します。

まず、次のコマンドを実行してカスタムリポジトリを追加します。

  1. sudo add-apt-repository ppa:certbot/certbot

次に、certbotをインストールします。

  1. sudo apt install certbot

次に、certbotが証明書アプリケーションを検証できるように、UFWを介したHTTPトラフィックを許可します。

  1. sudo ufw allow http

次のcertbotコマンドを実行すると、ホスト名の1つの証明書が取得されます。

  1. sudo certbot certonly --standalone --agree-tos --email your_email -d chat.your-domain

これらのオプションは次のとおりです。

  • --certonly:証明書を取得し、サーバー上で他の変更を行わないでください。
  • --standalone:証明書検証用の一時的なWebサーバーを起動します。
  • --agree-tos:Let’sEncryptの利用規約に自動的に同意します。
  • --email your_email:Let’s Encryptに送信するメールアドレスで、セキュリティの問題、証明書の有効期限の通知、その他の重要な情報について通知するために使用されます。
  • -d chat.your-domain:Prosodyサーバーに使用する予定のホスト名。

このコマンドを実行すると、電子メールアドレスを Electronic FrontierFoundationと共有するかどうかを尋ねられます。これはオプションです。 その後、証明書の登録は次の出力で続行されます。

Output
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator standalone, Installer None Obtaining a new certificate IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/chat.your-domain/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/chat.your-domain/privkey.pem Your cert will expire on 2020-07-26. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

同じコマンドを再度実行して、2番目のホスト名の証明書を取得します。

これで、次の場所に2つのディレクトリがあります。

  • /etc/letsencrypt/live/room.your-domain
  • /etc/letsencrypt/live/chat.your-domain

これらには、ホスト名の証明書とキーファイルが含まれています。

Prosodyサーバーはrootユーザーとして実行されないため、Prosodyサーバーがそれらを読み取って使用できるように、ディレクトリとキーファイルの所有権と権限を変更する必要があります。

Linuxでのファイルとディレクトリのアクセス許可により、ディレクトリとフォルダの読み取り、書き込み、および実行を実行できるユーザーとプロセスを制御できます。 このコントロールは、システムが許可されていないユーザーによって変更されるのを防ぎ、TLS秘密鍵などの秘密ファイルが許可されていないユーザーによって読み取られるのを防ぎます。

Linuxユーザーとパーミッションに慣れていない場合は、記事Linuxパーミッションの概要に優れた紹介があります。

最初のステップは、次のコマンドを使用して、秘密鍵のグループ所有者をProsodyサーバーのグループprosodyに変更することです。

  1. sudo chgrp prosody /etc/letsencrypt/live/room.your-domain/privkey.pem
  2. sudo chgrp prosody /etc/letsencrypt/live/chat.your-domain/privkey.pem

chgrpユーティリティは、ファイルとディレクトリのグループ所有者を変更します。 ここでは、グループをデフォルトのrootからprosodyに変更しました。

次に、TLS証明書ファイルを含むディレクトリのアクセス許可を0755に変更します。 これらのディレクトリは、rootユーザーとrootグループによって所有されています。 次のコマンドは、これらのディレクトリの権限を変更します。

  1. sudo chmod 0755 /etc/letsencrypt/archive
  2. sudo chmod 0755 /etc/letsencrypt/live

これらのディレクトリに対する0755の新しい権限は、rootユーザーが読み取り、書き込み、および実行の権限を持っていることを意味します。 ルートグループのメンバーには、読み取りおよび実行のアクセス許可があります。 システム上の他のすべてのユーザーとグループには、読み取りと実行のアクセス許可があります。

次に、TLS秘密鍵の権限を変更します。

  1. sudo chmod 0640 /etc/letsencrypt/live/room.your-domain/privkey.pem
  2. sudo chmod 0640 /etc/letsencrypt/live/chat.your-domain/privkey.pem

これらのファイルに対する0640権限は、rootユーザーがファイルに対する読み取りおよび書き込み権限を持っていることを意味します。 prosodyグループのメンバーには、ファイルに対する読み取り権限があります。 prosodyグループには、prosodyユーザーという1つのメンバーがいます。 これは、Prosodyサーバーが実行されるユーザーであり、ファイルにアクセスするユーザーです。 システム上の他のすべてのユーザーには、ファイルにアクセスする権限がありません。

これらの2つのコマンドは、 chmod ユーティリティを使用して、ファイルとディレクトリに対する読み取り、書き込み、および実行のアクセス許可を持つユーザーとグループを変更します。

sudoを使用してcatprosodyユーザーとして秘密鍵ファイルを読み取ることにより、Prosodyが秘密鍵を読み取ることができることをテストできます。

  1. sudo -u prosody cat /etc/letsencrypt/live/chat.your-domain/privkey.pem

これが成功すると、画面に表示されるキーファイルの内容が表示されます。

Prosodyは、証明書と秘密鍵を含む単一のファイルを使用して、ファイルのアップロードとダウンロードの接続を暗号化します。 このファイルはcertbotによって自動的に作成されないため、手動で作成する必要があります。

最初にキーファイルと証明書ファイルを含むディレクトリに移動し、次にcatを使用してそれらの内容を新しいファイルkey-and-cert.pemに結合します。

  1. cd /etc/letsencrypt/live/chat.your-domain/
  2. sudo sh -c 'cat privkey.pem fullchain.pem >key-and-cert.pem'

このコマンドの先頭sudo sh -cは、rootユーザーのアクセス許可を持つ新しいサブシェルを開くため、新しいファイルを/etc/letsencrypt/live/chat.your-domain/に書き込むことができます。

次に、この新しいファイルのグループとアクセス許可を、次のコマンドで他の秘密鍵ファイルに設定したグループとアクセス許可と一致するように変更します。

  1. sudo chmod 0640 key-and-cert.pem
  2. sudo chgrp prosody key-and-cert.pem

ユーザーのホームディレクトリに戻ります。

  1. cd

最後に、このファイルは、証明書が更新されるたびに再作成する必要があります。そうしないと、期限切れの証明書が含まれます。

certbotには、証明書の更新前または更新後にスクリプトを実行できる「フック」と呼ばれるメカニズムが付属しています。 このメカニズムを使用して、証明書が更新されるたびに実行したコマンドを再作成するスクリプトを実行できます。

テキストエディタで/etc/letsencrypt/renewal-hooks/post/key-and-cert-combiner.shという新しいスクリプトファイルを開きます。

  1. sudo nano /etc/letsencrypt/renewal-hooks/post/key-and-cert-combiner.sh

次に、以下をエディターに追加します。

/etc/letsencrypt/renewal-hooks/post/key-and-cert-combiner.sh
#!/usr/bin/env bash
set -e

# combines the certificate and key into a single file with cat
cat /etc/letsencrypt/live/chat.your-domain/privkey.pem \
    /etc/letsencrypt/live/chat.your-domain/fullchain.pem \
   >/etc/letsencrypt/live/chat.your-domain/key-and-cert.pem

これがBashスクリプトの内訳です。

  • #!/usr/bin/env bash:Bashインタープリターを使用してスクリプトを実行するようにシステムに指示します。
  • set -e:いずれかのコマンドが失敗した場合、スクリプトを終了させます。
  • >catコマンドの出力を右側の新しいファイルにリダイレクトします。

次のコマンドを使用して実行権限を付与するまで、スクリプトを実行することはできません。

  1. sudo chmod +x /etc/letsencrypt/renewal-hooks/post/key-and-cert-combiner.sh

+xは、スクリプトに実行権限を与えます。

次に、次のcertbotコマンドを実行して、証明書が正しくインストールされ、更新後のフックスクリプトが機能していることをテストします。

  1. sudo certbot renew --dry-run

このコマンドは、certbotに証明書を更新するように指示しますが、certbotによる変更を停止する--dry-runオプションを使用します。 すべてが成功すると、次の出力が表示されます。

Output
Congratulations, all renewals succeeded. The following certs have been renewed: /etc/letsencrypt/live/chat.your-domain/fullchain.pem (success) /etc/letsencrypt/live/room.your-domain/fullchain.pem (success) ** DRY RUN: simulating 'certbot renew' close to cert expiry ** (The test certificates above have not been saved.) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Running post-hook command: /etc/letsencrypt/renewal-hooks/post/key-and-cert-combiner.sh

これで、ProsodyサーバーのTLS証明書を取得できました。 次のステップでは、Prosodyのメイン構成ファイルを編集します。

ステップ3—韻律を設定する

Prosodyには多くの構成オプションがあり、これはメイン構成ファイル/etc/prosody/prosody.cfg.luaの大きなサイズに反映されています。 このセクションを管理しやすくするために、ファイルの先頭から下に向かって作業し、ファイルを編集します。

大きな構成ファイルの編集を開始する前に、コピーを作成して、参照および復元する元のファイルを用意することをお勧めします。 cpコマンドを使用して、構成ファイルのコピーを作成します。

  1. sudo cp /etc/prosody/prosody.cfg.lua /etc/prosody/prosody.cfg.lua.original

これで、/etc/prosody/prosody.cfg.lua.originalに元のファイルのコピーが作成されました。

次に、テキストエディタで構成ファイルを開きます。

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

次のセクションでは、構成の変更を小さなタスクに分割します。

管理者の作成

Prosody管理者は、チャットクライアントからProsodyサーバーに変更を加えたり、すべてのユーザーにメッセージを送信したり、その他の特権アクションを実行したりできるユーザーです。

Prosodyサーバー管理者は次の行で設定されます。

/etc/prosody/prosody.cfg.lua
...
admins = { }
...

この例の行では、ユーザーadminが例のサーバーchat.your-domainに追加されます。

/etc/prosody/prosody.cfg.lua
...
admins = { "[email protected]" }
...

別のユーザーを追加する場合は、最初のユーザーの後にコンマを置く必要があります。

/etc/prosody/prosody.cfg.lua
...
admins = { "[email protected]", "[email protected]" }
...

Prosodyモジュールの有効化

Prosody開発者は、有効または無効にできるモジュールに多くの機能を組み込んでいます。

モジュールの前にある--を削除すると、モジュールが有効になります。 たとえば、ここでは、tlsモジュールが無効になっています。

Module Disabled
--"tls"; -- Add support for secure TLS on c2s/s2s connections

そしてここでそれが有効になります:

Module Enabled
"tls"; -- Add support for secure TLS on c2s/s2s connections

この段落の後には、Prosody構成ファイルの編集されたモジュールセクションがあり、編集された行が強調表示されています。

/etc/prosody/prosody.cfg.lua
...
modules_enabled = {

        -- Generally required
                "roster"; -- Allow users to have a roster. Recommended ;)
                "saslauth"; -- Authentication for clients and servers. Recommended if you want to log in.
                "tls"; -- Add support for secure TLS on c2s/s2s connections
                "dialback"; -- s2s dialback support
                "disco"; -- Service discovery

        -- Not essential, but recommended
                "carbons"; -- Keep multiple clients in sync
                "pep"; -- Enables users to publish their avatar, mood, activity, playing music and more
                "private"; -- Private XML storage (for room bookmarks, etc.)
                "blocklist"; -- Allow users to block communications with other users
                "vcard4"; -- User profiles (stored in PEP)
                "vcard_legacy"; -- Conversion between legacy vCard and PEP Avatar, vcard

        -- Nice to have
                "version"; -- Replies to server version requests
                "uptime"; -- Report how long server has been running
                "time"; -- Let others know the time here on this server
                "ping"; -- Replies to XMPP pings with pongs
                "register"; -- Allow users to register on this server using a client and change passwords
                "mam"; -- Store messages in an archive and allow users to access it
                "csi_simple"; -- Simple Mobile optimizations

        -- Admin interfaces
                "admin_adhoc"; -- Allows administration via an XMPP client that supports ad-hoc commands
                --"admin_telnet"; -- Opens telnet console interface on localhost port 5582

        -- HTTP modules
                --"bosh"; -- Enable BOSH clients, aka "Jabber over HTTP"
                --"websocket"; -- XMPP over WebSockets
                "http_files"; -- Serve static files from a directory over HTTP
                "http_upload"; -- Enables file sharing between users

        -- Other specific functionality
                --"limits"; -- Enable bandwidth limiting for XMPP connections
                "groups"; -- Shared roster support
                --"server_contact_info"; -- Publish contact information for this service
                "announce"; -- Send announcement to all online users
                --"welcome"; -- Welcome users who register accounts
                --"watchregistrations"; -- Alert admins of registrations
                --"motd"; -- Send a message to users when they log in
                --"legacyauth"; -- Legacy authentication. Only used by some old clients and bots.
                --"proxy65"; -- Enables a file transfer proxy service which clients behind NAT can use
}
...

有効にしたモジュールは次のとおりです。

  • mam:チャットメッセージをサーバーに保存して、ユーザーがメッセージを取得できるようにします。
  • csi_simple:モバイルクライアントの最適化を有効にします。
  • http_files:ファイル共有を有効にします。
  • http_uploads:ファイル共有を有効にします。
  • groups:ユーザーの可視性を有効にします。
  • announce:管理者がすべてのユーザーにアナウンスを送信できるようにします。

データベースストレージの設定

編集する必要がある次のセクションでは、Prosodyがユーザーのメッセージやその他のデータを保存する場所を設定します。 デフォルト設定ではテキストファイルを使用しますが、よりスケーラブルな構成では、メッセージをデータベースに保存します。

Prosodyは、データベースに3つの選択肢を提供します。 MySQL、PostgreSQL、およびSQLite。 SQLiteはセットアップと保守が最も簡単で、使用するリソースが最も少なく、小規模な展開に適しています。

次のように、先頭の--を削除して、次の2行を有効にします。

/etc/prosody/prosody.cfg.lua
...
storage = "sql" -- Default is "internal"
...
sql = { driver = "SQLite3", database = "prosody.sqlite" } -- Default. 'database' is the filename.
...

メッセージアーカイブ

次の行を編集して、サーバーが古いチャットメッセージを保存する期間を決定できます。

/etc/prosody/prosody.cfg.lua
...
archive_expires_after = "1w" -- Remove archived messages after 1 week
...

1wのデフォルト期間(1週間)が表示されます。 dを数日、wを数週間、yを数年使用します。

ファイルのアップロードとダウンロードの暗号化

https_certificate行は、ファイル転送に使用するために以前に作成した証明書とキーの組み合わせを探す場所をProsodyに指示します。

結合されたファイルへのパスを使用するように編集します。

/etc/prosody/prosody.cfg.lua
...
https_certificate = "/etc/letsencrypt/live/chat.your-domain/key-and-cert.pem"
...

localhostを削除しています

デフォルト設定では、Prosodyはlocalhostまたは127.0.0.1でチャット接続をリッスンします。 これは、リモートサーバーでは必要ありません。

--を行に追加して、編集後に次のようになるようにして、この動作を無効にします。

/etc/prosody/prosody.cfg.lua
...
--VirtualHost "localhost"
...

最大ファイルアップロードサイズの変更

Prosodyサーバーは、チャットウィンドウにファイルを添付することにより、ファイルを共有するユーザーをサポートします。 ユーザーが共有できるファイルのデフォルトの最大サイズは1MBです。

構成の最後に次の行を追加して、これをより高い値に設定します。

/etc/prosody/prosody.cfg.lua
...
http_upload_file_size_limit = 10485760
...

行末の数字は、最大ファイルサイズ(バイト単位)です。 ここに表示されるサイズは、10485760バイトまたは10MBです。 GbMb Webサイトは、MBをバイトに変換するための便利なツールを提供します。

10MBを超えるファイルのアップロードを許可する場合は、http_max_content_size変数を設定する別の行を追加する必要があります。 http_max_content_sizeは、ファイルの最大アップロードサイズよりも大きくする必要があります。

ここでは、最大ファイルサイズは20MB(20971520バイト)に設定され、http_max_content_sizeは30MBに設定されています。

/etc/prosody/prosody.cfg.lua
...
http_upload_file_size_limit = 20971520
http_max_content_size = 31457280
...

http_max_content_sizeを最大ファイルサイズより50%大きく設定します。

グループファイルの構成

モジュールセクションで有効にしたgroupsモジュールを使用すると、チャットクライアントはお互いを見ることができます。

groupsモジュールは、グループ名とそのメンバーを保持するファイルを読み取ります。 構成の下部に次の行を追加して、ファイルの場所と名前を設定します。

/etc/prosody/prosody.cfg.lua
...
groups_file = "/etc/prosody/sharedgroups.txt"
...

この行は、グループ情報を収集するために/etc/prosody/sharedgroups.txtでファイルを読み取るようにProsodyを構成します。 手順4で、このファイルにユーザーとグループを入力します。

別の端末で次のコマンドを使用して、このファイルを作成します。

  1. sudo touch /etc/prosody/sharedgroups.txt

touchユーティリティは、追加のオプションが使用されていない場合、空のファイルを作成します。

チャットサーバーの仮想ホスト構成の追加

Prosodyは、VirtualHostで始まる構成ブロックを使用して、ホスト名を使用するチャットサーバーを起動します。

次の構成ブロックを構成の下部に追加します。

/etc/prosody/prosody.cfg.lua
...
VirtualHost "chat.your-domain"
    ssl = {
            key = "/etc/letsencrypt/live/chat.your-domain/privkey.pem";
            certificate = "/etc/letsencrypt/live/chat.your-domain/fullchain.pem";
    }
...

構成オプション:

  • VirtualHost:Prosodyがチャットサーバーに使用するホスト名。
  • key:チャット接続を保護するために使用するTLS秘密鍵。
  • certificate:チャット接続を保護するために使用するTLSプライベート証明書。

チャットルームサーバーの追加

この構成により、Prosodyはマルチユーザーチャットルームをユーザーに提供できます。 次の構成ブロックを、新しいセクションの構成ファイルの下部に追加します。

/etc/prosody/prosody.cfg.lua
...
Component "room.your-domain" "muc"
    modules_enabled = { "mam_muc"; }
    storage = { muc_log = "sql"; }
    ssl = {
          key = "/etc/letsencrypt/live/room.your-domain/privkey.pem";
          certificate = "/etc/letsencrypt/live/room.your-domain/fullchain.pem";
    }
...

使用されるオプション:

  • Componentmuc(マルチユーザーチャット)グループチャットモジュールがroom.your-domainホスト名を使用できるようにします。
  • modules_enabled = { "mam_muc"; }:グループチャットのメッセージアーカイブを有効にします。
  • storage:チャットメッセージをSQLiteデータベースにアーカイブします。
  • key:チャット接続を保護するために使用するTLS秘密鍵。
  • certificate:チャット接続を保護するために使用するTLSプライベート証明書。

エディターを保存して終了します。

ここで、Prosodyを再起動して、新しい構成を公開します。

  1. sudo systemctl restart prosody.service

これで、Prosodyのメイン構成ファイルの編集が完了しました。 次のステップでは、Prosodyユーザーを追加し、それらをグループに追加します。

ステップ4—Prosodyユーザーとグループの追加

ユーザーがログインする前に、コマンドラインでProsodyサーバーにProsodyユーザーを追加する必要があります。 prosodyパッケージに付属のprosodyctlツールを使用して、Prosodyサーバーの管理に役立てます。

次のprosodyctlコマンドを使用して、新しいユーザーを追加します。

  1. sudo prosodyctl register sammy chat.your-domain password

これで、このユーザーはProsodyサーバーに接続できます。

あなたが彼らがお互いを見て、彼らのステータスを見ることができるいくつかのグループを作成するならば、あなたのユーザーはそれを高く評価するでしょう。 これを行うには、グループを作成し、前に定義したグループファイルを使用してグループにユーザーを追加します。

グループファイルを開きます。

  1. sudo nano /etc/prosody/sharedgroups.txt

グループは、その名前を角かっこで囲むことによって設定されます。 グループのメンバーは、グループ名の下の新しい行に配置されます。 必要な数のグループを作成でき、ユーザーは複数のグループのメンバーになることができます。

これは、sammyadminの2つのメンバーを持つEveryoneというグループです。

/etc/prosody/sharedgroups.txt
[Everyone]
sammy@chat.your-domain
admin@chat.your-domain

同じグループのすべてのメンバーは、オンラインであるかどうかに関係なく、他のメンバーを「見る」ことができます。

新しいユーザーを追加したり、グループ情報を変更したりするときはいつでも、Prosodyサーバーを再起動する必要があります。

  1. sudo systemctl restart prosody.service

サーバー構成に残っているのは、Prosodyがファイアウォールを介して通信できるようにすることだけです。これは次のセクションで行います。

ステップ5—ファイアウォールを通過する韻律トラフィックを許可する

Prosodyは、TCPポート5222および5322でクライアントからの接続をリッスンします。 次のコマンドを使用して、UFWでこれらのポートを開きます。

  1. sudo ufw allow 5222,5322/tcp

これで、韻律サーバーが完全にインストールおよび構成されました。

これで、チャットクライアントを使用してProsodyサーバーに接続できます。 次のステップでは、Prosodyサーバーに接続するようにローカルシステムまたはスマートフォンでXMPPクライアントを構成します。

ステップ6—XMPPチャットクライアントの設定

このステップでは、XMPPクライアントをProsodyサーバーに構成します。 接続するには、ユーザー名、サーバーのホスト名、およびパスワードを入力する必要があります。

標準のXMPPポートを使用するようにProsodyサーバーを構成すると、TLSセキュリティが自動的に処理されるため、クライアントに接続するためにそれらを設定する必要はありません。

さまざまなチャットクライアントが、さまざまな形式でユーザー名、パスワード、およびサーバーのホスト名を要求する場合があります。 ユーザー名とサーバーのホスト名は、[email protected]のようにメールアドレスのようにまとめられることがあります。 電子メールのようなアドレスは、ユーザー名またはXMPPアドレスと呼ぶことができます。

この画像は、 PSI クライアントのログイン画面を示しています。この画面では、ユーザー名とサーバーのホスト名を電子メールアドレス形式で入力する必要があります。

一方、LinuxXMPPクライアントGajim のアカウントログイン画面の次のスクリーンショットは、ユーザー名とホスト名に別々の入力フィールドが与えられていることを示しています。

XMPPクライアントは、ログインするためにユーザー名、パスワード、およびサーバーのホスト名以外の詳細を必要としません。 ログインすると、チャットグループの他のメンバーを見つけることができ、クライアントがサポートするグループチャットルームを作成することもできます。

結論

この記事では、次の機能を備えたProsodyサーバーをセットアップします。

  • TLS暗号化
  • 1対1のチャットルームとグループチャットルーム。
  • ファイル共有

また、これらすべての機能を使用するようにXMPPチャットクライアントを構成して、友人や同僚との機能豊富なチャットを提供しました。

リモート通信のさらにオープンソースの代替手段を探している場合は、JitsiMeetのインストール方法チュートリアルを確認してください。