Commit 6cced7ffd54675cde9bbcc455962c11ee85e15f8
Committed by
Antonio Terceiro
1 parent
39e83093
Exists in
master
and in
28 other branches
Added instructions to XMPP chat setup.
Step-by-step instructions to setup a XMPP server for Noosfero chat. This include Ejabberd, ODBC, PostgreSQL, Apache and DNS configurations. This instructions were originally written by Marcelo Jorge Vieira <metal@holoscopio.com>, now revised, translated and "formated".
Showing
1 changed file
with
217 additions
and
14 deletions
Show diff stats
INSTALL.chat
... | ... | @@ -13,11 +13,47 @@ To configure XMPP/BOSH in Noosfero you need: |
13 | 13 | Take a look at util/chat directory to see samples of config file to configure a |
14 | 14 | XMPP/BOSH server with ejabberd, postgresql and apache2. |
15 | 15 | |
16 | -== Server setup | |
17 | 16 | |
18 | -Ejabberd creates semi-anonymous rooms by default, but Noosfero's Jabber client needs | |
19 | -non-anonymous room, then we need to change default params of creation rooms in ejabberd | |
20 | -to create non-anonymous rooms. | |
17 | +== XMPP Server Setup | |
18 | + | |
19 | +This is a step-by-step guide to get a XMPP service working, in a Debian system. | |
20 | + | |
21 | +1. Install the required packages | |
22 | + | |
23 | +# aptitude install ejabberd odbc-postgresql | |
24 | + | |
25 | + | |
26 | +2. Ejabberd configuration | |
27 | + | |
28 | +All the following changes must be done in config file: | |
29 | + | |
30 | + /etc/ejabberd/ejabberd.cfg | |
31 | + | |
32 | + 2.1. Set the default admin user | |
33 | + | |
34 | +{ acl, admin, { user, "", "localhost" } }. | |
35 | + | |
36 | + 2.2. Set the default host | |
37 | + | |
38 | +{ hosts, [ "localhost" ] }. | |
39 | + | |
40 | + 2.3. Http-Bind activation | |
41 | + | |
42 | +{ 5280, ejabberd_http, [ | |
43 | + http bind, | |
44 | + ] | |
45 | +} | |
46 | + | |
47 | +(...) | |
48 | + | |
49 | +{ modules, [ | |
50 | + ... | |
51 | + { mod_http_bind, [] } | |
52 | +] }. | |
53 | + | |
54 | +Ejabberd creates semi-anonymous rooms by default, but Noosfero's Jabber client | |
55 | +needs non-anonymous room, then we need to change default params of creation | |
56 | +rooms in ejabberd to create non-anonymous rooms. | |
21 | 57 | |
22 | 58 | In non-anonymous rooms the jabber service sends the new occupant's full JID to |
23 | 59 | all occupants in the room[1]. |
... | ... | @@ -25,15 +61,182 @@ all occupants in the room[1]. |
25 | 61 | Add option "{default_room_options, [{anonymous, false}]}" to |
26 | 62 | /etc/ejabberd/ejabberd.cfg to mod_muc session. See below: |
27 | 63 | |
28 | - {mod_muc, [ | |
29 | - %%{host, "conference.@HOST@"}, | |
30 | - {access, muc}, | |
31 | - {access_create, muc}, | |
32 | - {access_persistent, muc}, | |
33 | - {access_admin, muc_admin}, | |
34 | - {max_users, 500}, | |
35 | - {default_room_options, [{anonymous, false}]} | |
36 | - ]}, | |
37 | - | |
64 | +{ 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}]} | |
72 | +]}, | |
38 | 73 | |
39 | 74 | [1] - http://xmpp.org/extensions/xep-0045.html#enter-nonanon |
75 | + | |
76 | + | |
77 | + 2.4. Authentication method | |
78 | + | |
79 | +To use Postgresql through ODBC, the following modifications must be done: | |
80 | + | |
81 | + * Disable the default method: | |
82 | + | |
83 | +{ auth_method, internal }. | |
84 | + | |
85 | + * Enable autheticantion through ODBC: | |
86 | + | |
87 | +{ auth_method, odbc }. | |
88 | +{ odbc_server, "DSN=PSQLejabberd" }. | |
89 | + | |
90 | + | |
91 | + 2.5. Increase the shaper traffic limit | |
92 | + | |
93 | +{ shaper, normal, { maxrate, 10000000 } }. | |
94 | + | |
95 | + | |
96 | + 2.6. Disable unused modules | |
97 | + | |
98 | +Unused modules can be disabled, for example: | |
99 | + | |
100 | + * s2s | |
101 | + * web_admin | |
102 | + * mod_pubsub | |
103 | + * mod_irc | |
104 | + * mod_offine | |
105 | + * ... | |
106 | + | |
107 | + | |
108 | +3. Configuring Postgresql | |
109 | + | |
110 | + 3.1. Create a new database | |
111 | + | |
112 | +# createdb ejabberd | |
113 | + | |
114 | + | |
115 | + 3.2. Basic database scheme for this setup: | |
116 | + | |
117 | +# zcat /usr/share/doc/ejabberd/examples/pg.sql.gz > pg.sql | |
118 | +# psql ejabberd < pg.sql | |
119 | + | |
120 | + | |
121 | +4. ODBC configuration | |
122 | + | |
123 | +The following files must be created: | |
124 | + | |
125 | + * /etc/odbc.ini | |
126 | + | |
127 | +[ PSQLejabberd ] | |
128 | + Description = PostgreSQL | |
129 | + Driver = PostgreSQL Unicode | |
130 | + Trace = No | |
131 | + TraceFile = /tmp/psqlodbc.log | |
132 | + Database = ejabberd | |
133 | + Servername = localhost | |
134 | + UserName = USER | |
135 | + Password = PASSWORD | |
136 | + Port = | |
137 | + ReadOnly = No | |
138 | + RowVersioning = No | |
139 | + ShowSystemTables= No | |
140 | + ShowOidColumn = No | |
141 | + FakeOidIndex = No | |
142 | + ConnSettings = | |
143 | + | |
144 | + * /etc/odbcinst.ini | |
145 | + | |
146 | +[ PostgreSQL Unicode ] | |
147 | + Description = PostgreSQL ODBC driver ( Unicode version ) | |
148 | + Driver = /usr/lib/odbc/psqlodbcw.so | |
149 | + Setup = /usr/lib/odbc/libodbcpsqlS.so | |
150 | + Debug = 0 | |
151 | + CommLog = 1 | |
152 | + UsageCount = 3 | |
153 | + | |
154 | + * testing all: | |
155 | + | |
156 | +# isql 'PSQLejabberd' USER | |
157 | + | |
158 | + | |
159 | +5. Enabling kernel polling and SMP in /etc/default/ejabberd | |
160 | + | |
161 | +POLL = true | |
162 | +SMP = auto | |
163 | + | |
164 | + | |
165 | +6. Increase the file descriptors limit for user ejabberd | |
166 | + | |
167 | + 6.1. Uncomment this line in file /etc/pam.d/su: | |
168 | + | |
169 | +session required pam_limits.so | |
170 | + | |
171 | + | |
172 | + 6.2. Add this lines to file /etc/security/limits.conf: | |
173 | + | |
174 | +ejabberd hard nofile 65536 | |
175 | +ejabberd soft nofile 65536 | |
176 | + | |
177 | +Now, test the configuration: | |
178 | + | |
179 | +# cat /proc/<EJABBERD_BEAM_PROCESS_PID>/limits | |
180 | + | |
181 | + | |
182 | +7. Apache Configuration | |
183 | + | |
184 | +Be our server is jabber-br.org, Apache server must be configurated as follow: | |
185 | + | |
186 | + * /etc/apache2/sites-available/jabber-br-proxy: | |
187 | + | |
188 | +ProxyPass /http-bind/ https://jabber-br.org:5280/http-bind/ | |
189 | + <Proxy ∗> | |
190 | + Order deny, allow | |
191 | + Allow from all | |
192 | + </Proxy> | |
193 | + | |
194 | + * /etc/apache2/apache2.conf: | |
195 | + | |
196 | +<IfModule mpm_worker_module> | |
197 | + StartServers 8 | |
198 | + MinSpareThreads 25 | |
199 | + MaxSpareThreads 75 | |
200 | + ThreadLimit 128 | |
201 | + ThreadsPerChild 128 | |
202 | + MaxClients 2048 | |
203 | + MaxRequestsPerChild 0 | |
204 | +</IfModule> | |
205 | + | |
206 | +Note: module proxy_http must be enabled: | |
207 | + | |
208 | +# a2enmod proxy_http | |
209 | + | |
210 | + | |
211 | +8. DNS configuration | |
212 | + | |
213 | + * /etc/bind/db.colivre: | |
214 | + | |
215 | +_xmpp-client._tcp SRV 5 100 5222 master | |
216 | +(...) | |
217 | +conference CNAME master | |
218 | +_xmpp-client._tcp.conference SRV 5 100 5222 master | |
219 | + | |
220 | + | |
221 | +9. Testing this Setup | |
222 | + | |
223 | +Adjust shell limits to proceed with some benchmarks and load tests: | |
224 | + | |
225 | +# ulimit −s 256 | |
226 | +# ulimit −n 8192 | |
227 | +# echo 10 > /proc/sys/net/ipv4/tcp_syn_retries | |
228 | + | |
229 | +To measure the bandwidth between server and client: | |
230 | + | |
231 | + * at server side: | |
232 | + | |
233 | +# iperf −s | |
234 | + | |
235 | + * at client side: | |
236 | + | |
237 | +# iperf −c server_ip | |
238 | + | |
239 | +For heavy load tests, clone and use this software: | |
240 | + | |
241 | +git clone http://git.holoscopio.com/git/metal/tester.git | |
242 | + | ... | ... |