Difference between revisions of "Prosody"

From Jon's Wiki
Line 49: Line 49:
  
 
   sudo prosodyctl adduser yourusername@yourdomain.com
 
   sudo prosodyctl adduser yourusername@yourdomain.com
 +
 +
== Enabling sane multi-client support ==
 +
 +
Want persistent message history everywhere, like Hangouts? You'll need:
 +
 +
* XEP-0280 Message Carbons
 +
* XEP-0313 Message Archive Management
 +
 +
Luckily, these are all in the community contrib repository:
 +
 +
hg clone https://code.google.com/p/prosody-modules/
 +
 +
Then copy <tt>mod_mam* <tt>mod_carbons*</tt> into <tt>/usr/lib/prosody/modules</tt> on your server, and add this to your prosody configuration:
 +
 +
modules_enabled = {
 +
    -- ...
 +
    "mam";
 +
    "mam_archive";
 +
    "mam_muc";
 +
    "carbons";
 +
    "carbons_copies";
 +
    -- ...
 +
}
 +
 +
storage = {
 +
    archive2 = "sql"; -- mam_archive requires SQL storage.
 +
}
 +
 +
default_archive_policy = true;
 +
max_archive_query_results = 100;
 +
-- mam_archive: default conversation term, in seconds (default: 1 day)
 +
--archive_conversation_interval = 86400;
  
 
== Links ==
 
== Links ==

Revision as of 01:49, 7 November 2014

Prosody is a small and fast XMPP daemon written in Lua. You can install it like this:

sudo apt-get install prosody

Edit the config /etc/prosody/prosody.cfg.lua to make sure you have BOSH support, group rosters and compression enabled, and you probably want self-registration off:

modules_enabled = {
  "compression";
  "bosh";
  "groups";
  ...
}

allow_registration = false;
bosh_ports = { 5280 };

...

Set up a virtual host config for your domain in /etc/prosody/conf.avail/yourdomain.cfg.lua

VirtualHost "yourdomain.com"
    enabled = true
    ssl = {
        key = "/etc/ssl/private/star.yourdomain.com.key";
        certificate = "/etc/ssl/certs/star.yourdomain.com.crt";
    }

-- optional, for IRC-style chatrooms
Component "chatrooms.yourdomain.com" "muc"
    restrict_room_creation = "local"

-- optional, for file transfers
Component "chatproxy.yourdomain.com" "proxy65"

Then enable it with ln -s into /etc/prosody/conf.d

DNS configuration

You need your chat, chatrooms, and chatproxy subdomains to be A records (not CNAME), and you also need 2 SRV records and a TXT record, thus:

_xmpp-client._tcp.yourdomain.com    = SRV: 0 5 5222 chat.yourdomain.com 
_xmpp-server._tcp.yourdomain.com    = SRV: 0 5 5269 chat.yourdomain.com

TXT: _xmpp-client-xbosh=https://chat.yourdomain.com/http-bind/ 

Add some users

Add yourself with

  sudo prosodyctl adduser yourusername@yourdomain.com

Enabling sane multi-client support

Want persistent message history everywhere, like Hangouts? You'll need:

* XEP-0280 Message Carbons
* XEP-0313 Message Archive Management

Luckily, these are all in the community contrib repository:

hg clone https://code.google.com/p/prosody-modules/

Then copy mod_mam* mod_carbons* into /usr/lib/prosody/modules on your server, and add this to your prosody configuration:

modules_enabled = {
    -- ...
    "mam";
    "mam_archive";
    "mam_muc";
    "carbons";
    "carbons_copies";
    -- ...
}

storage = {
    archive2 = "sql"; -- mam_archive requires SQL storage.
}

default_archive_policy = true;
max_archive_query_results = 100;
-- mam_archive: default conversation term, in seconds (default: 1 day)
--archive_conversation_interval = 86400;

Links

More docs at