軽量Jabber Prosodyサーバーのインストール(v0.9およびv0.10beta)

この記事では、家庭用、場合によっては企業用にJabber Prosodyサーバーをセットアップする方法について説明します。 私の仕事は、他のジャバーサーバー、会議との通信をサポートして、履歴を保持し(おそらくXEP-0136クライアントと同期する)、私のジャバーサーバーを上げることでした。 一般に、すべてが標準で特別なものではありませんが、サーバーを上げたときに、今日お話しする予定の2つの問題に遭遇しました。



Prosodyは、多くのXEP(XMPP拡張プロトコル)標準をサポートするluaで書かれた軽量のジャバーサーバーです。このページで 、サポートされているすべての標準を確認できます 。 「why lua」という質問に対して、韻律のマシューワイルドの作成者は、これは非常にシンプルな言語であり、クイックインタプリタを備えているため、このような異常な選択の理由であると言います。



この記事では、Debian 7に韻律をインストールします。



まず、必要なリポジトリをsource.listに追加する必要があります。

$ echo deb http://packages.prosody.im/debian $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list
      
      





キーを適用する必要がある後:

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





リポジトリを更新する必要があります:

 $ sudo apt-get update
      
      





その後、Prosody v0.9およびv0.10をインストールするための2つのバージョンがあります



Prosody 0.9をインストールします



現在安定しているバージョン0.9のインストール:

 $ sudo apt-get install prosody
      
      





ファイルに韻律を設定します。このため、ファイル「/etc/prosody/prosody.cfg.lua」にある設定を微調整する必要があります。設定全体をすぐにコメント付きで提供します。

 admins = { "user@example.com" } --   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 "posix"; -- POSIX functionality, sends server to background, enables syslog, etc. -- Not essential, but recommended "private"; -- Private XML storage (for room bookmarks, etc.) "vcard"; -- Allow users to set vCards -- These are commented by default as they have a performance impact --"privacy"; -- Support privacy lists --"compression"; -- Stream compression (requires the lua-zlib package installed) -- 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 "pep"; -- Enables users to publish their mood, activity, playing music and more "register"; -- Allow users to register on this server using a client and change passwords -- 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 } modules_disabled = { } allow_registration = false --       ssl = { --  ssl ,    key = "/etc/prosody/certs/localhost.key"; certificate = "/etc/prosody/certs/localhost.crt"; } c2s_require_encryption = true --  -  s2s_secure_auth = false pidfile = "/var/run/prosody/prosody.pid" authentication = "internal_hashed" --   (    ) storage = "internal" --     log = { info = "/var/log/prosody/prosody.log"; error = "/var/log/prosody/prosody.err"; "*syslog"; } VirtualHost "example.com" --     jabber  ssl = { --       key = "/etc/prosody/certs/example.com.key"; certificate = "/etc/prosody/certs/example.com.crt"; }
      
      





example.comはどこでもドメインに置き換える必要があります。その後、キーを生成する必要があります。

 $ sudo prosodyctl cert generate example.com $ sudo cp /usr/lib/prosody/example.com* /etc/prosody/certs/
      
      





新しいユーザーを登録し、韻律を再起動します。

 $ sudo prosodyctl register user example.com password $ sudo prosodyctl restart
      
      





これでサーバーにログインできますが、韻律サーバー内で排他的に通信できます。s2s(サーバー間の通信)を構成する場合は、srv dnsにいくつかのエントリを登録する必要があります。

_xmpp-client._tcp.example.com。 18000 IN SRV 0 5 5222 xmpp.example.com。

_xmpp-server._tcp.example.com。 18000 IN SRV 0 5 5269 xmpp.example.com

jabber._tcp.example.com。 18000 IN SRV 0 5 5269 xmpp.example.com


データが適用されるとすぐに、s2s通信を獲得する必要があります。jabber.ruの会議に接続するか、連絡先リストに追加して、s2sをサポートするjabberサーバーを使用するユーザーと通信できます。



すべて正常に動作しますが、メッセージ履歴を設定するために残されています。デフォルトではprosodyはサポートしていません。このため、「mod_message_logging」と呼ばれるprosody -modulesからモジュールをインストールする必要があります。

韻律にモジュールをインストールするための2つのオプションがあります。

1)モジュールコードの内容を含むluaファイルを/ usr / lib / modulesディレクトリにコピーし、modules_enabledセクションの構成に追加する必要があります。

 modules_enabled = { ... "message_logging"; ... }
      
      





2)prosody-modulesを任意のディレクトリに複製し、prosodyユーザーに読み取り権限を付与して、これを構成に追加します。

 plugin_paths = { "/usr/lib/prosody/modules", "/path/to/prosody-modules" } ... modules_enabled = { ... "message_logging"; ... }
      
      





サーバーを再起動します。

 $ prosodyctl restart
      
      





そして、/ var / lib / prosody / message_logging /のメッセージ履歴に感心します。 ご覧のとおり、1日間のメッセージ履歴全体が、許可されたユーザーごとにサーバー上の1つのファイルに書き込まれます。つまり、/ var / lib / prosody / message_logs / example.com / 2013-12-20 / user.msglogにはこのユーザーのログが含まれます彼のすべての連絡先と一日中。

この実装は私にとって非常に不便なようでした。韻律会議では、メッセージ履歴の通常の実装はなく、mod_message_loggingを少し変更し、 mod_message_loggind_diff_filesも最後のモジュールの問題を少し修正し、そのようなディレクトリ/ファイル構造-パス/ var / lib / prosody / message_logsに沿って/example.com/2013-12-20/userディレクトリにすべてのファイルとメッセージ履歴があり、すべてのファイル名は連絡先または会議のjidです(たとえば、「prosody%40conference.prosody.im.msglog」)。



標準のmod_message_loggingと同様に接続できます。



ここで韻律サーバーのセットアップを完了することができますが、一部のユーザーはサポートXER-0136(ログのクライアントへの同期)を使用してモジュールを接続します。このモジュールはmod_mamと呼ばれますが、開発者によると、このモジュールはファイルで非常にゆっくりと動作し、誰かが切り替えたいだけですデータベース上ではありますが、韻律0.9には問題があります。

データベースへの接続がない場合にprosodyが起動したときにsqlにデータを保存するためのモジュールの現在の実装は、重大なエラーで抜け落ち、prosodyは起動しません。 この問題はdebianとcentosで急激に発生します。これらのブートシステムでは、目的のアプリケーションを実行するためにデータベースが完全に初期化されるのを待つことができませんが、0.10で利用可能なsql2モジュールでは、この問題を修正し、prosody 0.10 + mod_mamを設定できます。



Prosody 0.10をインストールします



バージョン0.10のインストール、現在ベータ版:

 $ sudo apt-get install prosody-0.10
      
      





次に、バージョン0.9の場合と同様に、少し変更を加えてすべてを繰り返します。

1)データストレージの場所を内部からsql2に変更します

 storage = "sql2"
      
      





2)データベースへの通信の設定を追加します。 必要な行の前に、「-」を削除し、目的のデータベースにアクセスするためにデータを独自に変更します

 --sql = { driver = "SQLite3", database = "prosody.sqlite" } -- Default. 'database' is the filename. --sql = { driver = "MySQL", database = "prosody", username = "prosody", password = "secret", host = "localhost" } --sql = { driver = "PostgreSQL", database = "prosody", username = "prosody", password = "", host = "localhost" }
      
      





3)sqliteなど、目的のデータベースと通信するためにluaドライバーをインストールします

 $ sudo apt-get install lua-dbi-sqlite3
      
      





データベースにログインするためのモジュールは、「mod_mam」という名前のprosody -modulesにありますが、メッセージ履歴をファイルに書き込むモジュールとは異なり、このモジュールはプライベートメッセージのみを保存します。 会議からのメッセージの履歴が必要な場合は、mod_message_loggingまたはmod_message_loggind_diff_filesを設定する必要があります。 会議メッセージmod_mam_mucを保存するモジュールもありますが、サーバーで発生したローカル会議からのメッセージのみを保存します(そのようなモジュールが有用な場合)。

韻律にモジュールをインストールするための2つのオプションがあります。

1)モジュールコードの内容を含むluaファイルを/ usr / lib / modulesディレクトリにコピーし、modules_enabledセクションの構成に追加する必要があります。

 modules_enabled = { ... "mam"; ... }
      
      





2)prosody-modulesを任意のディレクトリに複製し、prosodyユーザーに読み取り権限を付与して、これを構成に追加します。

 plugin_paths = { "/usr/lib/prosody/modules", "/path/to/prosody-modules" } ... modules_enabled = { ... "mam"; ... }
      
      





サーバーを再起動します。

 $ prosodyctl restart
      
      





韻律を再起動した後、ファイル内のメッセージと会議の履歴、およびクライアントと同期したデータベース内のプライベートメッセージの履歴を構成します。



可能であれば、コメントやPMであなたの質問に答えてくれるといいのですが。



All Articles