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 $