1 OpenGroupware.org Installation Guide
2 ====================================
9 - download from: http://www.sogo.nu/english/downloads/backend.html
10 - gnustep-make >= 2.6.1
11 - download from: ftp://ftp.gnustep/org/pub/gnustep/core
13 - download from: http://download.gna.org/gnustep/
15 - when compiling with gcc < 4.6 or clang then gnustep-base >= 1.22.1
16 - when compiling with gcc >= 4.6, then from svn
17 - download from: ftp://ftp.gnustep/org/pub/gnustep/core
18 - dependent packages: The names are from OpenSUSE 12.1, and may differ
19 depending on your Linux distribution
20 - libxml2/libxml2-devel
21 - openldap2/openldap2-devel
22 - postgresql/postgresql-devel
24 - apache2/apache2-devel and corresponding devel packages
25 - libapr1/libapr1-devel
27 Installing dependencies
28 =======================
29 If you OS/Distribution has packages of the required dependencies, then
30 its recommended to install those.
31 Otherwise install the dependencies, following their installation instructions
32 in the following order:
34 libxml2/openldap2/postgresql
43 If the prerequisites are properly fulfilled, building OpenGroupware.org is
49 Installation should only take a couple of minutes/seconds, depending on the speed
52 In case make fails while building mod_ngobjweb, then its likely that it cannot
53 find the apr-utils. You can specify those as parameters, for example on OpenSUSE:
54 $ make APXS=/usr/bin/apr-1-config APXS=/usr/sbin/apxs2
63 TODO: write configuration guide for OGo
67 - starting OGo on the shell
76 psql -h localhost OGo OGo (must work)
77 => if this doesn't work, you need to allow TCP/IP in pg_hba.conf, eg:
78 "host OGo OGo 127.0.0.1 255.255.255.255 trust"
79 (you should use appropriate password auth in deployments!)
81 > ALTER ROLE "OGo" WITH PASSWORD 'abc123';
83 cd Database/PostgreSQL/
84 psql -h localhost OGo OGo < pg-build-schema.psql
88 You should not run OGo as root, therefore create a system user:
91 sudo useradd -d /var/opengroupware -g ogo ogo
92 sudo mkdir /var/opengroupware
93 sudo mkdir /var/log/opengroupware
94 sudo chown ogo:ogo /var/opengroupware /var/log/opengroupware
99 You have to edit your httpd.conf file, or whatever is appropriate for
100 your OS/Distribution.
102 Load the ngobjweb module:
103 LoadModule ngobjweb_module /usr/lib/apache/modules/mod_ngobjweb.so
105 Then you can add the following to your VirtualHost entry:
107 <IfModule ngobjweb_module.c>
108 <LocationMatch "^/OpenGroupware55*">
111 <LocationMatch "^/OpenGroupware*">
113 SetHandler ngobjweb-adaptor
115 <LocationMatch ^/zidestore/*>
117 SetHandler ngobjweb-adaptor
119 <LocationMatch ^/xmlrpcd/*>
121 SetHandler ngobjweb-adaptor
128 as ogo system user do:
129 $ defaults write ogo-webui WOPidFile /var/opengroupware/ogo-webui.pid
130 $ defaults write ogo-zidestore WOPidFile /var/opengroupware/ogo-zidestore.pid
131 $ defaults write ogo-xmlrpcd WOPidFile /var/opengroupware/ogo-xmlrpcd.pid
132 $ defaults write ogo-webui WOLogFile /var/log/opengroupware/ogo-webui.log
133 $ defaults write ogo-zidestore WOLogFile /var/log/opengroupware/ogo-zidestore.log
134 $ defaults write ogo-xmlrpcd WOLogFile /var/log/opengroupware/ogo-xmlrpcd.log
135 $ defaults write ogo-webui WOPort 20000
136 $ defaults write ogo-zidestore WOPort 21000
137 $ defaults write ogo-xmlrpcd WOPort 22000
138 $ defaults write NSGlobalDomain imap_host 127.0.0.1
139 $ defaults write NSGlobalDomain UseSkyrixLoginForImap YES
140 $ defaults write NSGlobalDomain LDAPInitialBindSpecific YES
141 $ defaults write NSGlobalDomain LDAPLoginAttributeName uid
142 $ defaults write NSGlobalDomain LSAuthLDAPServerPort 389
143 $ defaults write NSGlobalDomain LSAuthLDAPServerRoot ou=People,dc=MyDomain
144 $ defaults write NSGlobalDomain LSAuthLDAPServer 127.0.0.1
145 $ defaults write NSGlobalDomain LSConnectionDictionary \
146 '{userName="OGo"; databaseName="OGo";hostName="localhost";password="abc123";}'
148 For more information consult the WMOGAG (WiteMice OGo Admin Guide).
154 $ /usr/local/sbin/ogo-webui
155 $ /usr/local/sbin/ogo-zidestore
156 $ /usr/local/sbin/ogo-xmlrpcd
161 Init-Scripts depend on the actual platform, so you need to
162 come up with an own. The templates used for the RPM packages can
164 maintenance/rpm_buildenvironment/initscript_templates/
166 Upgrading from older versions to 5.5
167 ====================================
168 NOTE: In case you had the commercial snsd running with old version
169 of OGo, this will not work anymore. There may be a replacement
170 in the future, but for now it is not supported.
172 If you are upgrading, removing defaults should work fine if you use
173 defaults values, thats is:
174 defaults delete NSGlobalDomain LSModelName
175 defaults delete NSGlobalDomain NGBundlePath
176 defaults delete NSGlobalDomain LSAdaptor
178 Since the names of the binaries do not have the version number
179 included anymore, you may have to change the defaults to match
180 the new names of the binaries.
183 Documentation for new features
184 ==============================
186 Location based services
187 =======================
189 Show addresses on Google Maps
190 +++++++++++++++++++++++++++++
192 You can now show an address, or multiple addresses with markers on Google Maps,
193 via the Google Maps API. To do so, you have to register an KEY for your domain.
194 You have to register your domain here: http://code.google.com/apis/maps/signup.html
196 defaults write NSGlobalDomaon GoogleMapsURL http://maps.google.com/maps?file=api&v=2&key=<YOUR KEY GOES HERE>
198 You have to define a center for the map, when multiple markers are shown:
199 defaults write NSGLobalDomain NSGlobalDomain GoogleMapsCenterCoordinates 52.000,12.0000
201 For each address shown on the MAP, OGo will create a little XML file, which is cached on the
202 server. The web server should be able to read that directory, and the OGo system user
203 should be able to write to that directory:
204 defaults write NSGlobalDomain GoogleMapsXMLCoordinatesWebBaseURL https://www.l00-bugdead-prods.de/coordinates
205 defaults write NSGlobalDomain GoogleMapsXMLCoordinatesFileBaseURL /var/www/htdocs/coordinates
207 To be able to access location based services that needs the coordinates. OGo must be able to
208 resolve the coordinates from the addresses via the Google Geocoding API.
209 You have to define the following default:
211 defaults write NSGlobalDomain GoogleGeocodingURL http://maps.google.com/maps/geo?q=$STREET$+$CITY$+$ZIP$+$COUNTRY$&output=csv&key=<YOUR KEY GOES HERE>
213 To access location based services related to an address, you have to define the OGoAddressMapLinks default.
214 Take this as an example:
216 NSGlobalDomain OGoAddressMapLinks '{
218 UseGoogleMapsAPI = YES;
219 icon = "GeoCaching.png";
221 url = "http://www.geocaching.com/seek/nearest.aspx?origin_lat=$LATITUDE$&origin_long=$LONGITUDE$";
223 GermanWeatherService = {
224 UseGoogleMapsAPI = NO;
227 url = "http://wetter.rtl.de/shared/php/search_plz_ort.php?in=$ZIP$";
230 UseGoogleMapsAPI = NO;
231 icon = "GoogleMaps.png";
233 url = "http://maps.google.de/maps?f=q&output=html&q=$COUNTRY$+$ZIP$+$CITY$+$STREET$&btnG=Maps-Suche";
236 UseGoogleMapsAPI = YES;
237 icon = "OpenStreetMap.png";
239 url = "http://www.openstreetmap.org/?lat=$LATITUDE$&lon=$LONGITUDE$&zoom=15&layers=B00FF";
243 Each entry in the list defines a location based service, the parameters are as follows:
244 * UseGoogleMapsAPI: YES/NO - set to YES in case LAT/LON needs to be used to access the service, otherwise NO
245 * icon: The name of the icon to be used for this service
246 * a copy of the icon has to be placed into each Themes icon directory
247 * target: the name of the new window/tab that will be opened
248 * url: the URL to access the service
251 CTI Integration with Asterisk
252 =============================
254 It is now possible to trigger phone calls via Asterisk PBX.
256 Since the CTI integration is a plugin, there can be multiple dialers in the future, so for
257 now you have to choose the AsteriskDialer:
258 defaults write NSGlobalDomain CTIDialer AsteriskDialer
260 In case you need to suffix the number to dial with something you can use the
261 CTIPersonTelephoneFieldSuffix, otherwise, leave it empty:
262 defaults write NSGlobalDomain CTIPersonTelephoneFieldSuffix ''
264 To define, weather your phones are IAX2, SIP or others, you have to specify
265 this in the CTIPersonTelephoneFieldPrefix default. This limits the group
266 of possible telephones to one client type, but will possibly change in the
268 defaults write NSGlobalDomain CTIPersonTelephoneFieldPrefix 'IAX2/'
270 In case you need to add a 0 to dial out, you have to configure the following:
271 defaults write NSGlobalDomain AsteriskDialOutPrefix '0'
273 In case you need to differentiate when between outgoing and internal calls, i.e.
274 when you need to prefix the call with 0, you have to specify the lenght of internal
277 defaults write NSGlobalDomain AsteriskInternalExtensionLength 4
279 You have to specify the outgoing and internal contexts:
280 defaults write NSGlobalDomain AsteriskOutgoingContext default
281 defaults write NSGlobalDomain AsteriskInternalContext internal
283 You have to set the CTIPreferTelephoneField default to YES when you want to use
284 the numbers stored in a telephone field. Otherwise you have to define a mapping
285 of computers IP addresses with telephones.
286 defaults write NSGlobalDomain CTIPreferTelephoneField YES
288 You have to define the telephone field you want to use:
289 defaults write CTIPersonTelephoneField 04_tel_ext
291 In case you chose a non standard telephone field, you have to define the
292 chosen telephone field in the LSTeleType default for the Person:
294 NSGlobalDomain LSTeleType '{
313 The connection to the asterisk is configured using the AsteriskCommands and
314 the OGoAsteriskConnectionDictionary defaults:
316 NSGlobalDomain OGoAsteriskConnectionDictionary '{
317 hostName = "127.0.0.1";
321 NSGlobalDomain AsteriskCommands '{
324 ExpectedResult = Success;
327 Secret = <YOUR AGI PASSWORD GOES HERE>;
328 Username = <YOUR AGI USERNAME GOES HERE>;
333 ExpectedResult = Success;
344 ExpectedResult = Pong;