<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>DaemonAdmin/EJabberD</title><revhistory><revision><revnumber>11</revnumber><date>2020-08-29 20:43:11</date><authorinitials>ClintonEbadi</authorinitials></revision><revision><revnumber>10</revnumber><date>2020-08-29 20:42:45</date><authorinitials>ClintonEbadi</authorinitials><revremark>clearer language</revremark></revision><revision><revnumber>9</revnumber><date>2020-08-29 20:41:52</date><authorinitials>ClintonEbadi</authorinitials></revision><revision><revnumber>8</revnumber><date>2020-08-29 19:57:34</date><authorinitials>ClintonEbadi</authorinitials><revremark>actually, we can enable TURNS, not sure it does anything...</revremark></revision><revision><revnumber>7</revnumber><date>2020-08-29 19:22:01</date><authorinitials>ClintonEbadi</authorinitials><revremark>note that we're compliant with 2020 recommended XEPs, and that we don't use TURN (and why)</revremark></revision><revision><revnumber>6</revnumber><date>2020-08-23 22:15:32</date><authorinitials>ClintonEbadi</authorinitials><revremark>dust off a bit, collect details on everything configured outside of puppet here</revremark></revision><revision><revnumber>5</revnumber><date>2020-08-23 22:04:29</date><authorinitials>ClintonEbadi</authorinitials><revremark>updated docs, move to DaemonAdmin with others</revremark></revision><revision><revnumber>4</revnumber><date>2011-03-09 20:23:18</date><authorinitials>ClintonEbadi</authorinitials></revision><revision><revnumber>3</revnumber><date>2011-03-09 09:06:47</date><authorinitials>ClintonEbadi</authorinitials><revremark>firewall config</revremark></revision><revision><revnumber>2</revnumber><date>2011-03-09 09:02:17</date><authorinitials>ClintonEbadi</authorinitials><revremark>erlang cookie</revremark></revision><revision><revnumber>1</revnumber><date>2011-03-09 08:58:28</date><authorinitials>ClintonEbadi</authorinitials><revremark>initial jabber admin notes</revremark></revision></revhistory></articleinfo><section><title>Daemon</title><para>We use <ulink url="http://www.ejabberd.im/">ejabberd</ulink> </para><para>We are compliant with <ulink url="https://xmpp.org/extensions/xep-0423.html">XEP-0423: XMPP Compliance Suites 2020</ulink>. We have STUN, STUNS, and TURNS (TURN over TLS) enabled, but have left UDP TURN disabled  (unclear if using UDP TURN would result in some clients sending member credentials unencrypted, or if only the temporary credentials offered by <code>mod_stun_disco</code> are used). If you think we should enable TURN over UDP, please contact the admins. </para></section><section><title>Installation</title><para>Installation is handled by Puppet class <code>hcoop::service::xmpp::ejabberd</code>. It will automatically use the HCoop TLS certificate, set up krb5 authentication, and open the needed firewall ports. </para></section><section><title>Additional Config</title><para>A few things are not managed by Puppet. </para><section><title>DNS Records</title><para>We need several DNS records for XMPP servers, stored in the <code>hcoop.net</code> domtool configuration. </para></section><section><title>Static files in hcoop.net/.well-known</title><para><ulink url="https://xmpp.org/extensions/xep-0156.html">XEP-0156: Discovering Alternative XMPP Connection Methods (HTTP)</ulink> requires two files to be accessible from <ulink url="https://hcoop.net"/>: </para><itemizedlist><listitem><para><ulink url="https://hcoop.net/.well-known/host-meta"/> </para></listitem><listitem><para><ulink url="https://hcoop.net/.well-known/host-meta.json"/> </para></listitem></itemizedlist><para>These list BOSH and <ulink url="https://wiki.hcoop.net/DaemonAdmin/EJabberD/WebSocket#">WebSocket</ulink> endpoints and may need to be adjusted when adding/removing ejabberd servers. </para></section></section><section><title>Old content</title><para>Might be relevant in the future -- we have a single server setup at the moment, and are not managing the erlang cookie for example. </para><section><title>Erlang Cookie</title><para>All nodes must have the same erlang cookie. When installing a new node replace the default Debian cookie with one copied from <code>~ejabberd/.erlang_cookie</code>. </para><!--rule (<hr>) is not applicable to DocBook--><para> <ulink url="https://wiki.hcoop.net/DaemonAdmin/EJabberD/CategorySystemAdministration#">CategorySystemAdministration</ulink> </para></section></section></article>