Commit 22fce6dddb7570e1d997f625a421b72da61f594d
Committed by
Antonio Terceiro
1 parent
69383c66
Exists in
master
and in
29 other branches
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 | 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, |