「Prosody」の版間の差分
(ページの作成:「Category:インターネットアプリケーション de:Prosody en:Prosody [http://prosody.im/ Prosody] (発音: [http://www.merriam-webster.com/cgi-bin/aud...」) |
Kusanaginoturugi (トーク | 投稿記録) (→コンソール: 翻訳) |
||
(4人の利用者による、間の11版が非表示) | |||
1行目: | 1行目: | ||
− | [[Category: |
+ | [[Category:XMPP]] |
[[de:Prosody]] |
[[de:Prosody]] |
||
[[en:Prosody]] |
[[en:Prosody]] |
||
+ | [https://prosody.im/ 公式ウェブサイト] より: |
||
− | [http://prosody.im/ Prosody] (発音: [http://www.merriam-webster.com/cgi-bin/audio.pl?prosod05.wav=prosody%27 1], [http://www.merriam-webster.com/cgi-bin/audio.pl?prosod04.wav=prosody%27 2]) は [http://www.lua.org/ Lua] プログラミング言語で書かれた [http://xmpp.org/ XMPP] サーバーです。Prosody は軽量で簡単に拡張できるように設計されています。制限の緩い [http://prosody.im/source/mit MIT ライセンス] でライセンスされています。Prosody は Arch Linux の Community リポジトリからインストールすることができ、[[Arch User Repository]] には複数の任意の依存パッケージがあります。 |
||
+ | :Prosody は近代的な XMPP 通信サーバーです。簡単にセットアップ・設定ができ、効率的にシステムリソースを使用するように作られています。さらに、開発者が簡単に拡張できる柔軟性のあるシステムとして設計されており、機能の追加や新しいプロトコルのプロトタイプ作成を素早く行うことができます。 |
||
− | このガイドを読むときは、AUR のパッケージのビルド・インストール方法と XMPP の基礎知識を知っておくと役に立ちます。 |
||
==インストール== |
==インストール== |
||
− | + | {{Pkg|prosody}} パッケージを[[インストール]]してください。 |
|
===任意の依存パッケージ=== |
===任意の依存パッケージ=== |
||
14行目: | 14行目: | ||
; TLS/SSL サポート (推奨) |
; TLS/SSL サポート (推奨) |
||
− | : 盗聴されないように Prosody でストリームを暗号化できるようになります。<br>''必要パッケージ:'' {{Pkg| |
+ | : 盗聴されないように Prosody でストリームを暗号化できるようになります。<br>''必要パッケージ:'' {{Pkg|lua52-sec}} |
− | ; MySQL バックエンド |
+ | ; MySQL/Postgresql バックエンド |
− | : mariadb |
+ | : MySQL/mariadb/Postgresql バックエンドを Prosody で使えるようになり拡張性やパフォーマンスが上がります。<br>''必要パッケージ:'' {{Pkg|lua52-dbi}} |
+ | {{Warning| |
||
+ | * {{Pkg|lua51-dbi}} は上流からは外されています。{{Bug|53081}} を参照してください。 |
||
+ | * 有効にすると Prosody はデフォルトでデータベースに平文でパスワードを保存します。[https://prosody.im/doc/modules/mod_auth_internal_hashed mod_auth_internal_hashed] などのハッシュ化認証モジュールを使うことを推奨します。}} |
||
; 接続スケーリングの向上 (推奨) |
; 接続スケーリングの向上 (推奨) |
||
− | : [http://www.monkey.org/~provos/libevent/ libevent] を使うことで大量の同時接続を処理できるようになります。<br>''必要パッケージ:'' {{AUR| |
+ | : [http://www.monkey.org/~provos/libevent/ libevent] を使うことで大量の同時接続を処理できるようになります。<br>''必要パッケージ:'' {{AUR|lua52-event}} |
+ | {{Note|luaevent を有効にすると全ての s2s 機能が破壊されるバグが存在しましたが、v0.10 で修正されました [https://prosody.im/issues/issue/555]。}} |
||
; ストリームの圧縮 |
; ストリームの圧縮 |
||
− | : クライントからサーバーへのストリームを圧縮して対応するクライアントで帯域を節約することができます。<br>''必要パッケージ:'' {{ |
+ | : クライアントからサーバーへのストリームを圧縮して対応するクライアントで帯域を節約することができます。<br>''必要パッケージ:'' {{AUR|lua52-zlib}} |
− | |||
− | ; Cyrus SASL サポート |
||
− | : [http://asg.web.cmu.edu/sasl/sasl-library.html Cyrus SASL] ライブラリを使って Prosody で認証ができるようになります。<br>''必要パッケージ:'' {{AUR|lua-cyrussasl}} (AUR) |
||
==設定== |
==設定== |
||
− | {{Note|The {{Ic|posix}} module and {{Ic|pidfile}} setting contained in the default configuration file are required for Prosody's proper operation |
+ | {{Note|The {{Ic|posix}} module and {{Ic|pidfile}} setting contained in the default configuration file are required for Prosody's proper operation.}} |
− | + | メイン設定ファイルは {{ic|/etc/prosody/prosody.cfg.lua}} です。Prosody の設定方法は Prosody の [https://prosody.im/doc/configure ドキュメント] に載っています。以下のコマンドを実行することで設定ファイルの構文チェックをすることができます: |
|
− | + | # luac5.1 -p /etc/prosody/prosody.cfg.lua |
|
+ | 構文が正しければ何も出力されません。 |
||
− | No output means the syntax is correct. |
||
===ログ=== |
===ログ=== |
||
42行目: | 43行目: | ||
==制御== |
==制御== |
||
+ | |||
+ | systemd サービスの {{ic|prosody.service}} を[[起動]]・[[有効化]]してください。 |
||
+ | Prosody はデフォルトの XMPP ポートである 5222 (クライアントからサーバーへの通信) と 5269 (サーバーからサーバーへの通信) を使用します。必要に応じてファイアウォールを設定してください。 |
||
− | You can start Prosody through the included Systemd script: |
||
+ | {{Ic|prosodyctl}} プログラムを使うことで Prosody ユーザーを操作できます。ユーザーを追加するには: |
||
− | # systemctl start prosody |
||
+ | # prosodyctl adduser ''<JID>'' |
||
− | To automatically start Prosody at boot execute: |
||
− | |||
− | # systemctl enable prosody |
||
− | |||
− | Prosody uses the default XMPP ports, 5222 and 5269, for client-to-server and server-to-server communications respectively. Configure your firewall as necessary. |
||
− | |||
− | You can manipulate Prosody users by using the {{Ic|prosodyctl}} program. To add a user: |
||
− | |||
− | # prosodyctl adduser <JID> |
||
{{Tip|You will likely want to make at least one user an administrator by adding their Jabber ID to the {{Ic|admins}} list in the configuration file.}} |
{{Tip|You will likely want to make at least one user an administrator by adding their Jabber ID to the {{Ic|admins}} list in the configuration file.}} |
||
− | + | 詳しくは {{man|1|prosodyctl}} を参照してください。 |
|
===セキュリティ=== |
===セキュリティ=== |
||
====ユーザー登録==== |
====ユーザー登録==== |
||
+ | Prosody は XMPP のインバンド登録 [http://xmpp.org/extensions/xep-0077.html 標準] に対応しており、ユーザーは XMPP クライアントを使って登録を行ったりパスワードを変更することができます。ユーザーにとっては便利ですが、管理者は新しいユーザーの登録を止めることができません。そのため、デフォルト設定では {{Ic|register}} モジュールは有効になっていますが {{Ic|allow_registration}} は {{Ic|false}} に設定されています。クライアントからユーザーができるのはパスワードを変更することだけで、新しいユーザーを登録することはできなくなっています。 |
||
− | Prosody supports XMPP's in-band registration [http://xmpp.org/extensions/xep-0077.html standard], which allows users to register with an XMPP client from within their client and change their passwords. While this is convenient for users it does not allow administrators to moderate the registration of new users. As such, the {{Ic|register}} module is enabled in the default configuration but {{Ic|allow_registration}} is set to {{Ic|false}}. This allows existing users to change their passwords from within their client but does not allow new users to register themselves. |
||
− | {{Tip| |
+ | {{Tip|インバンド登録を有効にする場合、{{Ic|watchregistrations}} と {{Ic|welcome}} モジュールが役に立つでしょう。}} |
====ストリームの暗号化==== |
====ストリームの暗号化==== |
||
+ | Prosody では TLS 証明書を使ってクライアントからサーバーへの通信を暗号化することができます ([[#任意の依存パッケージ|依存パッケージ]]のインストールが必要です)。{{ic|prosody.cfg.lua}} の該当セクションを参照して証明書を使うように Prosody を設定してください。 |
||
− | Prosody can utilize TLS certificates to encrypt client-to-server communications (if the proper [[#Optional Dependencies|dependencies]] are installed). See the relevant sections of {{ic|prosody.cfg.lua}} to configure Prosody to utilize these certificates. |
||
+ | 以下を設定ファイルに追加することでクライアントからサーバーへの通信の暗号化を必須にできます: |
||
− | To require encryption for client-to-server communications add the following to your configuration file: |
||
{{hc|/etc/prosody/prosody.cfg.lua|2= |
{{hc|/etc/prosody/prosody.cfg.lua|2= |
||
Host "*" |
Host "*" |
||
77行目: | 72行目: | ||
}} |
}} |
||
+ | 同じように、サーバーからサーバーへの通信を暗号化するには: |
||
− | Similarly, for server-to-server communications you may do: |
||
{{hc|/etc/prosody/prosody.cfg.lua|2= |
{{hc|/etc/prosody/prosody.cfg.lua|2= |
||
Host "*" |
Host "*" |
||
84行目: | 79行目: | ||
}} |
}} |
||
+ | クライアントからサーバーへの暗号化を必須にすることは問題ありませんが、サーバーからサーバーへの暗号化は Google Talk/Gmail など人気の XMPP サービスが対応していないので注意してください。 |
||
− | While requiring client-to-server encryption is generally a good idea, please keep in mind that some popular XMPP services such as Google Talk/Gmail do not support server-to-server encryption. |
||
===ユーザーの表示=== |
===ユーザーの表示=== |
||
+ | 登録されているユーザーのリストを確認するには: |
||
− | A simple way to see a list of the registered users is |
||
# ls -l /var/lib/prosody/*/accounts/* |
# ls -l /var/lib/prosody/*/accounts/* |
||
− | + | もしくは [https://prosody.im/files/mod_listusers.lua mod_listusers.lua] モジュールをダウンロードして以下のように使うこともできます: |
|
# prosodyctl mod_listusers |
# prosodyctl mod_listusers |
||
==削除== |
==削除== |
||
− | + | pacman で Prosody をアンインストールしても {{ic|/etc/prosody}} と {{ic|/var/lib/prosody}} ディレクトリは消えません。Prosody を再インストールすることがないのであれば削除すると良いでしょう。 |
|
+ | ==ヒントとテクニック== |
||
− | ==Tips and tricks== |
||
===コンポーネント=== |
===コンポーネント=== |
||
− | Prosody supports XMPP components, which provide extra services to clients. Components are either provided internally by special Prosody modules or externally using the protocol specified in [http://xmpp.org/extensions/xep-0114.html XEP-0114]. |
||
+ | Prosody は XMPP コンポーネントをサポートしており、これによりクライアントに追加サービスを提供します。コンポーネントは、特別な Prosody モジュールによって内部で提供されるか、[https://xmpp.org/extensions/xep-0114.html XEP-0114] で指定されたプロトコルを使用して外部で提供されます。 |
||
− | {{Note|Components must use a different hostname from the {{Ic|VirtualHost}} names defined in {{Ic|prosody.cfg.lua}}. Attempting to host a component on the same hostname as a defined {{Ic|VirtualHost}} '''will''' result in errors.}} |
||
+ | {{Note|コンポーネントは {{Ic|prosody.cfg.lua}} に定義された {{Ic|VirtualHost}} 名とは異なるホスト名を使用する必要があります。定義された {{Ic|VirtualHost}} と同じホスト名でコンポーネントをホストしようとすると、エラーが発生します。}} |
||
− | By default, Prosody will listen for external components. If you do not plan to use any external components with Prosody you can disable this behavior by adding the following your configuration: |
||
+ | |||
+ | デフォルトでは、Prosody は外部コンポーネントを待ち受けます。Prosody で外部コンポーネントを使用する予定がない場合は、次の設定を追加することでこの動作を無効にできます: |
||
{{hc|/etc/prosody/prosody.cfg.lua|2= |
{{hc|/etc/prosody/prosody.cfg.lua|2= |
||
109行目: | 105行目: | ||
}} |
}} |
||
+ | ====マルチユーザーチャット==== |
||
− | ====Multi-User Chat==== |
||
+ | |||
− | A common component used with XMPP servers is Multi-User Chat (MUC), which allows conferences between multiple users. MUC is provided as an internal component with Prosody. To enable MUC add the following to your configuration file: |
||
+ | XMPP サーバーで一般的に使用されるコンポーネントの一つに Multi-User Chat (MUC) があります。これは複数のユーザー間での会議を可能にします。MUC は Prosody の内部コンポーネントとして提供されています。MUC を有効にするには、次の設定を構成ファイルに追加します: |
||
{{hc|/etc/prosody/prosody.cfg.lua| |
{{hc|/etc/prosody/prosody.cfg.lua| |
||
116行目: | 113行目: | ||
}} |
}} |
||
− | + | これにより、ホスト {{Ic|conference.example.com}} で MUC コンポーネントが有効になります。 |
|
===Prosody モジュール=== |
===Prosody モジュール=== |
||
− | [http://code.google.com/p/prosody-modules/ Prosody Modules] is a collection of extra modules not distributed with Prosody. These modules are in various states of development from highly experimental to relatively stable. You should consult a given module's wiki page for more information. An example of an extra module is {{Ic|[http://code.google.com/p/prosody-modules/wiki/mod_pastebin pastebin]}}, which when loaded will intercept long messages (for example, log file output) and replace them with a link to a pastebin hosted using Prosody's internal HTTP server (provided by the core module, {{Ic|httpserver}}). |
||
+ | [https://prosody.im/community_modules Prosody Modules] は、Prosody に同梱されていない追加モジュールのコレクションです。これらのモジュールは、高度に実験的なものから比較的安定したものまでさまざまな開発段階にあります。各モジュールの詳細については、そのモジュールの wiki ページを参照してください。追加モジュールの一例として {{Ic|[https://code.google.com/p/prosody-modules/wiki/mod_pastebin pastebin]}} があり、これを読み込むと長いメッセージ(例えば、ログファイルの出力)をインターセプトし、Prosody の内部 HTTP サーバー(コアモジュール {{Ic|httpserver}} によって提供)を使用してホストされた pastebin へのリンクに置き換えます。 |
||
− | To use an extra module download its raw file(s) from the source browser (when viewing a file, search for the link "View raw file"). Alternatively and likely easier, use Mercurial to clone the entire repository: |
||
+ | 追加モジュールを使用するには、ソースブラウザから生ファイルをダウンロードします(ファイルを表示中に「View raw file」というリンクを探します)。あるいは、おそらくより簡単な方法として、Mercurial を使用してリポジトリ全体をクローンします: |
||
− | {{Ic|$ hg clone <nowiki>https://prosody-modules.googlecode.com/hg/ prosody-modules</nowiki>}} |
||
+ | ;Prosody 0.9+ |
||
− | Now you can copy the module (and any additional files it needs) to Prosody's module directory at {{ic|/usr/lib/prosody/modules}}. To enable the module add it to your {{Ic|modules_enabled}} list in your {{ic|prosody.cfg.lua}} for the host or component you wish to use it for. For example, to use the {{Ic|pastebin}} module on a MUC component: |
||
+ | {{Ic|$ hg clone <nowiki>https://hg.prosody.im/prosody-modules/ prosody-modules</nowiki>}} |
||
+ | |||
+ | ;Prosody 0.8 |
||
+ | {{Ic|$ hg clone <nowiki>http://0-8.prosody-modules.googlecode.com/hg/ prosody-modules</nowiki>}} |
||
+ | |||
+ | これで、モジュール(および必要な追加ファイル)を Prosody のモジュールディレクトリ {{ic|/usr/lib/prosody/modules}} にコピーできます。モジュールを有効にするには、使用するホストまたはコンポーネントの {{Ic|prosody.cfg.lua}} 内の {{Ic|modules_enabled}} リストに追加します。例えば、MUC コンポーネントで {{Ic|pastebin}} モジュールを使用するには: |
||
{{hc|/etc/prosody/prosody.cfg.lua|2= |
{{hc|/etc/prosody/prosody.cfg.lua|2= |
||
132行目: | 134行目: | ||
}} |
}} |
||
− | {{Note| |
+ | {{Note|Prosody の規則として、モジュールは {{Ic|mod_''foo''.lua}} という名前になりますが、単に {{Ic|modules_enabled}} リストに {{Ic|''foo''}} を追加することで有効化されます。}} |
===コンソール=== |
===コンソール=== |
||
− | {{Warning|The console does not require any authentication so any user on a multi-user system can connect and issue commands on the console. Therefore it is '''not''' recommended to enable the {{Ic|console}} module on a multi-user system.}} |
||
+ | {{Warning|コンソールは認証を必要としないため、マルチユーザーシステム上の任意のユーザーが接続してコンソール上でコマンドを実行できます。したがって、マルチユーザーシステムで {{Ic|console}} モジュールを有効にすることは推奨されません。}} |
||
− | The {{Ic|console}} module provides a telnet console from which administrative operations and queries can be performed. You can connect to the console by issuing: |
||
+ | |||
+ | {{Ic|console}} モジュールは、管理操作やクエリを実行できる telnet コンソールを提供します。コンソールに接続するには、以下のコマンドを実行します: |
||
{{Ic|$ telnet localhost 5582}} |
{{Ic|$ telnet localhost 5582}} |
||
+ | もちろん、{{Ic|inetutils}} パッケージで提供される {{Ic|telnet}} プログラムが必要です。コンソールで {{Ic|help}} コマンドを使用して使用方法のヘルプを取得できます。 |
||
− | You of course need the {{Ic|telnet}} program provided by the {{Ic|inetutils}} package. Use the {{Ic|help}} command in the console to get usage help. |
||
+ | コンソールでは、コマンドの前に {{Ic|>}} を付けることで Lua コマンドを直接サーバー上で実行することもできます。例えば、クライアント接続が圧縮されているかどうかを確認するには: |
||
− | The console even allows you to execute Lua commands directly on the server by preceding a command with {{Ic|>}}. For example to see if a client connection is compressed: |
||
{{Ic|> full_sessions["romeo@montague.lit/Resource"].compressed}} |
{{Ic|> full_sessions["romeo@montague.lit/Resource"].compressed}} |
||
− | + | 接続が圧縮されている場合は {{Ic|true}}、されていない場合は {{Ic|nil}} が返されます。 |
|
==トラブルシューティング== |
==トラブルシューティング== |
||
One of Prosody's primary design principles is to be simple to use and configure. However, issues can still arise (and likely will as is the case with any complex software). If you encounter a problem there are a variety of steps you can take to narrow down the cause: |
One of Prosody's primary design principles is to be simple to use and configure. However, issues can still arise (and likely will as is the case with any complex software). If you encounter a problem there are a variety of steps you can take to narrow down the cause: |
||
− | * '''Check for known issues'''<br>Look at the [ |
+ | * '''Check for known issues'''<br>Look at the [https://prosody.im/doc/release release notes] for your Prosody version to see if your issue is listed as a known issue. Also check the [https://prosody.im/issues/list issue tracker] to see if your issue has already been reported. |
* '''Check configuration syntax'''<br>Run {{Ic|luac5.1 -p /etc/prosody/prosody.cfg.lua}} to check for any syntax errors in your configuration file. If there is no output your syntax is fine. |
* '''Check configuration syntax'''<br>Run {{Ic|luac5.1 -p /etc/prosody/prosody.cfg.lua}} to check for any syntax errors in your configuration file. If there is no output your syntax is fine. |
||
* '''Check the log'''<br>Errors are only logged if there is a critical problem so always address those issues. If you think you have a very low level issue (like protocol compatibility between clients and servers with Prosody) then you can enable the very verbose debug level logging. |
* '''Check the log'''<br>Errors are only logged if there is a critical problem so always address those issues. If you think you have a very low level issue (like protocol compatibility between clients and servers with Prosody) then you can enable the very verbose debug level logging. |
||
161行目: | 164行目: | ||
If you are unable to resolve your issue yourself there are a variety of resources you can use to seek help. In order of immediacy with which you will likely receive help: |
If you are unable to resolve your issue yourself there are a variety of resources you can use to seek help. In order of immediacy with which you will likely receive help: |
||
− | # XMPP |
+ | # XMPP カンファレンス: {{Ic|prosody@conference.prosody.im}} |
− | # |
+ | # メーリングリスト: {{ic|prosody-users@googlegroups.com}}, [https://groups.google.com/forum/#!forum/prosody-users web interface] |
− | # [https://bbs.archlinux.org/viewforum.php?id=4 Arch |
+ | # [https://bbs.archlinux.org/viewforum.php?id=4 Arch フォーラム] (パッケージの問題についてのみ) |
==開発== |
==開発== |
||
− | Two development packages are maintained for Prosody in the AUR, {{AUR|prosody-devel}} and {{AUR|prosody-hg}}. {{Ic|prosody-devel}} tracks the latest source release of a development version (alpha, beta, release candidate) and will actually be behind the stable version if a final version of the development version is released. {{Ic|prosody-hg}} tracks the [http://www.selenic.com/mercurial/wiki/ Mercurial] repository tip for Prosody and will always contain the latest code as it is checked in. Both packages are built similarly to the stable package. |
+ | Two development packages are maintained for Prosody in the AUR, {{AUR|prosody-devel}}{{Broken package link|{{aur-mirror|prosody-devel}}}} and {{AUR|prosody-hg}}. {{Ic|prosody-devel}} tracks the latest source release of a development version (alpha, beta, release candidate) and will actually be behind the stable version if a final version of the development version is released. {{Ic|prosody-hg}} tracks the [http://www.selenic.com/mercurial/wiki/ Mercurial] repository tip for Prosody and will always contain the latest code as it is checked in. Both packages are built similarly to the stable package. |
==コミュニティ== |
==コミュニティ== |
||
− | * メーリングリスト: [ |
+ | * メーリングリスト: [https://groups.google.com/forum/#!forum/prosody-dev prosody-dev], [https://groups.google.com/forum/#!forum/prosody-users prosody-users] |
* カンファレンス: {{Ic|prosody@conference.prosody.im}} |
* カンファレンス: {{Ic|prosody@conference.prosody.im}} |
||
− | * ブログ: [ |
+ | * ブログ: [https://blog.prosody.im/ Prosodical Thoughts] |
== 参照 == |
== 参照 == |
||
− | * [ |
+ | * [https://prosody.im/doc 公式ドキュメント] |
− | * [ |
+ | * [https://blog.prosody.im/ Prosodical Thoughts] (ブログ) |
− | * [ |
+ | * [https://prosody.im/issues/ Issue Tracker] |
− | * [ |
+ | * [https://hg.prosody.im/prosody-modules/ Prosody Modules] (追加モジュール) |
2024年8月6日 (火) 18:05時点における最新版
公式ウェブサイト より:
- Prosody は近代的な XMPP 通信サーバーです。簡単にセットアップ・設定ができ、効率的にシステムリソースを使用するように作られています。さらに、開発者が簡単に拡張できる柔軟性のあるシステムとして設計されており、機能の追加や新しいプロトコルのプロトタイプ作成を素早く行うことができます。
目次
インストール
任意の依存パッケージ
Prosody を実行するのに必ずしも必要ではないが、便利な機能を提供する依存パッケージです。これらの依存パッケージの中には AUR からビルド・インストールする必要があるものも含まれています。AUR のパッケージのインストール・ビルドの方法を知らない場合は AUR#パッケージのインストール を見て下さい。
- TLS/SSL サポート (推奨)
- 盗聴されないように Prosody でストリームを暗号化できるようになります。
必要パッケージ: lua52-sec
- MySQL/Postgresql バックエンド
- MySQL/mariadb/Postgresql バックエンドを Prosody で使えるようになり拡張性やパフォーマンスが上がります。
必要パッケージ: lua52-dbi
- 接続スケーリングの向上 (推奨)
- libevent を使うことで大量の同時接続を処理できるようになります。
必要パッケージ: lua52-eventAUR
- ストリームの圧縮
- クライアントからサーバーへのストリームを圧縮して対応するクライアントで帯域を節約することができます。
必要パッケージ: lua52-zlibAUR
設定
メイン設定ファイルは /etc/prosody/prosody.cfg.lua
です。Prosody の設定方法は Prosody の ドキュメント に載っています。以下のコマンドを実行することで設定ファイルの構文チェックをすることができます:
# luac5.1 -p /etc/prosody/prosody.cfg.lua
構文が正しければ何も出力されません。
ログ
Arch Linux の Prosody は syslog にログを出力するようにあらかじめ設定されています。したがって、デフォルトで、Prosody のログメッセージは systemd journal で確認できます。
制御
systemd サービスの prosody.service
を起動・有効化してください。
Prosody はデフォルトの XMPP ポートである 5222 (クライアントからサーバーへの通信) と 5269 (サーバーからサーバーへの通信) を使用します。必要に応じてファイアウォールを設定してください。
prosodyctl
プログラムを使うことで Prosody ユーザーを操作できます。ユーザーを追加するには:
# prosodyctl adduser <JID>
詳しくは prosodyctl(1) を参照してください。
セキュリティ
ユーザー登録
Prosody は XMPP のインバンド登録 標準 に対応しており、ユーザーは XMPP クライアントを使って登録を行ったりパスワードを変更することができます。ユーザーにとっては便利ですが、管理者は新しいユーザーの登録を止めることができません。そのため、デフォルト設定では register
モジュールは有効になっていますが allow_registration
は false
に設定されています。クライアントからユーザーができるのはパスワードを変更することだけで、新しいユーザーを登録することはできなくなっています。
ストリームの暗号化
Prosody では TLS 証明書を使ってクライアントからサーバーへの通信を暗号化することができます (依存パッケージのインストールが必要です)。prosody.cfg.lua
の該当セクションを参照して証明書を使うように Prosody を設定してください。
以下を設定ファイルに追加することでクライアントからサーバーへの通信の暗号化を必須にできます:
/etc/prosody/prosody.cfg.lua
Host "*" c2s_require_encryption = true
同じように、サーバーからサーバーへの通信を暗号化するには:
/etc/prosody/prosody.cfg.lua
Host "*" s2s_require_encryption = true
クライアントからサーバーへの暗号化を必須にすることは問題ありませんが、サーバーからサーバーへの暗号化は Google Talk/Gmail など人気の XMPP サービスが対応していないので注意してください。
ユーザーの表示
登録されているユーザーのリストを確認するには:
# ls -l /var/lib/prosody/*/accounts/*
もしくは mod_listusers.lua モジュールをダウンロードして以下のように使うこともできます:
# prosodyctl mod_listusers
削除
pacman で Prosody をアンインストールしても /etc/prosody
と /var/lib/prosody
ディレクトリは消えません。Prosody を再インストールすることがないのであれば削除すると良いでしょう。
ヒントとテクニック
コンポーネント
Prosody は XMPP コンポーネントをサポートしており、これによりクライアントに追加サービスを提供します。コンポーネントは、特別な Prosody モジュールによって内部で提供されるか、XEP-0114 で指定されたプロトコルを使用して外部で提供されます。
デフォルトでは、Prosody は外部コンポーネントを待ち受けます。Prosody で外部コンポーネントを使用する予定がない場合は、次の設定を追加することでこの動作を無効にできます:
/etc/prosody/prosody.cfg.lua
component_ports = {}
マルチユーザーチャット
XMPP サーバーで一般的に使用されるコンポーネントの一つに Multi-User Chat (MUC) があります。これは複数のユーザー間での会議を可能にします。MUC は Prosody の内部コンポーネントとして提供されています。MUC を有効にするには、次の設定を構成ファイルに追加します:
/etc/prosody/prosody.cfg.lua
Component "conference.example.com" "muc"
これにより、ホスト conference.example.com
で MUC コンポーネントが有効になります。
Prosody モジュール
Prosody Modules は、Prosody に同梱されていない追加モジュールのコレクションです。これらのモジュールは、高度に実験的なものから比較的安定したものまでさまざまな開発段階にあります。各モジュールの詳細については、そのモジュールの wiki ページを参照してください。追加モジュールの一例として pastebin
があり、これを読み込むと長いメッセージ(例えば、ログファイルの出力)をインターセプトし、Prosody の内部 HTTP サーバー(コアモジュール httpserver
によって提供)を使用してホストされた pastebin へのリンクに置き換えます。
追加モジュールを使用するには、ソースブラウザから生ファイルをダウンロードします(ファイルを表示中に「View raw file」というリンクを探します)。あるいは、おそらくより簡単な方法として、Mercurial を使用してリポジトリ全体をクローンします:
- Prosody 0.9+
$ hg clone https://hg.prosody.im/prosody-modules/ prosody-modules
- Prosody 0.8
$ hg clone http://0-8.prosody-modules.googlecode.com/hg/ prosody-modules
これで、モジュール(および必要な追加ファイル)を Prosody のモジュールディレクトリ /usr/lib/prosody/modules
にコピーできます。モジュールを有効にするには、使用するホストまたはコンポーネントの prosody.cfg.lua
内の modules_enabled
リストに追加します。例えば、MUC コンポーネントで pastebin
モジュールを使用するには:
/etc/prosody/prosody.cfg.lua
Component "conference.example.com" "muc" modules_enabled = { "pastebin" }
コンソール
console
モジュールは、管理操作やクエリを実行できる telnet コンソールを提供します。コンソールに接続するには、以下のコマンドを実行します:
$ telnet localhost 5582
もちろん、inetutils
パッケージで提供される telnet
プログラムが必要です。コンソールで help
コマンドを使用して使用方法のヘルプを取得できます。
コンソールでは、コマンドの前に >
を付けることで Lua コマンドを直接サーバー上で実行することもできます。例えば、クライアント接続が圧縮されているかどうかを確認するには:
> full_sessions["romeo@montague.lit/Resource"].compressed
接続が圧縮されている場合は true
、されていない場合は nil
が返されます。
トラブルシューティング
One of Prosody's primary design principles is to be simple to use and configure. However, issues can still arise (and likely will as is the case with any complex software). If you encounter a problem there are a variety of steps you can take to narrow down the cause:
- Check for known issues
Look at the release notes for your Prosody version to see if your issue is listed as a known issue. Also check the issue tracker to see if your issue has already been reported. - Check configuration syntax
Runluac5.1 -p /etc/prosody/prosody.cfg.lua
to check for any syntax errors in your configuration file. If there is no output your syntax is fine. - Check the log
Errors are only logged if there is a critical problem so always address those issues. If you think you have a very low level issue (like protocol compatibility between clients and servers with Prosody) then you can enable the very verbose debug level logging. - Check permissions
The Prosody package should add a newprosody
user and group to your system and set appropriate permissions, but it is always good to double check. Ensure that/etc/prosody
and/var/lib/prosody
are owned by theprosody
user and that the user has appropriate permissions to read and write to those paths and all contained files. - Check listening ports
When troubleshooting connection issues make sure that Prosody is actually listening for connections. You may do so by runningss -tul
and making sure thatxmpp-client
(port 5222) andxmpp-server
(port 5269) are listed. - Restart
Like most things, it does not hurt to restart Prosody (systemctl restart prosody
) to see if it resolves an issue.
If you are unable to resolve your issue yourself there are a variety of resources you can use to seek help. In order of immediacy with which you will likely receive help:
- XMPP カンファレンス:
prosody@conference.prosody.im
- メーリングリスト:
prosody-users@googlegroups.com
, web interface - Arch フォーラム (パッケージの問題についてのみ)
開発
Two development packages are maintained for Prosody in the AUR, prosody-develAUR[リンク切れ: アーカイブ: aur-mirror] and prosody-hgAUR. prosody-devel
tracks the latest source release of a development version (alpha, beta, release candidate) and will actually be behind the stable version if a final version of the development version is released. prosody-hg
tracks the Mercurial repository tip for Prosody and will always contain the latest code as it is checked in. Both packages are built similarly to the stable package.
コミュニティ
- メーリングリスト: prosody-dev, prosody-users
- カンファレンス:
prosody@conference.prosody.im
- ブログ: Prosodical Thoughts
参照
- 公式ドキュメント
- Prosodical Thoughts (ブログ)
- Issue Tracker
- Prosody Modules (追加モジュール)