Ejabberd on Raspberry Pi with Raspbian Jessie
---------------------------------------------

Last edited: $Date: 2015/12/06 17:09:31 $


## Jabber for really safe communication

There  are some  benefits on  using Jabber  as your  instant message
protocol:

 * Jabber is decentralised (everyone can run a Jabber server, there
   is no central authority that controls all Jabber communication).
 * Jabber can be used with [PGP or GnuPG for really safe encrypted
   messaging](http://box.matto.nl/gnupgjabber.html)
 * There are several open and free servers and several open and
   free clients available.


## Raspbian on Raspberry Pi

The Raspberry  Pi (http://www.raspberrypi.org/faqs) is a  very cheap
small board with a 700 MHz  Arm11 SoC. Buy only the B-model, because
this one has a network interface. The A-model comes without network,
which makes it much less fun and useable.

Raspbian (http://www.raspbian.org/) is an operating system based on
Debian that is optimized for the Raspberry Pi hardware.

There are several Raspbian images available, see
https://www.raspberrypi.org/downloads/raspbian/

I choose the Raspbian Jessie Lite,  this is a minimal image based on
Debian Jessie.

After download and dd the image to a SD-card we can boot the system.

## Remove systemd

The first thing to do, is to remove systemd.

Systemd has no place on a Unix-like system.

You can follow the steps on the  without-systemd.org wiki:
http://without-systemd.org/wiki/index.php/How_to_remove_systemd_from_a_Debian_jessie/sid_installation


## Install ejabberd

First step is to apt-get install it:


   apt-get install ejabberd


This will result  in a list of quite some  packages to be installed,
just say yes and have a cup of coffee or tea.

In the  end you will  run is some chicken-or-egg  problem, ejabberd-
contrib will not finish its install before ejabberd is configured.

## ejabberd configuration

Previous versions  for Debian /  Raspbian came with  a ejabberd.cfg,
but Jessie comes with a ejabberd.yml in /etc/ejabberd.

You have  to set your  own hostname  (fqdn) and the  admin-user, but
most importantly you  have to change the configuration  from ipv6 to
ipv4.

You can  raise the  debug-level from  4 to  5 in  order to  get more
debug- information  in the logfile.  This debug-level is in  the top
part of the yml-file.


### ejabberd.yml and ipv4

Change every line that contains



   ip: "::"


into



   ip: "0.0.0.0"


To be sure, I also uncommented the lines:



   outgoing_s2s_families:
      - ipv4


## Setup hostname in ejabberd.yml

Change the lines:



   hosts:
     - "localhost"


into



   hosts:
     - "jabber.example.com"
     - "localhost"


where   jabber.example.com  is   your   own   sub-domain  for   your
jabber-server and your domainname.

Next, search  for the fqdn  line in a  comment block and  insert the
following line below it:


   fqdn: "jabber.example.com"


Open a second ssh-session and as root, do



   tail -f /var/log/ejabberd/ejabberd.log


After this, in the first ssh-session restart ejabberd with



   /etc/init.d/ejabberd restart


(Remember we removed systemd.)

In  the screen  with the  tail -f  command, you  can now  follow the
messages of  ejabberd. When everty  thing goes as expected,  you can
stop the tail -f with Ctrl-C.

Now, you have to add some users with


   ejabberdctl register myuser jabber.example.com mypassword


(Change  myuser  into the  required  username,  mypassword with  the
preferred password :)

After this, your Raspberry Pi works as a Jabber server :)


$Id: ejabberdjessie.txt,v 1.2 2015/12/06 17:09:31 matto Exp $