Jabber server
Při výběru vlastního Jabber (XMPP) serveru jsem se rozmýšlel mezi servery
Nakonec jsem se rozhodl pro ejabberd, jelikož není, na rozdíl od Openfire a tigase, napsán v Javě, ale v jazyce Erlang, který je také multiplatformní. Multiplatformnost pro mne byla jednou z hlavních podmínek, jelikož jsem nevěděl, na jakém OS server poběží. Dalším plusem byla početná a aktivní komunita, solidní dokumentace, přítomnost již ve zdrojích a velké množství funkcí.
Požadované vlastnosti
- stabilní běh serveru
- snadná režie
- přenos souborů
- single i multi-user chat
- centrální (sdílený) contact list "roster"
Doplňkové vlastnosti
- audio/video chat
Instalace
Budeme instalovat verzi ze zdrojů.
sudo aptitude install ejabberd
Po instalaci se bude ejabberd snažit ihned spustit, ale to se mu nepovede, pokud nemáme správně nastaveny soubory /etc/hosts
a /etc/hostname
.
Tyto soubory musí vypadat podobně jako následující:
/etc/hosts
127.0.0.1 localhost
<veřejná IP> jabber jabber.<doména>.cz info.<jiná-doména>.cz
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
/etc/hostname
jabber
Základní konfigurace
Dalším krokem je konfigurace jabber serveru.
Pro základní nastavení doporučuji v Debian systémech využít dpkg-reconfigure ejabberd
Průvodce se zeptá na:
- doménu na které budeme server provozovat
- název admin účtu a heslo k němu
- a vytvoří SSL certifikát
Server je tak nastavený a další konfiguraci můžeme provádět buď přes webové rozhraní http://<adresa-serveru>:5280/admin
login je kompletní jabber ID uživatele admin, které jsme vytvořili
nebo přímo v konfiguračním souboru /etc/ejabberd/ejabberd.cfg
a pomocí konfigurační utility ejabberdctl
.
Server v tomto nastavení nepřijímá registrace přes jabber klienty!
SSL certifikát
Pokud bychom při instalaci ejabberd neměli správně nastaveny soubory /etc/hosts
a /etc/hostname
, musíme znovu vygenerovat SSL certifikát (pokud jej chceme používat). Certifikát by totiž platil pro jinou doménu, než chceme a jabber klient by nám to dal patřičně najevo.
Po nastavení konfiguračních souborů vygenerujeme, takzvaný "Self-Signed" certifikát následujícím způsobem.
su -
cd /etc/ejabberd/
cp ejabberd.pem ejabberd.pem.orig
openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
openssl rsa -in privkey.pem -out privkey.pem
cat privkey.pem >> server.pem
rm privkey.pem
mv server.pem ejabberd.pem
exit
Při prvním vyvolání openssl
budeme dotázáni na sadu dotazů, mezi kterými bude Common Name (eg, YOUR name) []:
. Na tento dotaz musíme odpovědět plným doménovým jménem serveru, na kterém chceme jabber server provozovat. Nastavovali jsme jej do /etc/hosts
například jako jabber.<doména>.cz
.
Heslo, které nastavíme při generování server.pem
musí být stejné jako to pro privkey.pem
.
Nyní nám bude klient hlásit pouze, že je certifikát podepsán sám sebou, což je v pořádku, jelikož jsme o vytvoření certifikátu nepožádali certifikační autoritu (např. Verisign), ale vytvořili jsme jej my. Certifikát tak uživateli říká "Jsem ten, kdo tvrdím, že jsem.", oproti "Verisign říká, že jsem ten, kdo tvrdím, že jsem.".
Přidávání uživatelů
Nejjednodušší způsob je přes webové rozhraní > Virtual Hosts > [vybrat hostitele] > Uživatelé > Přidat uživatele
Sdílený roster
Webové rozhraní > Virtual Hosts > [vybrat hostitele] > Uživatelé > Skupiny pro sdílený seznam kontaktů.
Do pole se vyplňuje "systémový" název skupiny, na který se můžeme odkazovat v nastavení ostatních sdílených rosterů. Název by nejspíše neměl obsahovat speciální znaky. Po vytvoření skupiny a jejím rozkliknutí se objeví další pole:
Po restartování serveru nastavený modul sdíleného rosteru přes webové rozhraní zmizí. Aby zůstal po restartu serveru, a byl přístupný i pro další nově vytvořené virtuální hostitele, musí se v konfiguračním souboru /etc/ejabberd/ejabberd.cfg
, v sekci {modules,
odkomentovat řádek s {mod_shared_roster,[]},
.