Jabber server ejabberd
Monday, August 9, 2010 1:27:30 PM
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.10Zá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 # odkomentujtePovolíme připojení k databázi:
sudoedit /etc/hosts.allow mysqld: 127.0.0.1 mysqld-max: 127.0.0.1Restartujte / 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'; exitDá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.sqlZkontrolovat 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 hesloVolitelně 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, []},
...
