Commit 22fce6dddb7570e1d997f625a421b72da61f594d

Authored by Joenio Costa
Committed by Antonio Terceiro
1 parent 69383c66

XMPP/Chat install doc updated

Showing 2 changed files with 90 additions and 81 deletions   Show diff stats
INSTALL.chat
1   -== Client setup
  1 +== XMPP/Chat Client Setup
2 2  
3 3 To configure XMPP/BOSH in Noosfero you need:
4 4  
... ... @@ -6,22 +6,24 @@ To configure XMPP/BOSH in Noosfero you need:
6 6 * SystemTimer - http://ph7spot.com/musings/system-timer
7 7 * Pidgin data files - http://www.pidgin.im/
8 8  
9   -# apt-get install librestclient-ruby
10   -# apt-get install libsystemtimer-ruby (depends to do Debian package to this)
  9 +If you use Debian Lenny:
  10 +
  11 +# apt-get install librestclient-ruby (from backports)
11 12 # apt-get install pidgin-data
  13 +# apt-get install ruby1.8-dev
  14 +# gem install SystemTimer
12 15  
13 16 Take a look at util/chat directory to see samples of config file to configure a
14 17 XMPP/BOSH server with ejabberd, postgresql and apache2.
15 18  
16   -
17   -== XMPP Server Setup
  19 +== XMPP/Chat Server Setup
18 20  
19 21 This is a step-by-step guide to get a XMPP service working, in a Debian system.
20 22  
21 23 1. Install the required packages
22 24  
23   -# aptitude install ejabberd odbc-postgresql
24   -
  25 +# apt-get -t lenny-backports install ejabberd
  26 +# apt-get install odbc-postgresql
25 27  
26 28 2. Ejabberd configuration
27 29  
... ... @@ -31,24 +33,26 @@ All the following changes must be done in config file:
31 33  
32 34 2.1. Set the default admin user
33 35  
34   -{ acl, admin, { user, "", "localhost" } }.
  36 +{ acl, admin, { user, "john", "www.example.com" } }.
  37 +{ acl, admin, { user, "bart", "www.example.com" } }.
35 38  
36 39 2.2. Set the default host
37 40  
38   -{ hosts, [ "localhost" ] }.
  41 +{ hosts, [ "www.example.com" ] }.
39 42  
40 43 2.3. Http-Bind activation
41 44  
42 45 { 5280, ejabberd_http, [
43   - http bind,
44   - ]
  46 + http_bind,
  47 + web_admin
  48 + ]
45 49 }
46 50  
47 51 (...)
48 52  
49 53 { modules, [
50   - ...
51   - { mod_http_bind, [] }
  54 + {mod_http_bind, []},
  55 + ...
52 56 ] }.
53 57  
54 58 Ejabberd creates semi-anonymous rooms by default, but Noosfero's Jabber client
... ... @@ -59,16 +63,16 @@ In non-anonymous rooms the jabber service sends the new occupant's full JID to
59 63 all occupants in the room[1].
60 64  
61 65 Add option "{default_room_options, [{anonymous, false}]}" to
62   -/etc/ejabberd/ejabberd.cfg to mod_muc session. See below:
  66 +/etc/ejabberd/ejabberd.cfg in mod_muc session. See below:
63 67  
64 68 { mod_muc, [
65   - %%{host, "conference.@HOST@"},
66   - {access, muc},
67   - {access_create, muc},
68   - {access_persistent, muc},
69   - {access_admin, muc_admin},
70   - {max_users, 500},
71   - {default_room_options, [{anonymous, false}]}
  69 + %%{host, "conference.@HOST@"},
  70 + {access, muc},
  71 + {access_create, muc},
  72 + {access_persistent, muc},
  73 + {access_admin, muc_admin},
  74 + {max_users, 500},
  75 + {default_room_options, [{anonymous, false}]}
72 76 ]},
73 77  
74 78 [1] - http://xmpp.org/extensions/xep-0045.html#enter-nonanon
... ... @@ -80,12 +84,15 @@ To use Postgresql through ODBC, the following modifications must be done:
80 84  
81 85 * Disable the default method:
82 86  
83   -{ auth_method, internal }.
  87 +{auth_method, internal}.
84 88  
85 89 * Enable autheticantion through ODBC:
86 90  
87   -{ auth_method, odbc }.
88   -{ odbc_server, "DSN=PSQLejabberd" }.
  91 +{auth_method, odbc}.
  92 +
  93 + * Set database server name
  94 +
  95 +{odbc_server, "DSN=PostgreSQLEjabberdNoosfero"}.
89 96  
90 97  
91 98 2.5. Increase the shaper traffic limit
... ... @@ -102,62 +109,74 @@ Unused modules can be disabled, for example:
102 109 * mod_pubsub
103 110 * mod_irc
104 111 * mod_offine
105   - * ...
  112 + * mod_admin_extra
  113 + * mod_register
106 114  
107 115  
  116 + 2.7. Enable ODBC modules
  117 +
  118 + * mod_privacy -> mod_privacy_odbc
  119 + * mod_private -> mod_private_odbc
  120 + * mod_roster -> mod_roster_odbc
  121 +
108 122 3. Configuring Postgresql
109 123  
110   -Change to the noosfero user, and:
  124 +Login as noosfero user, and execute:
111 125  
112   - $ psql noosfero_production < /path/to/noosfero/util/chat/postgresql/ejabberd.sql
  126 + $ psql noosfero < /path/to/noosfero/util/chat/postgresql/ejabberd.sql
113 127  
114   -where "noosfero_production" may need to be replace by the name of the
115   -database used for noosfero.
  128 +Where 'noosfero' may need to be replace by the name of the database used for
  129 +Noosfero.
116 130  
117 131 This will create a new schema inside the noosfero database, called 'ejabberd'.
118 132  
  133 +Note 'noosfero' user should have permission to create Postgresql schemas. Also,
  134 +there should be at least one domain with 'is_default = true' in 'domains'
  135 +table, otherwise people couldn't see your friends online.
  136 +
  137 +
119 138 4. ODBC configuration
120 139  
121 140 The following files must be created:
122 141  
123 142 * /etc/odbc.ini
124 143  
125   -[ PSQLejabberd ]
126   - Description = PostgreSQL
127   - Driver = PostgreSQL Unicode
128   - Trace = No
129   - TraceFile = /tmp/psqlodbc.log
130   - Database = ejabberd
131   - Servername = localhost
132   - UserName = USER
133   - Password = PASSWORD
134   - Port =
135   - ReadOnly = No
136   - RowVersioning = No
137   - ShowSystemTables= No
138   - ShowOidColumn = No
139   - FakeOidIndex = No
140   - ConnSettings = SET search_path TO ejabberd
  144 +[PostgreSQLEjabberdNoosfero]
  145 +Description = PostgreSQL Noosfero ejabberd database
  146 +Driver = PostgreSQL Unicode
  147 +Trace = No
  148 +TraceFile = /tmp/psqlodbc.log
  149 +Database = noosfero
  150 +Servername = localhost
  151 +UserName = <DBUSER>
  152 +Password = <DBPASS>
  153 +Port =
  154 +ReadOnly = No
  155 +RowVersioning = No
  156 +ShowSystemTables = No
  157 +ShowOidColumn = No
  158 +FakeOidIndex = No
  159 +ConnSettings = SET search_path TO ejabberd
141 160  
142 161 * /etc/odbcinst.ini
143 162  
144   -[ PostgreSQL Unicode ]
145   - Description = PostgreSQL ODBC driver ( Unicode version )
146   - Driver = /usr/lib/odbc/psqlodbcw.so
147   - Setup = /usr/lib/odbc/libodbcpsqlS.so
148   - Debug = 0
149   - CommLog = 1
150   - UsageCount = 3
  163 +[PostgreSQL Unicode]
  164 +Description = PostgreSQL ODBC driver (Unicode version)
  165 +Driver = /usr/lib/odbc/psqlodbcw.so
  166 +Setup = /usr/lib/odbc/libodbcpsqlS.so
  167 +Debug = 0
  168 +CommLog = 1
  169 +UsageCount = 3
151 170  
152 171 * testing all:
153 172  
154   -# isql 'PSQLejabberd' USER
  173 +# isql 'PostgreSQLEjabberdNoosfero' DBUSER
155 174  
156 175  
157 176 5. Enabling kernel polling and SMP in /etc/default/ejabberd
158 177  
159   -POLL = true
160   -SMP = auto
  178 +POLL=true
  179 +SMP=auto
161 180  
162 181  
163 182 6. Increase the file descriptors limit for user ejabberd
... ... @@ -169,8 +188,8 @@ session required pam_limits.so
169 188  
170 189 6.2. Add this lines to file /etc/security/limits.conf:
171 190  
172   -ejabberd hard nofile 65536
173   -ejabberd soft nofile 65536
  191 +ejabberd hard nofile 65536
  192 +ejabberd soft nofile 65536
174 193  
175 194 Now, test the configuration:
176 195  
... ... @@ -179,26 +198,23 @@ Now, test the configuration:
179 198  
180 199 7. Apache Configuration
181 200  
182   -Be our server is jabber-br.org, Apache server must be configurated as follow:
  201 +Apache server must be configurated as follow:
183 202  
184   - * /etc/apache2/sites-available/jabber-br-proxy:
  203 + * /etc/apache2/sites-enabled/noosfero
185 204  
186   -ProxyPass /http-bind/ https://jabber-br.org:5280/http-bind/
187   - <Proxy ∗>
188   - Order deny, allow
189   - Allow from all
190   - </Proxy>
  205 +RewriteEngine On
  206 +Include /usr/share/noosfero/util/chat/apache/xmpp.conf
191 207  
192 208 * /etc/apache2/apache2.conf:
193 209  
194 210 <IfModule mpm_worker_module>
195   - StartServers 8
196   - MinSpareThreads 25
197   - MaxSpareThreads 75
198   - ThreadLimit 128
199   - ThreadsPerChild 128
200   - MaxClients 2048
201   - MaxRequestsPerChild 0
  211 + StartServers 8
  212 + MinSpareThreads 25
  213 + MaxSpareThreads 75
  214 + ThreadLimit 128
  215 + ThreadsPerChild 128
  216 + MaxClients 2048
  217 + MaxRequestsPerChild 0
202 218 </IfModule>
203 219  
204 220 Note: module proxy_http must be enabled:
... ... @@ -210,10 +226,10 @@ Note: module proxy_http must be enabled:
210 226  
211 227 * /etc/bind/db.colivre:
212 228  
213   -_xmpp-client._tcp SRV 5 100 5222 master
  229 +_xmpp-client._tcp SRV 5 100 5222 master
214 230 (...)
215   -conference CNAME master
216   -_xmpp-client._tcp.conference SRV 5 100 5222 master
  231 +conference CNAME master
  232 +_xmpp-client._tcp.conference SRV 5 100 5222 master
217 233  
218 234  
219 235 9. Testing this Setup
... ... @@ -237,4 +253,3 @@ To measure the bandwidth between server and client:
237 253 For heavy load tests, clone and use this software:
238 254  
239 255 git clone http://git.holoscopio.com/git/metal/tester.git
240   -
... ...
util/chat/postgresql/ejabberd.sql
... ... @@ -36,12 +36,6 @@ CREATE VIEW users AS
36 36 WHERE
37 37 e.is_default;
38 38  
39   -CREATE TABLE last (
40   - username text PRIMARY KEY,
41   - seconds text NOT NULL,
42   - state text NOT NULL
43   -);
44   -
45 39 CREATE VIEW rosterusers AS
46 40 select
47 41 p1.identifier AS username, -- text NOT NULL,
... ...