Jabber: Unterschied zwischen den Versionen
(→XMPP-Server ejabberd einrichten) |
(→XMPP-Server ejabberd einrichten) |
||
Zeile 91: | Zeile 91: | ||
Ab sofort sollten sich Klienten registrieren und mit dem Server verbinden können. Die Administrationsoberfläche erreichen wir unter ''<nowiki>http://<domain>:5280/admin/</nowiki>''. Für den Login verwenden wir den zuvor angelegten Administrator sowie das zugehörige Passwort. Vorsicht: Die Verbindung ist nicht verschlüsselt! | Ab sofort sollten sich Klienten registrieren und mit dem Server verbinden können. Die Administrationsoberfläche erreichen wir unter ''<nowiki>http://<domain>:5280/admin/</nowiki>''. Für den Login verwenden wir den zuvor angelegten Administrator sowie das zugehörige Passwort. Vorsicht: Die Verbindung ist nicht verschlüsselt! | ||
+ | |||
+ | == Clustering == | ||
+ | |||
+ | runnning db nodes = [ ejabberd@<domain1>, ejabberd@<domain2> ] | ||
+ | |||
+ | mnesia:change_table_copy_type(schema,node(),disc_copies). | ||
+ | |||
+ | (ejabberd@altegurke)5> mnesia:info(). | ||
+ | ---> Processes holding locks <--- | ||
+ | ---> Processes waiting for locks <--- | ||
+ | ---> Participant transactions <--- | ||
+ | ---> Coordinator transactions <--- | ||
+ | ---> Uncertain transactions <--- | ||
+ | ---> Active tables <--- | ||
+ | schema : with 36 records occupying 4696 words of mem | ||
+ | ===> System info in version "4.7", debug level = none <=== | ||
+ | opt_disc. Directory "/var/lib/ejabberd" is used. | ||
+ | use fallback at restart = false | ||
+ | running db nodes = ['ejabberd@box-1719',ejabberd@altegurke] | ||
+ | stopped db nodes = [] | ||
+ | master node tables = [] | ||
+ | remote = [acl,bytestream,caps_features,captcha,config,iq_response, | ||
+ | irc_custom,last_activity,local_config,mod_register_ip, | ||
+ | motd,motd_users,muc_online_room,muc_registered,muc_room, | ||
+ | offline_msg,passwd,privacy,private_storage,pubsub_index, | ||
+ | pubsub_item,pubsub_last_item,pubsub_node,pubsub_state, | ||
+ | pubsub_subscription,reg_users_counter,roster, | ||
+ | roster_version,route,s2s,session,session_counter, | ||
+ | temporarily_blocked,vcard,vcard_search] | ||
+ | ram_copies = [] | ||
+ | disc_copies = [schema] | ||
+ | disc_only_copies = [] | ||
+ | [] = [local_config,caps_features,mod_register_ip] | ||
+ | [{ejabberd@altegurke,disc_copies},{'ejabberd@box-1719',disc_copies}] = [schema] | ||
+ | [{'ejabberd@box-1719',disc_copies}] = [config,pubsub_subscription,privacy, | ||
+ | passwd,irc_custom,roster,last_activity, | ||
+ | roster_version,motd,acl,pubsub_index, | ||
+ | vcard_search,motd_users,muc_room, | ||
+ | pubsub_state,muc_registered, | ||
+ | pubsub_node] | ||
+ | [{'ejabberd@box-1719',disc_only_copies}] = [offline_msg,vcard,private_storage, | ||
+ | pubsub_item] | ||
+ | [{'ejabberd@box-1719',ram_copies}] = [reg_users_counter,bytestream, | ||
+ | pubsub_last_item,route,s2s,captcha, | ||
+ | session_counter,session,iq_response, | ||
+ | temporarily_blocked,muc_online_room] | ||
+ | 4 transactions committed, 0 aborted, 0 restarted, 3 logged to disc | ||
+ | 0 held locks, 0 in queue; 0 local transactions, 0 remote | ||
+ | 0 transactions waits for other nodes: [] |
Version vom 30. März 2015, 21:37 Uhr
XMPP-Server ejabberd einrichten
XMPP-Server gibt es an der Zahl viele. Ein populärer, freier XMPP-Server ist ejabberd. Ejabberd ist unter Windows und Unix-Derivaten verfügbar. Neben diversen Modulen und Transports unterstützt ejabberd die Einrichtung von Clustern, so dass durch den Parallelbetrieb mehrerer Server eine hohe Ausfallsicherheit erzeugt werden kann. Im Folgenden wird die Installation und Einrichtung unter Debian Wheezy als Benutzer root beschrieben. Zunächst installieren wir das Paket mit dem Server:
apt-get install ejabberd
Im Anchluss führen wir eine Grundkonfiguration durch:
dpkg-reconfigure ejabberd
Im Zuge der Grundkonfiguration geben wir die Domain <domain> des Servers, sowie einen Namen für den Administrator <administrator> sowie ein Passwort ein. Debconf nimmt im Anschluss automatisch die notwendigen Änderungen in der zentralen Konfigurationsdatei /etc/ejabberd/ejabberd.cfg vor. Dort sollten wir nach Abschluss der Grundkonfiguration den folgenden Abschnitt finden:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Options which are set by Debconf and managed by ucf %% Admin user {acl, admin, {user, "<administrator>", "<domain>"}}. %% Hostname {hosts, ["<domain>"]}.
Da dies noch nicht ausreichend ist, öffnen wir die Konfigurationsdatei /etc/ejabberd/ejabberd.cfg im Anschluss mit dem Editor unserer Wahl und bessern an einigen Stellen nach. Damit wir als Administrator informiert werden, wenn der ejabberd-Prozess außer Kontrolle gerät, aktivieren wir den Watchdog:
%% %% watchdog_admins: If an ejabberd process consumes too much memory, %% send live notifications to those Jabber accounts. %% {watchdog_admins, ["<admin>@<domain>"]}.
Weiterhin wollen wir ejabberd über die eingebaute Web-Oberfläche konfigurieren können:
{5280, ejabberd_http, [ {request_handlers, [ {["pub", "archive"], mod_http_fileserver} ]}, %%captcha, http_bind, http_poll, web_admin ]}
Benutzern soll es prinzipiell erlaubt sein, sich selbst zu registrieren:
%% No username can be registered via in-band registration: %% To enable in-band registration, replace 'deny' with 'allow' % (note that if you remove mod_register from modules list then users will not % be able to change their password as well as register). % This setting is default because it's more safe. {access, register, [{allow, all}]}.
Statt Englisch möchten wir Deutsch als Standardsprache für alle Meldungen:
%% %% language: Default language used for server messages. %% {language, "de"}.
Zuletzt stellen wir noch sicher, dass das Modul mod_register für die Benutzerregistrierung aktiviert ist und tragen unter registration_watchers unseren Administrator ein. In Zukunft sollten wir informiert werden, nachdem sich ein Benutzer registriert hat.
{mod_register, [ %% %% After successful registration, the user receives %% a message with this subject and body. %% {welcome_message, {"Welcome!", "Welcome to a Jabber service powered by Debian. " "For information about Jabber visit " "http://www.jabber.org"}}, %% Replace it with 'none' if you don't want to send such message: %%{welcome_message, none}, %% %% When a user registers, send a notification to %% these Jabber accounts. %% {registration_watchers, ["<admin>@<domain>"]},
Im Anschluss starten wir ejabberd erneut, damit die Änderungen übernommen werden:
service ejabberd restart
Im Normalfall sollte unser Rechner durch eine Firewall geschützt sein. Damit ejabberd funktionieren kann, müssen die Ports 5222, 5269 und 5280 für eingehende Verbindungen geöffnet werden. Falls die Uncomplicated Firewall verwendet wird, gelingt dies mit:
ufw allow 5222 # client connections ufw allow 5269 # server connections ufw allow 5280 # web configuration interface
Ab sofort sollten sich Klienten registrieren und mit dem Server verbinden können. Die Administrationsoberfläche erreichen wir unter http://<domain>:5280/admin/. Für den Login verwenden wir den zuvor angelegten Administrator sowie das zugehörige Passwort. Vorsicht: Die Verbindung ist nicht verschlüsselt!
Clustering
runnning db nodes = [ ejabberd@<domain1>, ejabberd@<domain2> ]
mnesia:change_table_copy_type(schema,node(),disc_copies).
(ejabberd@altegurke)5> mnesia:info(). ---> Processes holding locks <--- ---> Processes waiting for locks <--- ---> Participant transactions <--- ---> Coordinator transactions <--- ---> Uncertain transactions <--- ---> Active tables <--- schema : with 36 records occupying 4696 words of mem ===> System info in version "4.7", debug level = none <=== opt_disc. Directory "/var/lib/ejabberd" is used. use fallback at restart = false running db nodes = ['ejabberd@box-1719',ejabberd@altegurke] stopped db nodes = [] master node tables = [] remote = [acl,bytestream,caps_features,captcha,config,iq_response, irc_custom,last_activity,local_config,mod_register_ip, motd,motd_users,muc_online_room,muc_registered,muc_room, offline_msg,passwd,privacy,private_storage,pubsub_index, pubsub_item,pubsub_last_item,pubsub_node,pubsub_state, pubsub_subscription,reg_users_counter,roster, roster_version,route,s2s,session,session_counter, temporarily_blocked,vcard,vcard_search] ram_copies = [] disc_copies = [schema] disc_only_copies = [] [] = [local_config,caps_features,mod_register_ip] [{ejabberd@altegurke,disc_copies},{'ejabberd@box-1719',disc_copies}] = [schema] [{'ejabberd@box-1719',disc_copies}] = [config,pubsub_subscription,privacy, passwd,irc_custom,roster,last_activity, roster_version,motd,acl,pubsub_index, vcard_search,motd_users,muc_room, pubsub_state,muc_registered, pubsub_node] [{'ejabberd@box-1719',disc_only_copies}] = [offline_msg,vcard,private_storage, pubsub_item] [{'ejabberd@box-1719',ram_copies}] = [reg_users_counter,bytestream, pubsub_last_item,route,s2s,captcha, session_counter,session,iq_response, temporarily_blocked,muc_online_room] 4 transactions committed, 0 aborted, 0 restarted, 3 logged to disc 0 held locks, 0 in queue; 0 local transactions, 0 remote 0 transactions waits for other nodes: []