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
1 -== Client setup 1 +== XMPP/Chat Client Setup
2 2
3 To configure XMPP/BOSH in Noosfero you need: 3 To configure XMPP/BOSH in Noosfero you need:
4 4
@@ -6,22 +6,24 @@ To configure XMPP/BOSH in Noosfero you need: @@ -6,22 +6,24 @@ To configure XMPP/BOSH in Noosfero you need:
6 * SystemTimer - http://ph7spot.com/musings/system-timer 6 * SystemTimer - http://ph7spot.com/musings/system-timer
7 * Pidgin data files - http://www.pidgin.im/ 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 # apt-get install pidgin-data 12 # apt-get install pidgin-data
  13 +# apt-get install ruby1.8-dev
  14 +# gem install SystemTimer
12 15
13 Take a look at util/chat directory to see samples of config file to configure a 16 Take a look at util/chat directory to see samples of config file to configure a
14 XMPP/BOSH server with ejabberd, postgresql and apache2. 17 XMPP/BOSH server with ejabberd, postgresql and apache2.
15 18
16 -  
17 -== XMPP Server Setup 19 +== XMPP/Chat Server Setup
18 20
19 This is a step-by-step guide to get a XMPP service working, in a Debian system. 21 This is a step-by-step guide to get a XMPP service working, in a Debian system.
20 22
21 1. Install the required packages 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 2. Ejabberd configuration 28 2. Ejabberd configuration
27 29
@@ -31,24 +33,26 @@ All the following changes must be done in config file: @@ -31,24 +33,26 @@ All the following changes must be done in config file:
31 33
32 2.1. Set the default admin user 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 2.2. Set the default host 39 2.2. Set the default host
37 40
38 -{ hosts, [ "localhost" ] }. 41 +{ hosts, [ "www.example.com" ] }.
39 42
40 2.3. Http-Bind activation 43 2.3. Http-Bind activation
41 44
42 { 5280, ejabberd_http, [ 45 { 5280, ejabberd_http, [
43 - http bind,  
44 - ] 46 + http_bind,
  47 + web_admin
  48 + ]
45 } 49 }
46 50
47 (...) 51 (...)
48 52
49 { modules, [ 53 { modules, [
50 - ...  
51 - { mod_http_bind, [] } 54 + {mod_http_bind, []},
  55 + ...
52 ] }. 56 ] }.
53 57
54 Ejabberd creates semi-anonymous rooms by default, but Noosfero's Jabber client 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,16 +63,16 @@ In non-anonymous rooms the jabber service sends the new occupant's full JID to
59 all occupants in the room[1]. 63 all occupants in the room[1].
60 64
61 Add option "{default_room_options, [{anonymous, false}]}" to 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 { mod_muc, [ 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 [1] - http://xmpp.org/extensions/xep-0045.html#enter-nonanon 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,12 +84,15 @@ To use Postgresql through ODBC, the following modifications must be done:
80 84
81 * Disable the default method: 85 * Disable the default method:
82 86
83 -{ auth_method, internal }. 87 +{auth_method, internal}.
84 88
85 * Enable autheticantion through ODBC: 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 2.5. Increase the shaper traffic limit 98 2.5. Increase the shaper traffic limit
@@ -102,62 +109,74 @@ Unused modules can be disabled, for example: @@ -102,62 +109,74 @@ Unused modules can be disabled, for example:
102 * mod_pubsub 109 * mod_pubsub
103 * mod_irc 110 * mod_irc
104 * mod_offine 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 3. Configuring Postgresql 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 This will create a new schema inside the noosfero database, called 'ejabberd'. 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 4. ODBC configuration 138 4. ODBC configuration
120 139
121 The following files must be created: 140 The following files must be created:
122 141
123 * /etc/odbc.ini 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 * /etc/odbcinst.ini 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 * testing all: 171 * testing all:
153 172
154 -# isql 'PSQLejabberd' USER 173 +# isql 'PostgreSQLEjabberdNoosfero' DBUSER
155 174
156 175
157 5. Enabling kernel polling and SMP in /etc/default/ejabberd 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 6. Increase the file descriptors limit for user ejabberd 182 6. Increase the file descriptors limit for user ejabberd
@@ -169,8 +188,8 @@ session required pam_limits.so @@ -169,8 +188,8 @@ session required pam_limits.so
169 188
170 6.2. Add this lines to file /etc/security/limits.conf: 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 Now, test the configuration: 194 Now, test the configuration:
176 195
@@ -179,26 +198,23 @@ Now, test the configuration: @@ -179,26 +198,23 @@ Now, test the configuration:
179 198
180 7. Apache Configuration 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 * /etc/apache2/apache2.conf: 208 * /etc/apache2/apache2.conf:
193 209
194 <IfModule mpm_worker_module> 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 </IfModule> 218 </IfModule>
203 219
204 Note: module proxy_http must be enabled: 220 Note: module proxy_http must be enabled:
@@ -210,10 +226,10 @@ Note: module proxy_http must be enabled: @@ -210,10 +226,10 @@ Note: module proxy_http must be enabled:
210 226
211 * /etc/bind/db.colivre: 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 9. Testing this Setup 235 9. Testing this Setup
@@ -237,4 +253,3 @@ To measure the bandwidth between server and client: @@ -237,4 +253,3 @@ To measure the bandwidth between server and client:
237 For heavy load tests, clone and use this software: 253 For heavy load tests, clone and use this software:
238 254
239 git clone http://git.holoscopio.com/git/metal/tester.git 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,12 +36,6 @@ CREATE VIEW users AS
36 WHERE 36 WHERE
37 e.is_default; 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 CREATE VIEW rosterusers AS 39 CREATE VIEW rosterusers AS
46 select 40 select
47 p1.identifier AS username, -- text NOT NULL, 41 p1.identifier AS username, -- text NOT NULL,