Lusticky

Blog

Jabber server ejabberd

,

Instalace, správa a vylepšování ejabberd na serveru s distribucí Archlinux.

Instalace: sudo pacman -S ejabberd
Po instalaci není přístup do /etc/ejabberd, pro povolení nastavte oprávnění (na soubory v adresáři stejně není čtecí přístup)
sudo chmod o+rx /etc/ejabberd

Konfigurace serveru:
sudoedit /etc/ejabberd/ejabberd.cfg

%%%'   SERVED HOSTNAMES
{hosts, ["jabbserv.cz"]}.

%%%'   ACCESS CONTROL LISTS
{acl, admin, {user, "uziv", "jabbserv.cz"}}.  %% pridat spravce serveru uziv@jabbserv.cz

%%%'   DEFAULT LANGUAGE
{language, "cs"}.  %% zmenit "en" na "cs"

Konfigurace domény:
Chcete-li jabber server využívat veřejně na své doméně (např. jabbserv.cz), je potřeba upravit doménový soubor, konkrétně záznam typu SRV pro služby jabber, xmpp-client, xmpp-server a potom ještě A nebo AAA záznam směrovaný na IP serveru pro konference.
_služba._protokol IN SRV priorita váha doména.

_jabber._tcp IN SRV 5 0 5269 jabbserv.cz.
_xmpp-client._tcp IN SRV 5 0 5222 jabbserv.cz.
_xmpp-server._tcp IN SRV 5 0 5269 jabbserv.cz.

conference IN A 120.240.102.10
Základní konfigurace je hotova, server můžete spustit a využívat. Dále následují dobrovolné kroky.


Podpora zabezpečeného připojení:
Vytvořte si certifikát u CA. Pokud jste postupovali podle článku o StartSSL, postupujte následovně:
Je potřeba vytvořit jeden .pem soubor, ve kterém ejabberd najde váš tajný klíč, ssl certifikát získaný od CA a případně subcertifikát CA.
cat privkey.pem ssl-certificate.pem sub.class1.server.ca.pem > /etc/ejabberd/ejabberd.pem
chown ejabberd:ejabberd /etc/ejabberd/ejabberd.pem
chmod 400 /etc/ejabberd/ejabberd.pem  # zamezime zmene a cteni nepovolanym

Dále upravíme konfigurační soubor ejabberd:
sudoedit /etc/ejabberd/ejabberd.cfg

%%%'   LISTENING PORTS

{listen,
 [
  {5222, ejabberd_c2s, [
    %%
    %% If TLS is compiled in and you installed a SSL
    %% certificate, specify the full path to the
    %% file and uncomment this line:
    starttls, {certfile, "/etc/ejabberd/ejabberd.pem"},  %% odkomentovat a zmenit cestu
    ...
  ]},

...

]}.

%%
%% s2s_use_starttls: Enable STARTTLS + Dialback for S2S connections.
%% Allowed values are: true or false.
%% You must specify a certificate file.
%%
{s2s_use_starttls, true}.  %% odkomentovat

%%
%% s2s_certfile: Specify a certificate file.
%%
{s2s_certfile, "/etc/ejabberd/ejabberd.pem"}.  %% odkomentovat a zmenit cestu

Po restartu pomocí sudo /etc/rc.d/ejabberd restart budete mít zabezpečené připojení client-server i server-server.


Podpora MySQL:
ejabberd umí nativní spojení s databází MySQL.
Výhody: rychlejší (lze poznat až u serverů s 1000+ uživateli online), informace o uživatelích lze snadno zálohovat i přenášet, pro některé moduly ejabberd je pokročilejší databáze nutnost (mod_webarchive)
Nevýhody: informace o MUC (chatrooms) jsou však stále ukládány do /var/spool/ejabberd (využívá se výchozí databáze Mnesia), vyžaduje puštění mysql server, hesla uživatelů jsou uložena v čitelné podobě (u Mnesie nejspíš taky)

Příprava MySQL:
sudo pacman -S mysql
sudoedit /etc/mysql/my.cnf

skip-networking  # odkomentujte
Povolíme připojení k databázi:
sudoedit /etc/hosts.allow

mysqld: 127.0.0.1
mysqld-max: 127.0.0.1
Restartujte / spusťte databázi.
Dále následují informace převzaté ze stránky Using ejabberd with MySQL native driver, která by měla mít správné informaci pro případnou novější verzi.
Nyní je ptořeba v MySQL vytvořit účet a databázi pro ejabberd:
Přihlásíme se a vytvoříme databázi s názvem 'ejabberd':
mysql -u root -p
CREATE DATABASE ejabberd;
Dále vytvoříme uživatele ejabberd se všemi právy nad databází ejabberd (zaměňte password za libovolné heslo pro uživatele databáze ejabberd) a odhlásíme se z ovládání mysql:
GRANT ALL ON ejabberd.* TO 'ejabberd'@'localhost' IDENTIFIED BY 'password';
exit
Dále stáhneme tabulky potřebné pro ejabberd a vložíme je nově vytvořené do databáze ejabberd:
wget https://git.process-one.net/ejabberd/mainline/blobs/raw/2.1.x/src/odbc/mysql.sql
mysql -D ejabberd -p -u ejabberd < mysql.sql
Zkontrolovat obsah databáze můžete pomocí:
echo "show tables;" | mysql -D ejabberd -h localhost -p -u ejabberd

Tímto máme MySQL připraveno.

Konfigurace ejabberd:
ejabberd je potřeba mít zkompilovaný s volbou --enable-odbc (v Archlinuxu tomu tak je).
sudoedit /etc/ejabberd/ejabberd.cfg

%%%'   AUTHENTICATION

%% Authentication using ODBC
%% Remember to setup a database in the next section.
{auth_method, odbc}.  %% odkomentovat


%%%'   DATABASE SETUP
%% MySQL server:
{odbc_server, {mysql, "localhost", "ejabberd", "ejabberd", "password"}}.  %% odkomentujte a upravte
%%                     server       databaze    uzivatel    heslo
Volitelně pak můžete v konfiguračním souboru nahradit některé moduly za jejich ODBC varianty pro ukládání dalších informací do MySQL:
%%%'   MODULES
{modules,
 [
...
%  {mod_last,     []},
  {mod_last_odbc, []},
...
%  {mod_offline,  [{access_max_user_messages, max_user_offline_messages}]},
  {mod_offline_odbc,  [{access_max_user_messages, max_user_offline_messages}]},
...
%  {mod_privacy,  []},
  {mod_privacy_odbc,  []},
%  {mod_private,  []},
  {mod_private_odbc,  []},
...
%  {mod_pubsub,   [
  {mod_pubsub_odbc, [
...
%  {mod_roster,   []},
  {mod_roster_odbc,   []},
...
%  {mod_vcard,    []},
  {mod_vcard_odbc,    []},
...

Český překlad galerie PloggerChráníme server pomocí iptables

Write a comment

New comments have been disabled for this post.