この記事では、家庭用、場合によっては企業用に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" }
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)データベースへの通信の設定を追加します。 必要な行の前に、「-」を削除し、目的のデータベースにアクセスするためにデータを独自に変更します
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であなたの質問に答えてくれるといいのですが。