<HTML>
<HEAD><TITLE>Ejabberd Installation and Operation Guide</TITLE>
-<META http-equiv="Content-Type" content="text/html; charset=ISO8859-1">
+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<META name="GENERATOR" content="hevea 1.07">
</HEAD>
<BODY >
-<!--HEVEA command line is: /usr/bin/hevea -charset ISO8859-1 guide.tex -->
+<!--HEVEA command line is: hevea guide.tex -->
<!--HTMLHEAD-->
<!--ENDHTML-->
<!--PREFIX <ARG ></ARG>-->
<A HREF="mailto:alexey@sevcom.net"><TT>mailto:alexey@sevcom.net</TT></A><BR>
<A HREF="xmpp:aleksey@jabber.ru"><TT>xmpp:aleksey@jabber.ru</TT></A></H3>
-<H3 ALIGN=center>October 8, 2004</H3><DIV ALIGN=center>
+<H3 ALIGN=center>April 18, 2005</H3><DIV ALIGN=center>
<IMG SRC="logo.png">
<H2>Table of Contents</H2><!--SEC END -->
-<UL><LI>
-<A HREF="#htoc1">1 Introduction</A>
-<LI><A HREF="#htoc2">2 Installation from Source</A>
-<UL><LI>
-<A HREF="#htoc3">2.1 Installation Requirements</A>
-<UL><LI>
-<A HREF="#htoc4">2.1.1 Unix</A>
-<LI><A HREF="#htoc5">2.1.2 Windows</A>
-</UL>
-<LI><A HREF="#htoc6">2.2 Obtaining</A>
-<LI><A HREF="#htoc7">2.3 Compilation</A>
-<UL><LI>
-<A HREF="#htoc8">2.3.1 Unix</A>
-<LI><A HREF="#htoc9">2.3.2 Windows</A>
-</UL>
-<LI><A HREF="#htoc10">2.4 Starting</A>
-</UL>
-<LI><A HREF="#htoc11">3 Configuration</A>
-<UL><LI>
-<A HREF="#htoc12">3.1 Initial Configuration</A>
-<UL><LI>
-<A HREF="#htoc13">3.1.1 Host Names</A>
-<LI><A HREF="#htoc14">3.1.2 Default Language</A>
-<LI><A HREF="#htoc15">3.1.3 Access Rules</A>
-<LI><A HREF="#htoc16">3.1.4 Shapers Configuration</A>
-<LI><A HREF="#htoc17">3.1.5 Listened Sockets</A>
-<LI><A HREF="#htoc18">3.1.6 Modules</A>
-</UL>
-<LI><A HREF="#htoc19">3.2 Online Configuration and Monitoring</A>
-<UL><LI>
-<A HREF="#htoc20">3.2.1 Web-based Administration Interface</A>
-<LI><A HREF="#htoc21">3.2.2 <TT>ejabberdctl</TT> tool</A>
-</UL>
-</UL>
-<LI><A HREF="#htoc22">4 Clustering</A>
-<UL><LI>
-<A HREF="#htoc23">4.1 How it works</A>
-<UL><LI>
-<A HREF="#htoc24">4.1.1 Router</A>
-<LI><A HREF="#htoc25">4.1.2 Local Router</A>
-<LI><A HREF="#htoc26">4.1.3 Session Manager</A>
-<LI><A HREF="#htoc27">4.1.4 S2S Manager</A>
-</UL>
-<LI><A HREF="#htoc28">4.2 How to setup ejabberd cluster</A>
-</UL>
-<LI><A HREF="#htoc29">A Built-in Modules</A>
-<UL><LI>
-<A HREF="#htoc30">A.1 Common Options</A>
-<UL><LI>
-<A HREF="#htoc31">A.1.1 <TT>iqdisc</TT></A>
-<LI><A HREF="#htoc32">A.1.2 <TT>host</TT></A>
-<LI><A HREF="#htoc33">A.1.3 <TT>hosts</TT></A>
-</UL>
-<LI><A HREF="#htoc34">A.2 <TT>mod_announce</TT></A>
-<LI><A HREF="#htoc35">A.3 <TT>mod_configure</TT></A>
-<LI><A HREF="#htoc36">A.4 <TT>mod_disco</TT></A>
-<LI><A HREF="#htoc37">A.5 <TT>mod_echo</TT></A>
-<LI><A HREF="#htoc38">A.6 <TT>mod_irc</TT></A>
-<LI><A HREF="#htoc39">A.7 <TT>mod_last</TT></A>
-<LI><A HREF="#htoc40">A.8 <TT>mod_muc</TT></A>
-<LI><A HREF="#htoc41">A.9 <TT>mod_offline</TT></A>
-<LI><A HREF="#htoc42">A.10 <TT>mod_privacy</TT></A>
-<LI><A HREF="#htoc43">A.11 <TT>mod_private</TT></A>
-<LI><A HREF="#htoc44">A.12 <TT>mod_pubsub</TT></A>
-<LI><A HREF="#htoc45">A.13 <TT>mod_register</TT></A>
-<LI><A HREF="#htoc46">A.14 <TT>mod_roster</TT></A>
-<LI><A HREF="#htoc47">A.15 <TT>mod_service_log</TT></A>
-<LI><A HREF="#htoc48">A.16 <TT>mod_stats</TT></A>
-<LI><A HREF="#htoc49">A.17 <TT>mod_time</TT></A>
-<LI><A HREF="#htoc50">A.18 <TT>mod_vcard</TT></A>
-<LI><A HREF="#htoc51">A.19 <TT>mod_version</TT></A>
-</UL>
-<LI><A HREF="#htoc52">B I18n/L10n</A>
-</UL>
<!--TOC section Introduction-->
Option <TT>modules</TT> defines the list of modules that will be loaded after
<TT>ejabberd</TT> startup. Each list element is a tuple where first element is a
name of a module and second is list of options to this module. See
-section <A HREF="#sec:modules">A</A> for detailed information on each module.<BR>
+section <A HREF="#sec:modules">??</A> for detailed information on each module.<BR>
<BR>
Example:
<PRE>
<A NAME="sec:webadm"></A>
To perform online reconfiguration of <TT>ejabberd</TT> you need to enable
<TT>ejabberd_http</TT> listener with option <TT>web_admin</TT> (see
-section <A HREF="#sec:configlistened">3.1.5</A>). After that you can open URL
+section <A HREF="#sec:configlistened">3.1.58Listened Socketssubsubsection.3.1.5</A>). After that you can open URL
<CODE>http://server:port/admin/</CODE> with you favorite web-browser and enter
username and password of an <TT>ejabberd</TT> user with administrator rights. E. g.
with such config:
]
}.
</PRE>you should enter URL <CODE>http://example.org:5280/admin/</CODE>. After
-authentication you should see something like in figure <A HREF="#fig:webadmmain">1</A>.
+authentication you should see something like in figure <A HREF="#fig:webadmmain">??</A>.
<BLOCKQUOTE><DIV ALIGN=center><DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV>
<IMG SRC="webadmmain.png">
Options:
<DL COMPACT=compact><DT>
<B><TT>iqdisc</TT></B><DD> <TT>ejabberd:config</TT> IQ queries processing
-discipline (see <A HREF="#sec:modiqdiscoption">A.1.1</A>).
+discipline (see <A HREF="#sec:modiqdiscoption">??</A>).
</DL>
<!--TOC subsection <TT>mod_disco</TT>-->
<DL COMPACT=compact><DT>
<B><TT>iqdisc</TT></B><DD> <TT>http://jabber.org/protocol/disco#items</TT> and
<TT>http://jabber.org/protocol/disco#info</TT> IQ queries processing
-discipline (see <A HREF="#sec:modiqdiscoption">A.1.1</A>).
+discipline (see <A HREF="#sec:modiqdiscoption">??</A>).
<DT><B><TT>extra_domains</TT></B><DD> List of domains that will be added to server
items reply
</DL>
<DL COMPACT=compact><DT>
<B><TT>host</TT></B><DD> Defines hostname of the service
- (see <A HREF="#sec:modhostoption">A.1.2</A>).
+ (see <A HREF="#sec:modhostoption">A.1.216hostsubsubsection.A.1.2</A>).
<DT><B><TT>hosts</TT></B><DD> Defines hostnames of the service
- (see <A HREF="#sec:modhostsoption">A.1.3</A>). If neither <TT>host</TT> nor <TT>hosts</TT>
+ (see <A HREF="#sec:modhostsoption">??</A>). If neither <TT>host</TT> nor <TT>hosts</TT>
are not present, then prefix <TT>echo.</TT> is added to all <TT>ejabberd</TT> hostnames.
</DL>
<DL COMPACT=compact><DT>
<B><TT>host</TT></B><DD> Defines hostname of the service
- (see <A HREF="#sec:modhostoption">A.1.2</A>).
+ (see <A HREF="#sec:modhostoption">A.1.216hostsubsubsection.A.1.2</A>).
<DT><B><TT>hosts</TT></B><DD> Defines hostnames of the service
- (see <A HREF="#sec:modhostsoption">A.1.3</A>). If neither <TT>host</TT> nor <TT>hosts</TT>
+ (see <A HREF="#sec:modhostsoption">??</A>). If neither <TT>host</TT> nor <TT>hosts</TT>
are not present, then prefix <TT>irc.</TT> is added to all <TT>ejabberd</TT> hostnames.
<DT><B><TT>access</TT></B><DD> Specifies who is allowed to use IRC transport (default value is <TT>all</TT>).
Options:
<DL COMPACT=compact><DT>
<B><TT>iqdisc</TT></B><DD> <TT>jabber:iq:last</TT> IQ queries processing
-discipline (see <A HREF="#sec:modiqdiscoption">A.1.1</A>).
+discipline (see <A HREF="#sec:modiqdiscoption">??</A>).
</DL>
<!--TOC subsection <TT>mod_muc</TT>-->
<DL COMPACT=compact><DT>
<B><TT>host</TT></B><DD> Defines hostname of the service
- (see <A HREF="#sec:modhostoption">A.1.2</A>).
+ (see <A HREF="#sec:modhostoption">A.1.216hostsubsubsection.A.1.2</A>).
<DT><B><TT>hosts</TT></B><DD> Defines hostnames of the service
- (see <A HREF="#sec:modhostsoption">A.1.3</A>). If neither <TT>host</TT> nor <TT>hosts</TT>
+ (see <A HREF="#sec:modhostsoption">??</A>). If neither <TT>host</TT> nor <TT>hosts</TT>
are not present, then prefix <TT>conference.</TT> is added to all <TT>ejabberd</TT> hostnames.
<DT><B><TT>access</TT></B><DD> Specifies who is allowed to use MUC service (default value is <TT>all</TT>).
Options:
<DL COMPACT=compact><DT>
<B><TT>iqdisc</TT></B><DD> <TT>jabber:iq:privacy</TT> IQ queries processing
-discipline (see <A HREF="#sec:modiqdiscoption">A.1.1</A>).
+discipline (see <A HREF="#sec:modiqdiscoption">??</A>).
</DL>
<!--TOC subsection <TT>mod_private</TT>-->
Options:
<DL COMPACT=compact><DT>
<B><TT>iqdisc</TT></B><DD> <TT>jabber:iq:private</TT> IQ queries processing
-discipline (see <A HREF="#sec:modiqdiscoption">A.1.1</A>).
+discipline (see <A HREF="#sec:modiqdiscoption">??</A>).
</DL>
<!--TOC subsection <TT>mod_pubsub</TT>-->
<DL COMPACT=compact><DT>
<B><TT>host</TT></B><DD> Defines hostname of the service
- (see <A HREF="#sec:modhostoption">A.1.2</A>).
+ (see <A HREF="#sec:modhostoption">A.1.216hostsubsubsection.A.1.2</A>).
<DT><B><TT>hosts</TT></B><DD> Defines hostnames of the service
- (see <A HREF="#sec:modhostsoption">A.1.3</A>). If neither <TT>host</TT> nor <TT>hosts</TT>
+ (see <A HREF="#sec:modhostsoption">??</A>). If neither <TT>host</TT> nor <TT>hosts</TT>
are not present, then prefix <TT>pubsub.</TT> is added to all <TT>ejabberd</TT> hostnames.
<DT><B><TT>served_hosts</TT></B><DD> Specifies which hosts are served by the service.
registration is not allowed for it. (default value is <TT>all</TT>, which means
no restrictions).
<DT><B><TT>iqdisc</TT></B><DD> <TT>jabber:iq:register</TT> IQ queries processing
-discipline (see <A HREF="#sec:modiqdiscoption">A.1.1</A>).
+discipline (see <A HREF="#sec:modiqdiscoption">??</A>).
</DL>
Example:
<PRE>
Options:
<DL COMPACT=compact><DT>
<B><TT>iqdisc</TT></B><DD> <TT>jabber:iq:roster</TT> IQ queries processing
-discipline (see <A HREF="#sec:modiqdiscoption">A.1.1</A>).
+discipline (see <A HREF="#sec:modiqdiscoption">??</A>).
</DL>
<!--TOC subsection <TT>mod_service_log</TT>-->
Options:
<DL COMPACT=compact><DT>
<B><TT>iqdisc</TT></B><DD> <TT>http://jabber.org/protocol/stats</TT> IQ queries processing
-discipline (see <A HREF="#sec:modiqdiscoption">A.1.1</A>).
+discipline (see <A HREF="#sec:modiqdiscoption">??</A>).
</DL>
<!--TOC subsection <TT>mod_time</TT>-->
Options:
<DL COMPACT=compact><DT>
<B><TT>iqdisc</TT></B><DD> <TT>jabber:iq:time</TT> IQ queries processing
-discipline (see <A HREF="#sec:modiqdiscoption">A.1.1</A>).
+discipline (see <A HREF="#sec:modiqdiscoption">??</A>).
</DL>
<!--TOC subsection <TT>mod_vcard</TT>-->
<DL COMPACT=compact><DT>
<B><TT>host</TT></B><DD> Defines hostname of the service
- (see <A HREF="#sec:modhostoption">A.1.2</A>).
+ (see <A HREF="#sec:modhostoption">A.1.216hostsubsubsection.A.1.2</A>).
<DT><B><TT>hosts</TT></B><DD> Defines hostnames of the service
- (see <A HREF="#sec:modhostsoption">A.1.3</A>). If neither <TT>host</TT> nor <TT>hosts</TT>
+ (see <A HREF="#sec:modhostsoption">??</A>). If neither <TT>host</TT> nor <TT>hosts</TT>
are not present, then prefix <TT>vjud.</TT> is added to all <TT>ejabberd</TT> hostnames.
<DT><B><TT>iqdisc</TT></B><DD> <TT>vcard-temp</TT> IQ queries processing
-discipline (see <A HREF="#sec:modiqdiscoption">A.1.1</A>).
+discipline (see <A HREF="#sec:modiqdiscoption">??</A>).
<DT><B><TT>search</TT></B><DD> Specifies whether search is enabled (value is <TT>true</TT>, default) or
disabled (value is <TT>false</TT>) by the service. If <TT>search</TT> is set to <TT>false</TT>,
option <TT>host</TT> is ignored and service does not appear in Jabber Discovery items.
Options:
<DL COMPACT=compact><DT>
<B><TT>iqdisc</TT></B><DD> <TT>jabber:iq:version</TT> IQ queries processing
-discipline (see <A HREF="#sec:modiqdiscoption">A.1.1</A>).
+discipline (see <A HREF="#sec:modiqdiscoption">??</A>).
</DL>
<!--TOC section I18n/L10n-->
<A NAME="sec:i18nl10n"></A>
All built-in modules support <TT>xml:lang</TT> attribute inside IQ queries.
-E. g. on figure <A HREF="#fig:discorus">2</A> showed the reply on the following query:
+E. g. on figure <A HREF="#fig:discorus">??</A> showed the reply on the following query:
<PRE>
<iq id='5'
to='e.localhost'
<A NAME="fig:discorus"></A>
<DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV></DIV></BLOCKQUOTE>
Also web-interface supports <CODE>Accept-Language</CODE> HTTP header (see
-figure <A HREF="#fig:webadmmainru">3</A>, compare it with figure <A HREF="#fig:webadmmain">1</A>)
+figure <A HREF="#fig:webadmmainru">??</A>, compare it with figure <A HREF="#fig:webadmmain">??</A>)
<BLOCKQUOTE><DIV ALIGN=center><DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV>
<IMG SRC="webadmmainru.png">
--- /dev/null
+ Release notes
+ ejabberd 0.9
+
+ This document describes the major new features of and changes to
+ ejabberd 0.9, compared to latest public release ejabber 0.7.5.
+
+ For more detailed information, please refer to ejabberd User
+ Guide.
+
+
+Virtual Hosting
+
+ ejabberd now can host several domain on the same instance.
+ This option is enabled by using:
+
+ {hosts, ["erlang-projects.org", "erlang-fr.org"]}.
+
+ instead of the previous host directive.
+
+ Note that you are now using a list of hosts. The main one should
+ be the first listed. See migration note further for details.
+
+
+Shared Roster
+
+ Shared roster is a new feature that allow the ejabberd
+ administrator to add jabber user that will be present in the
+ roster of every users on the server.
+ Shared roster are enabled by adding:
+
+ {mod_shared_roster, []}
+
+ at the end of your module list in your ejabberd.cfg file.
+
+
+PostgreSQL (ODBC) support
+
+ PostgreSQL support is enabled by using the following module in
+ ejabberd.cfg instead of their standard counterpart:
+
+ mod_last_odbc.erl
+ mod_offline_odbc.erl
+ mod_roster_odbc.erl
+
+ The database schema is located in the src/odbc/pq.sql file.
+
+
+Migration from ejabberd 0.7.5
+
+ Migration is pretty straightforward as Mnesia database schema
+ converions is handled automatically.
+ Here are the following steps to proceed:
+
+ 1. Stop your instance of ejabberd.
+
+ 2. In ejabberd.cfg, define the host lists. Change the host
+ directive to the hosts one:
+ Before:
+ {host, "erlang-projects.org"}.
+ After:
+ {hosts, ["erlang-projects.org", "erlang-fr.org"]}.
+ Note that when you restart the server the existing users will be
+ affected to the first virtual host, so the order is important. You
+ should keep the previous hostname as the first virtual host.
+
+ 3. Restart ejabberd.
+
+
+Bugfixes
+
+ This release contains several bugfixes and architectural changes.
+ Please refer to the Changelog file supplied with this release for
+ details of all improvements in the ejabberd code.