Wiki source code of Guide d'installation Linux
Last modified by Aurelie Bertrand on 2024/11/25 11:18
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | (% class="wikigeneratedid" %) | ||
2 | This guide provides installation and configuration instructions in a production environment on Ubuntu 20.04 and Ubuntu 22.04. | ||
3 | |||
4 | ---- | ||
5 | |||
6 | {{ddtoc/}} | ||
7 | |||
8 | ---- | ||
9 | |||
10 | (% class="box warningmessage" %) | ||
11 | ((( | ||
12 | Java is required to run DigDash. The minimum requirement is Java 11. We recommend using **Java 17**. | ||
13 | ))) | ||
14 | |||
15 | This document describes how to install DigDash on Linux. | ||
16 | |||
17 | To install DigDash on Windows, please refer to the [[Installation Guide for Windows>>doc:Digdash.deployment.installation.install_guide_windows.WebHome]]. | ||
18 | |||
19 | To update an existing installation, please refer to the [[Upgrade Guide>>doc:Digdash.deployment.installation.upgrade_dde.WebHome]]. | ||
20 | |||
21 | = Supported versions = | ||
22 | |||
23 | The following versions are supported : | ||
24 | |||
25 | * Tomcat 9 : last patch | ||
26 | * OpenDJ (recommended) : version 4.6.2 and later | ||
27 | * MariaDB : OS version or last patch of last LTS version | ||
28 | * Nginx : system version | ||
29 | |||
30 | ((( | ||
31 | = Digdash = | ||
32 | ))) | ||
33 | |||
34 | == OpenJDK == | ||
35 | |||
36 | (% class="box warningmessage" %) | ||
37 | ((( | ||
38 | It is recommended to install **JDK 17**. | ||
39 | JDK 11 is supported. | ||
40 | ))) | ||
41 | |||
42 | {{code language="shell"}} | ||
43 | # Install last version of openjdk | ||
44 | sudo apt install default-jdk | ||
45 | |||
46 | # Check the installation | ||
47 | java -version | ||
48 | {{/code}} | ||
49 | |||
50 | == Tomcat 9 == | ||
51 | |||
52 | === Installation === | ||
53 | |||
54 | {{code language="shell"}} | ||
55 | sudo apt install tomcat9 | ||
56 | {{/code}} | ||
57 | |||
58 | === Creating the file tree === | ||
59 | |||
60 | {{code language="shell"}} | ||
61 | # Location of webapps | ||
62 | sudo mkdir -p /home/digdash/webapps/default/ | ||
63 | # Working directory | ||
64 | sudo mkdir -p /home/digdash/appdata/default/ | ||
65 | # Location of the .properties file | ||
66 | sudo mkdir -p /etc/digdash/ | ||
67 | # Location of logs | ||
68 | sudo mkdir -p /var/log/digdash/ | ||
69 | {{/code}} | ||
70 | |||
71 | Changing folder rights | ||
72 | |||
73 | {{code language="shell"}} | ||
74 | sudo chown -R tomcat:tomcat /home/digdash | ||
75 | sudo chown -R tomcat:tomcat /var/log/digdash | ||
76 | sudo chmod a+w /var/log/digdash | ||
77 | {{/code}} | ||
78 | |||
79 | === Configuring server.xml === | ||
80 | |||
81 | (% class="wikigeneratedid" %) | ||
82 | Location : /etc/tomcat9/server.xml | ||
83 | |||
84 | ==== Location of webapps ==== | ||
85 | |||
86 | {{code language="shell"}} | ||
87 | # Replace the appBase value | ||
88 | <Host name="localhost" appBase="webapps" | ||
89 | |||
90 | # by this one | ||
91 | <Host name="localhost" appBase="/home/digdash/webapps/default" | ||
92 | {{/code}} | ||
93 | |||
94 | ==== Connector Valve ==== | ||
95 | |||
96 | {{code language="shell"}} | ||
97 | # Complete the Connector valve | ||
98 | <Connector port="8080" protocol="HTTP/1.1" | ||
99 | connectionTimeout="20000" | ||
100 | redirectPort="8443" ></Connector> | ||
101 | |||
102 | # as follows | ||
103 | <Connector port="8080" protocol="HTTP/1.1" | ||
104 | connectionTimeout="20000" | ||
105 | maxConnections="30000" | ||
106 | maxParameterCount="100000" | ||
107 | maxThreads="10000" maxPostSize="62914560" | ||
108 | redirectPort="8443" compression="on" ></Connector> | ||
109 | {{/code}} | ||
110 | |||
111 | ==== Reverse Proxy Valve ==== | ||
112 | |||
113 | {{code language="shell"}} | ||
114 | # Add this valve in the Host element near the end of the file | ||
115 | <Valve className="org.apache.catalina.valves.RemoteIpValve" | ||
116 | internalProxies="127\.0\.[0-1]\.1" | ||
117 | remoteIpHeader="X-Forwarded-For" | ||
118 | requestAttributesEnabled="true" | ||
119 | protocolHeader="X-Forwarded-Proto" | ||
120 | protocolHeaderHttpsValue="https"></Valve> | ||
121 | {{/code}} | ||
122 | |||
123 | In the case of an IPv6 server, use: | ||
124 | |||
125 | {{code language="shell"}} | ||
126 | <Valve className="org.apache.catalina.valves.RemoteIpValve" | ||
127 | internalProxies="127\.0\.[0-1]\.1|0:0:0:0:0:0:0:1|::1" | ||
128 | remoteIpHeader="X-Forwarded-For" | ||
129 | requestAttributesEnabled="true" | ||
130 | protocolHeader="X-Forwarded-Proto" | ||
131 | protocolHeaderHttpsValue="https"></Valve> | ||
132 | {{/code}} | ||
133 | |||
134 | (% class="box warningmessage" %) | ||
135 | ((( | ||
136 | In very rare cases, the reverse proxy is not installed on the machine. Then replace the value "127\.0\.[0-1]\.1" with the IP address of the reverse proxy. | ||
137 | ❗Attention: the use of “.*” should only be done as a last resort. | ||
138 | ))) | ||
139 | |||
140 | ==== Log Valve ==== | ||
141 | |||
142 | {{code language="shell"}} | ||
143 | # Add this valve in the Host element near the end of the file | ||
144 | <Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" ></Valve> | ||
145 | {{/code}} | ||
146 | |||
147 | ==== Limiting the localhost_access_log file (optional) ==== | ||
148 | |||
149 | To limit the size of the localhost_access_log file, add the //maxDays// parameter to the Access Log Valve and give it the value of the desired number of days. | ||
150 | |||
151 | {{code language="shell"}} | ||
152 | # For example | ||
153 | <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" | ||
154 | prefix="localhost_access_log" suffix=".txt" | ||
155 | pattern="%h %l %u %t "%r" %s %b" maxDays="10" ></Valve> | ||
156 | |||
157 | {{/code}} | ||
158 | |||
159 | === Editing the context.xml file === | ||
160 | |||
161 | (% class="wikigeneratedid" id="HEmplacement:2Fetc2Ftomcat92Fcontext.xml" %) | ||
162 | Location: /etc/tomcat9/context.xml | ||
163 | |||
164 | {{code language="shell"}} | ||
165 | # Add the following line in the <Context> tag | ||
166 | <Resources cachingAllowed="true" cacheMaxSize="100000"></Resources> | ||
167 | {{/code}} | ||
168 | |||
169 | [[image:edit_context_file.png]] | ||
170 | |||
171 | === Changing RAM === | ||
172 | |||
173 | {{code language="shell"}} | ||
174 | # Edit the following file | ||
175 | sudo vi /etc/default/tomcat9 | ||
176 | |||
177 | # Replace the existing JAVA_OPTS by | ||
178 | JAVA_OPTS="-Djava.awt.headless=true -XX:+UseShenandoahGC -Xms6G -Xmx6G -Djava.security.egd=file:/dev/urandom -DPROP_MAX_CONCURRENT_TOTAL=5000 -DPROP_MAX_CONCURRENT_CON_PER_HOST=5000" | ||
179 | |||
180 | # Change the 6G parameter depending on the capacity of the machine, leaving at least 2G for the OS. | ||
181 | # In the example above, the machine has 8G of RAM. | ||
182 | # It is recommended to use the same value for Xms and Xmx. | ||
183 | {{/code}} | ||
184 | |||
185 | === Activating log write permission for tomcat === | ||
186 | |||
187 | {{code language="shell"}} | ||
188 | # Create the folder in /etc/systemd/system/ | ||
189 | sudo mkdir -p /etc/systemd/system/tomcat9.service.d | ||
190 | |||
191 | # Create the file | ||
192 | sudo vi /etc/systemd/system/tomcat9.service.d/logging-allow.conf | ||
193 | |||
194 | # Add the following lines | ||
195 | [Service] | ||
196 | ReadWritePaths=/var/log/digdash/ | ||
197 | |||
198 | # Reload the "daemon" configuration | ||
199 | sudo systemctl daemon-reload | ||
200 | |||
201 | sudo systemctl restart tomcat9.service | ||
202 | {{/code}} | ||
203 | |||
204 | === Enabling automatic service start on startup === | ||
205 | |||
206 | {{code language="shell"}} | ||
207 | sudo systemctl enable tomcat9 | ||
208 | {{/code}} | ||
209 | |||
210 | == Deploying Digdash Version 24R1 == | ||
211 | |||
212 | {{warning}} | ||
213 | Download Digdash version. | ||
214 | |||
215 | Unzip the version you have just downloaded. | ||
216 | {{/warning}} | ||
217 | |||
218 | === Properties files === | ||
219 | |||
220 | Place the digdash.properties file (located at the root of the unzipped folder) in the folder// /etc/digdash//. | ||
221 | |||
222 | Create the following file in the folder /etc/digdash : | ||
223 | |||
224 | * [[log4j2_api.properties>>attach:log4j2_api.properties]] | ||
225 | * [[log4j2_dash.properties>>attach:log4j2_dash.properties]] | ||
226 | * [[log4j2_studio.properties>>attach:log4j2_studio.properties]] | ||
227 | |||
228 | Edit the digdash.properties file previously copied. | ||
229 | |||
230 | {{code language="shell"}} | ||
231 | # Add these lines at the beginning of the file | ||
232 | |||
233 | # Log files location | ||
234 | ddenterpriseapi.ddlog4j.properties.file=/etc/digdash/log4j2_api.properties | ||
235 | studio.ddlog4j.properties.file=/etc/digdash/log4j2_studio.properties | ||
236 | digdash_dashboard.ddlog4j.properties.file=/etc/digdash/log4j2_dash.properties | ||
237 | |||
238 | # Appadata location | ||
239 | ddenterpriseapi.AppDataPath=/home/digdash/appdata/default | ||
240 | digdash_dashboard.AppDataPath=/home/digdash/appdata/default | ||
241 | studio.AppDataPath=/home/digdash/appdata/default | ||
242 | adswrapper.ads.instance.name=/home/digdash/appdata/default/ldapdigdash | ||
243 | |||
244 | adminconsole.adminconsole_domain=adminconsole | ||
245 | adminconsole.webstudio_domain=studio | ||
246 | adminconsole.server_domain_list=ddenterpriseapi | ||
247 | adminconsole.dashboard_domain=digdash_dashboard | ||
248 | |||
249 | studio.DOMAIN=ddenterpriseapi | ||
250 | studio.FORCEDOMAIN=true | ||
251 | studio.SERVERURL=http://localhost:8080 | ||
252 | studio.FORCESERVERURL=true | ||
253 | studio.adminconsole_domain=adminconsole | ||
254 | |||
255 | digdash_dashboard.DOMAIN=ddenterpriseapi | ||
256 | digdash_dashboard.FORCEDOMAIN=true | ||
257 | digdash_dashboard.SERVERURL=http://localhost:8080 | ||
258 | digdash_dashboard.FORCESERVERURL=true | ||
259 | digdash_dashboard.adminconsole_domain=adminconsole | ||
260 | |||
261 | ########### Nettoyage automatique des fichiers programmé | ||
262 | ########### Scheduled automatic file cleaning | ||
263 | ddenterpriseapi.startCleaner=true | ||
264 | |||
265 | ########### Nettoyage des fichiers inutilisés au démarrage du serveur | ||
266 | ########### Clean up unused files on server startup | ||
267 | ddenterpriseapi.cleanOnStart=false | ||
268 | |||
269 | ########### Sauvegarde automatique programmée | ||
270 | ########### Scheduled automatic backup | ||
271 | ddenterpriseapi.autoBackup=true | ||
272 | ddenterpriseapi.autoBackupKeepDays=7 | ||
273 | digdash_dashboard.CANCHANGEPASSWORD=true | ||
274 | |||
275 | {{/code}} | ||
276 | |||
277 | === Deploying WebApps === | ||
278 | |||
279 | Place the following (contained in the <DD Install>\apache-tomcat\webapps directory) in the folder ///home/digdash/webapps/default ~:// | ||
280 | |||
281 | * adminconsole.war | ||
282 | * ddenterpriseapi.war | ||
283 | * digdash_dashboard.war | ||
284 | * studio.war | ||
285 | * ROOT/ folder | ||
286 | |||
287 | = OpenDJ{{id name="OpenDJ"/}} = | ||
288 | |||
289 | == Installation == | ||
290 | |||
291 | 1. Start by getting the latest version of the **opendj-4.x.x_all.deb **file from the website [[https:~~/~~/github.com/OpenIdentityPlatform/OpenDJ/releases>>url:https://github.com/OpenIdentityPlatform/OpenDJ/releases]] : | ||
292 | |||
293 | {{code language="shell"}} | ||
294 | wget https://github.com/OpenIdentityPlatform/OpenDJ/releases/download/4.x.x/opendj-4.x.x_all.deb | ||
295 | {{/code}} | ||
296 | |||
297 | (% start="2" %) | ||
298 | 1. Run the installation : | ||
299 | |||
300 | {{code language="shell"}} | ||
301 | sudo dpkg -i opendj_4.x.x_all.deb | ||
302 | {{/code}} | ||
303 | |||
304 | ((( | ||
305 | == (% style="color:inherit; font-family:inherit; font-size:26px" %)Initial setup(%%) == | ||
306 | ))) | ||
307 | |||
308 | To simplify OpenDJ configuration, we are going to create a ‘setupOpenDJ.props’ file containing the options available to respond to the OpenDJ ‘setup’ utility (this avoids the configuration interface). | ||
309 | The contents of this file are detailed below: | ||
310 | |||
311 | (% class="box warningmessage" %) | ||
312 | ((( | ||
313 | ❗Don't forget to replace the parameters with your own. For example, replace the password with the one you want (here ‘adminOpenDJ1’). | ||
314 | ))) | ||
315 | |||
316 | {{code language="shell"}} | ||
317 | # | ||
318 | # Sample properties file to set up OpenDJ directory server | ||
319 | # See OpenDJ Setup command man for more options | ||
320 | # | ||
321 | rootUserDN =cn=Directory Manager | ||
322 | rootUserPassword =adminOpenDJ1 | ||
323 | hostname =localhost.localdomain | ||
324 | ldapPort =389 | ||
325 | adminConnectorPort =4444 | ||
326 | backendType =je | ||
327 | baseDN =dc=digdash,dc=com | ||
328 | addBaseEntry =true | ||
329 | ldapsPort =636 | ||
330 | enableStartTLS =false | ||
331 | generateSelfSignedCertificate =true | ||
332 | start =true | ||
333 | #sampleData =2000 | ||
334 | {{/code}} | ||
335 | |||
336 | After saving the file, run the following command line: | ||
337 | |||
338 | {{code language="shell"}} | ||
339 | sudo /opt/opendj/setup --cli --propertiesFilePath setupOpenDJ.props --acceptLicense --no-prompt | ||
340 | {{/code}} | ||
341 | |||
342 | (% style="line-height:1.38; text-indent:-14.173228346456689pt; margin-top:13px; margin-bottom:13px; padding:0pt 0pt 0pt 14.173228346456689pt" %) | ||
343 | == Additional setup == | ||
344 | |||
345 | 1. Go to the OpenDJ installation directory: | ||
346 | |||
347 | {{code language="shell"}} | ||
348 | cd /opt/opendj/bin/ | ||
349 | {{/code}} | ||
350 | |||
351 | (% start="2" %) | ||
352 | 1. ((( | ||
353 | LDIF files can be downloaded by clicking on the following link [[LDIF_OpenDJ>>attach:LDIF_OpenDJ.zip]]. | ||
354 | ))) | ||
355 | 1. Create organisations using the ‘neworganisation.ldif’ file below : | ||
356 | |||
357 | {{code language="shell"}} | ||
358 | sudo /opt/opendj/bin/ldapmodify --port 389 --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" neworganisation.ldif | ||
359 | {{/code}} | ||
360 | |||
361 | {{code}} | ||
362 | dn: ou=default,dc=digdash,dc=com | ||
363 | |||
364 | objectClass: organizationalUnit | ||
365 | |||
366 | ou: default | ||
367 | {{/code}} | ||
368 | |||
369 | (% start="4" %) | ||
370 | 1. Set the password checker "Custom Character-set Password Validator": | ||
371 | |||
372 | {{code language="shell"}} | ||
373 | sudo /opt/opendj/bin/dsconfig create-password-validator --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" --validator-name "Custom Character-set Password Validator" --set character-set:1:abcdefghijklmnopqrstuvwxyz --set character-set:1:ABCDEFGHIJKLMNOPQRSTUVWXYZ --set character-set:1:0123456789 --set "character-set:1:\!\"#$%&'()*+,-./:;<=>?@[]^_\`{|}~" --set enabled:true --type character-set --no-prompt --trustAll --set allow-unclassified-characters:true | ||
374 | {{/code}} | ||
375 | |||
376 | (% start="5" %) | ||
377 | 1. Set the second password checker "Custom length Password Validator": | ||
378 | |||
379 | {{code language="shell"}} | ||
380 | sudo /opt/opendj/bin/dsconfig create-password-validator --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" --validator-name "Custom length Password Validator" --set min-password-length:12 --set enabled:true --type length-based --no-prompt | ||
381 | {{/code}} | ||
382 | |||
383 | (% start="6" %) | ||
384 | 1. Apply the two password checkers : | ||
385 | |||
386 | {{code language="shell"}} | ||
387 | sudo /opt/opendj/bin/dsconfig set-password-policy-prop --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" --policy-name "Default Password Policy" --set password-validator:"Custom Character-set Password Validator" --set password-validator:"Custom length Password Validator" --no-prompt | ||
388 | {{/code}} | ||
389 | |||
390 | (% start="7" %) | ||
391 | 1. Set the password policy for users using the ‘ppolicy.ldif’ file below: | ||
392 | |||
393 | {{code language="shell"}} | ||
394 | sudo /opt/opendj/bin/ldapmodify --port 389 --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" ppolicy.ldif | ||
395 | {{/code}} | ||
396 | |||
397 | {{code}} | ||
398 | dn: cn=ppolicy,ou=default,dc=digdash,dc=com | ||
399 | objectClass: top | ||
400 | objectClass: subentry | ||
401 | objectClass: pwdPolicy | ||
402 | cn: ppolicy | ||
403 | pwdAttribute: userPassword | ||
404 | pwdAllowUserChange: TRUE | ||
405 | pwdCheckQuality: 1 | ||
406 | pwdExpireWarning: 600 | ||
407 | pwdFailureCountInterval: 30 | ||
408 | pwdGraceAuthNLimit: 5 | ||
409 | pwdInHistory: 5 | ||
410 | pwdLockout: TRUE | ||
411 | pwdLockoutDuration: 900 | ||
412 | pwdMaxAge: 0 | ||
413 | pwdMaxFailure: 5 | ||
414 | pwdMinAge: 0 | ||
415 | pwdMustChange: FALSE | ||
416 | pwdSafeModify: FALSE | ||
417 | subtreeSpecification: {base "ou=users", specificationFilter "!(uid=admin)" } | ||
418 | {{/code}} | ||
419 | |||
420 | (% start="8" %) | ||
421 | 1. Set a second password policy for admin using the ‘ppolicy-admin.ldif’ file below: | ||
422 | |||
423 | {{code language="shell"}} | ||
424 | sudo /opt/opendj/bin/ldapmodify --port 389 --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" ppolicy-admin.ldif | ||
425 | {{/code}} | ||
426 | |||
427 | {{code}} | ||
428 | dn: cn=ppolicy-admin,ou=default,dc=digdash,dc=com | ||
429 | objectClass: top | ||
430 | objectClass: subentry | ||
431 | objectClass: pwdPolicy | ||
432 | cn: ppolicy-admin | ||
433 | pwdAttribute: userPassword | ||
434 | pwdAllowUserChange: TRUE | ||
435 | pwdCheckQuality: 1 | ||
436 | pwdFailureCountInterval: 30 | ||
437 | pwdGraceAuthNLimit: 5 | ||
438 | pwdInHistory: 5 | ||
439 | pwdLockout: FALSE | ||
440 | pwdMaxAge: 0 | ||
441 | pwdMinAge: 0 | ||
442 | pwdMustChange: FALSE | ||
443 | pwdSafeModify: FALSE | ||
444 | subtreeSpecification: {base "ou=users", specificationFilter "(uid=admin)" } | ||
445 | {{/code}} | ||
446 | |||
447 | (% start="9" %) | ||
448 | 1. Change password policy to allow pre-encoded passwords (useful for restores in Digdash): | ||
449 | |||
450 | {{code language="shell"}} | ||
451 | sudo /opt/opendj/bin/dsconfig set-password-policy-prop --policy-name "Default Password Policy" --set allow-pre-encoded-passwords:true --hostname localhost --trustAll --bindDN "cn=directory manager" --bindPassword "adminOpenDJ1" --no-prompt | ||
452 | {{/code}} | ||
453 | |||
454 | (% start="10" %) | ||
455 | 1. Create an admin user for Digdash using the “create_user_admin.ldif” file below: | ||
456 | |||
457 | {{code language="shell"}} | ||
458 | sudo /opt/opendj/bin/ldapmodify --port 389 --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" create_user_admin.ldif | ||
459 | {{/code}} | ||
460 | |||
461 | {{code}} | ||
462 | dn: uid=admin,ou=default,dc=digdash,dc=com | ||
463 | objectClass: shadowAccount | ||
464 | objectClass: inetOrgPerson | ||
465 | cn: Admin Domain Default | ||
466 | sn: Default | ||
467 | uid: admin_default | ||
468 | {{/code}} | ||
469 | |||
470 | (% start="11" %) | ||
471 | 1. Assign the admin user the necessary rights using the “add_admin_right.ldif” and “add_admin_right2.ldif” files below: | ||
472 | |||
473 | {{code language="shell"}} | ||
474 | sudo /opt/opendj/bin/ldapmodify --port 389 --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" add_admin_right.ldif | ||
475 | {{/code}} | ||
476 | |||
477 | {{code}} | ||
478 | dn: ou=default,dc=digdash,dc=com | ||
479 | changetype: modify | ||
480 | add: aci | ||
481 | aci: (target ="ldap:///ou=default,dc=digdash,dc=com")(targetattr = "userpassword || shadowlastchange")(version 3.0; acl "allow write on userpassword and shadowlastchange for admin"; allow(write) (userdn = "ldap:///uid=admin,ou=default,dc=digdash,dc=com");) | ||
482 | aci: (target ="ldap:///ou=default,dc=digdash,dc=com")(targetattr = "userpassword || shadowlastchange")(version 3.0; acl "allow read,write on userpassword and shadowlastchange for auth users"; allow(read) (userdn = "ldap:///all");) | ||
483 | aci: (target ="ldap:///ou=default,dc=digdash,dc=com")(targetattr = "userpassword || shadowlastchange")(version 3.0; acl "allow read on userpassword and shadowlastchange for anonymous"; allow(selfwrite) (userdn = "ldap:///anyone");) | ||
484 | aci: (target ="ldap:///ou=default,dc=digdash,dc=com")(targetattr = "*")(version 3.0; acl "allow write on * for admin"; allow(all) (userdn = "ldap:///uid=admin,ou=default,dc=digdash,dc=com");) | ||
485 | aci: (target ="ldap:///ou=default,dc=digdash,dc=com")(targetattr = "*")(version 3.0; acl "allow read on * for anonymous"; allow(read) (userdn = "ldap:///all");) | ||
486 | {{/code}} | ||
487 | |||
488 | {{code language="shell"}} | ||
489 | sudo /opt/opendj/bin/ldapmodify --port 389 --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" add_admin_right2.ldif | ||
490 | {{/code}} | ||
491 | |||
492 | {{code}} | ||
493 | dn: uid=admin,ou=default,dc=digdash,dc=com | ||
494 | changetype: modify | ||
495 | add: ds-privilege-name | ||
496 | ds-privilege-name: config-read | ||
497 | ds-privilege-name: password-reset | ||
498 | ds-privilege-name: unindexed-search | ||
499 | {{/code}} | ||
500 | |||
501 | (% start="12" %) | ||
502 | 1. Generate an administrator password and remember it for later: | ||
503 | |||
504 | {{code language="shell"}} | ||
505 | sudo /opt/opendj/bin/ldappasswordmodify --port 389 --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" --authzID "u:admin" | ||
506 | {{/code}} | ||
507 | |||
508 | (% class="box infomessage" %) | ||
509 | ((( | ||
510 | 💡 If you want to set your own password for the admin user, you need to use a variation of the previous command: | ||
511 | |||
512 | {{code language="shell"}} | ||
513 | sudo /opt/opendj/bin/ldappasswordmodify --port 389 --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" --authzID "u:admin" --newPassword "mdpAdmin" | ||
514 | {{/code}} | ||
515 | ))) | ||
516 | |||
517 | (% style="line-height:1.38; text-indent:-14.173228346456689pt; margin-top:13px; margin-bottom:13px; padding:0pt 0pt 0pt 14.173228346456689pt" %) | ||
518 | == Enabling automatic service start on startup == | ||
519 | |||
520 | 1. Create the opendj.service file: | ||
521 | |||
522 | {{code language="shell"}} | ||
523 | sudo vi /etc/systemd/system/opendj.service | ||
524 | {{/code}} | ||
525 | |||
526 | (% start="2" %) | ||
527 | 1. And paste the following lines: | ||
528 | |||
529 | {{code}} | ||
530 | [Unit] | ||
531 | |||
532 | Description=OpenDJ Server Daemon | ||
533 | |||
534 | Wants=network-online.target | ||
535 | |||
536 | After=network-online.target | ||
537 | |||
538 | Conflicts=shutdown.target | ||
539 | |||
540 | [Service] | ||
541 | |||
542 | Type=simple | ||
543 | |||
544 | Restart=no | ||
545 | |||
546 | TimeoutSec=5min | ||
547 | |||
548 | IgnoreSIGPIPE=no | ||
549 | |||
550 | KillMode=process | ||
551 | |||
552 | GuessMainPID=no | ||
553 | |||
554 | RemainAfterExit=yes | ||
555 | |||
556 | ExecStart=/opt/opendj/bin/start-ds --quiet | ||
557 | |||
558 | ExecStop=/opt/opendj/bin/stop-ds --quiet | ||
559 | |||
560 | [Install] | ||
561 | |||
562 | WantedBy=multi-user.target | ||
563 | {{/code}} | ||
564 | |||
565 | (% start="3" %) | ||
566 | 1. Then type the following commands: | ||
567 | |||
568 | {{code language="shell"}} | ||
569 | systemctl daemon-reload | ||
570 | |||
571 | systemctl enable --now opendj | ||
572 | |||
573 | systemctl status opendj | ||
574 | {{/code}} | ||
575 | |||
576 | == Useful option == | ||
577 | |||
578 | The operation below is not part of the installation. | ||
579 | However, it may be useful to know it for later use. | ||
580 | |||
581 | === Extending the limit for LDAP searches === | ||
582 | |||
583 | It is possible to extend the LDAP search limit to more than 1000 users with the “extend_search_limit.ldif” file below. | ||
584 | |||
585 | {{code language="shell"}} | ||
586 | sudo /opt/opendj/bin/ldapmodify --port 389 --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" extend_search_limit.ldif | ||
587 | {{/code}} | ||
588 | |||
589 | {{code}} | ||
590 | dn: uid=admin,ou=default,dc=digdash,dc=com | ||
591 | changetype: modify | ||
592 | add: ds-rlim-size-limit | ||
593 | ds-rlim-size-limit: 10000 | ||
594 | {{/code}} | ||
595 | |||
596 | |||
597 | |||
598 | |||
599 | = MariaDB (Recommended){{id name="DB_ubuntu"/}} = | ||
600 | |||
601 | The MariaDB database will be used to store the following elements: comments, audit data and data entry. | ||
602 | |||
603 | This database is more durable than an H2 database, that is why we recommend its use. If you already have a database that Digdash can write to and read from then proceed to the configuration step. | ||
604 | |||
605 | Mysql and Postgresql are also compatible. | ||
606 | |||
607 | == Installation == | ||
608 | |||
609 | {{code language="shell"}} | ||
610 | sudo apt install mariadb-server | ||
611 | {{/code}} | ||
612 | |||
613 | {{code language="shell"}} | ||
614 | #start mariadb | ||
615 | sudo systemctl start mariadb | ||
616 | #Stop mariadb | ||
617 | sudo systemctl stop mariadb | ||
618 | #Reload to take into account the configuration changes | ||
619 | sudo systemctl reload mariadb | ||
620 | sudo systemctl force-reload mariadb | ||
621 | #Display the version | ||
622 | mariadb --version | ||
623 | |||
624 | {{/code}} | ||
625 | |||
626 | (% class="wikigeneratedid" %) | ||
627 | Launch mysql_secure_installation. This will secure the installation. | ||
628 | |||
629 | {{code language="shell"}} | ||
630 | sudo mysql_secure_installation | ||
631 | |||
632 | # Enter yes at all steps | ||
633 | {{/code}} | ||
634 | |||
635 | == Enabling automatic service start on startup == | ||
636 | |||
637 | {{code language="shell"}} | ||
638 | sudo systemctl enable mariadb | ||
639 | |||
640 | {{/code}} | ||
641 | |||
642 | == Database configuration == | ||
643 | |||
644 | We will create a base for each domain and each webapps (for example prod_ddaudit and dev_ddaudit and so on) | ||
645 | |||
646 | In the example below, we will consider that there is only one 'default' environment. | ||
647 | |||
648 | {{code language="shell"}} | ||
649 | # Start mariadb | ||
650 | sudo mariadb -u root -p | ||
651 | |||
652 | # Create all necessary databases domain_module. | ||
653 | CREATE DATABASE default_ddaudit; | ||
654 | CREATE DATABASE default_comment; | ||
655 | CREATE DATABASE default_ddentry; | ||
656 | |||
657 | # Create a user for each database domaine_user_module. The password is a new one to create. | ||
658 | CREATE USER 'default_user_ddaudit'@'localhost' IDENTIFIED BY 'mynewpassword'; | ||
659 | CREATE USER 'default_user_comment'@'localhost' IDENTIFIED BY 'mynewpassword'; | ||
660 | CREATE USER 'default_user_ddentry'@'localhost' IDENTIFIED BY 'mynewpassword'; | ||
661 | |||
662 | # Assign rights on the databases to the user | ||
663 | GRANT ALL PRIVILEGES ON default_comment.* TO 'default_user_comment'@'localhost'; | ||
664 | GRANT ALL PRIVILEGES ON default_ddaudit.* TO 'default_user_ddaudit'@'localhost'; | ||
665 | GRANT ALL PRIVILEGES ON default_ddentry.* TO 'default_user_ddentry'@'localhost'; | ||
666 | {{/code}} | ||
667 | |||
668 | = NGINX (Optional) = | ||
669 | |||
670 | Nginx is used as reverse proxy. | ||
671 | |||
672 | == Installation == | ||
673 | |||
674 | {{code language="shell"}} | ||
675 | sudo apt install nginx | ||
676 | {{/code}} | ||
677 | |||
678 | == Enabling automatic service start on startup == | ||
679 | |||
680 | {{code language="shell"}} | ||
681 | sudo systemctl enable nginx | ||
682 | {{/code}} | ||
683 | |||
684 | == Configuration == | ||
685 | |||
686 | Create the configuration file with the name of your machine or environment. In this example, we use 001-digdash. | ||
687 | |||
688 | In the /etc/nginx folder: | ||
689 | |||
690 | {{code language="shell"}} | ||
691 | # Create the conf file | ||
692 | sudo vi /etc/nginx/sites-available/001-digdash.conf | ||
693 | {{/code}} | ||
694 | |||
695 | {{code language="shell"}} | ||
696 | # Add the following content inside. | ||
697 | # Replace .mydomain.com for server and paths | ||
698 | Certificate(s) and private key, par vos informations. | ||
699 | upstream backend_tomcat{ | ||
700 | least_conn; | ||
701 | server localhost:8080 fail_timeout=0; | ||
702 | } | ||
703 | |||
704 | |||
705 | server { | ||
706 | listen [::]:80; | ||
707 | listen 80; | ||
708 | server_name *.mondomaine.com; | ||
709 | |||
710 | # Redirect all non-https requests | ||
711 | rewrite ^ https://$host$request_uri? permanent; | ||
712 | |||
713 | error_log /var/log/nginx/digdash.com.error_log warn; | ||
714 | access_log /var/log/nginx/digdash.com.access.log; | ||
715 | } | ||
716 | |||
717 | server { | ||
718 | listen [::]:443 ssl http2 default_server; | ||
719 | listen 443 ssl http2 default_server; | ||
720 | server_name *.mondomaine.com; | ||
721 | |||
722 | client_max_body_size 4G; | ||
723 | proxy_read_timeout 300; | ||
724 | proxy_connect_timeout 300; | ||
725 | proxy_send_timeout 300; | ||
726 | |||
727 | error_log /var/log/nginx/digdash.com.error_log warn; | ||
728 | access_log /var/log/nginx/digdash.com.access.log; | ||
729 | |||
730 | # Certificate(s) and private key | ||
731 | ssl_certificate_key /emplacement/de/la/clé/macle.key; | ||
732 | ssl_certificate /emplacement/du/certificat/moncertif.crt; | ||
733 | |||
734 | #DigDash Management SSL | ||
735 | include digdash_ssl_params; | ||
736 | |||
737 | location / { | ||
738 | include proxy_params; | ||
739 | proxy_intercept_errors on; | ||
740 | proxy_pass http://backend_tomcat; | ||
741 | proxy_cookie_path ~^/(.+)$ "/$1; HTTPOnly; Secure;samesite=none;"; | ||
742 | } | ||
743 | } | ||
744 | {{/code}} | ||
745 | |||
746 | Then create a symbolic link in sites-enabled | ||
747 | |||
748 | {{code language="shell"}} | ||
749 | sudo ln -s /etc/nginx/sites-available/001-digdash.conf /etc/nginx/sites-enabled/001-digdash.conf | ||
750 | {{/code}} | ||
751 | |||
752 | Create the digdash_ssl_params file containing the security policy: | ||
753 | |||
754 | {{code language="shell"}} | ||
755 | sudo vi digdash_ssl_params | ||
756 | {{/code}} | ||
757 | |||
758 | {{code language="shell"}} | ||
759 | # Or, generate random dhparam | ||
760 | # openssl dhparam 4096 -out /etc/ssl/dhparam.pem | ||
761 | #ssl_dhparam /etc/ssl/dhparam.pem; | ||
762 | |||
763 | ssl_protocols TLSv1.3 TLSv1.2; | ||
764 | |||
765 | ssl_prefer_server_ciphers on; | ||
766 | ssl_ecdh_curve secp521r1:secp384r1; | ||
767 | ssl_ciphers EECDH+AESGCM:EECDH+AES256; | ||
768 | |||
769 | ssl_session_cache shared:TLS:2m; | ||
770 | ssl_buffer_size 4k; | ||
771 | |||
772 | # OCSP stapling | ||
773 | ssl_stapling on; | ||
774 | ssl_stapling_verify on; | ||
775 | resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001]; # Cloudflare | ||
776 | |||
777 | # Set HSTS to 365 days | ||
778 | add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload' always; | ||
779 | {{/code}} | ||
780 | |||
781 | = (% id="cke_bm_868S" style="display:none" %) (%%)Configuring DigDash after installation = | ||
782 | |||
783 | == Starting Digdash == | ||
784 | |||
785 | 1. Restart Tomcat service. | ||
786 | |||
787 | {{code language="shell"}} | ||
788 | sudo service tomcat9 restart | ||
789 | {{/code}} | ||
790 | |||
791 | (% start="2" %) | ||
792 | 1. Check the war deployment in the installation folder home/digdash/webapps/default. | ||
793 | 1. Access DigDash homepage at the following address : [[http:~~/~~/localhost:8080/adminconsole>>url:http://localhost:8080/adminconsole]] | ||
794 | The login/password is admin/admin. | ||
795 | |||
796 | == Connecting Digdash to the installed OpenDJ server == | ||
797 | |||
798 | Open [[http:~~/~~/localhost:8080/adminconsole/>>url:http://localhost:8080/adminconsole/]], **Configuration -> Server settings -> Servers -> LDAP Server**. | ||
799 | |||
800 | * Port: 389 | ||
801 | * User: uid=admin, ou=default,dc=digdash,dc=com | ||
802 | * Password: OpenDJ admin password | ||
803 | |||
804 | [[image:LDAPserver_ok.png||alt="LDAP server"]] | ||
805 | |||
806 | Then click the **LDAP Queries** button and enter "**ou=default**" in the **Domain Tree** field for all the fields to be automatically filled as below. | ||
807 | |||
808 | [[image:LDAPqueries_ok.png||alt="LDAP queries"]] | ||
809 | |||
810 | == Changing the supervisor password and creating the LDAP account == | ||
811 | |||
812 | === Changing the supervisor password === | ||
813 | |||
814 | Open **Configuration -> Server settings > Servers -> Enterprise Server **and enter a new password in the **Supervisor Password** field. | ||
815 | |||
816 | [[image:EnterpriseServer.png||alt="Supervisor password"]] | ||
817 | |||
818 | === Creating the LDAP account === | ||
819 | |||
820 | 1. Open **Configuration -> User management -> Users**. | ||
821 | 1. Create a new admin user and assign him all roles and authorizations groups. | ||
822 | 1. In the **Password** field, enter the new supervisor password defined above. | ||
823 | |||
824 | [[image:User_password.png||alt="User password"]] | ||
825 | |||
826 | == Database configuration == | ||
827 | |||
828 | === Audit data database === | ||
829 | |||
830 | Open **Configuration -> Server settings -> Databases -> Audit data **and enter the URL, user and password. | ||
831 | |||
832 | **URL **: //jdbc:mariadb:~/~/localhost:3306/default_ddaudit// | ||
833 | |||
834 | This solution makes it possible to secure access to the audit database. | ||
835 | |||
836 | [[image:Audit_data.png||alt="Audit data"]] | ||
837 | |||
838 | === Comments database === | ||
839 | |||
840 | Open **Configuration -> Server settings -> Databases -> Audit data **and enter the URL, user and password. | ||
841 | |||
842 | **URL** ~:// jdbc:mariadb:~/~/localhost:3306/default_comment// | ||
843 | |||
844 | This solution makes it possible to secure access to the comment database. | ||
845 | |||
846 | [[image:Comments.png||alt="Comments"]] | ||
847 | |||
848 | (% style="line-height: 1.2; text-indent: 0.153543pt; text-align: justify;" %) | ||
849 | === Data entry database === | ||
850 | |||
851 | Open **Configuration -> Server settings -> Databases -> Data entry **and enter the URL, user and password. | ||
852 | |||
853 | Select the **Enable data entry** checkbox and select a database in the drop-down list below. | ||
854 | |||
855 | (% class="wikigeneratedid" style="line-height: 1.2; text-align: justify; margin-top: 13px; margin-bottom: 13px;" %) | ||
856 | [[image:Data_entry.png]] | ||
857 | |||
858 | (% class="wikigeneratedid" style="line-height: 1.2; text-align: justify; margin-top: 13px; margin-bottom: 13px;" %) | ||
859 | You must first have created a connection to the database from the Data connection manager in the Studio. | ||
860 | Enter default.user.ddentry for the user and password defined in the previous step. | ||
861 | The name defined in the **Login Name** field is the one that will appear in the database selection drop-down list. | ||
862 | |||
863 | == DigDash Services == | ||
864 | |||
865 | Open the Server status page : [[__http:~~/~~/localhost:8080/ddenterpriseapi/serverstatus?adminDomain=adminconsole&serverDomain=ddenterpriseapi__>>url:http://localhost:8080/ddenterpriseapi/serverstatus?adminDomain=adminconsole&serverDomain=ddenterpriseapi]] | ||
866 | |||
867 | Check that the DigDash services are activated and that the maximum memory is well adapted to the capacity of the server. You must leave at least 4 GB for the system. | ||
868 | |||
869 | [[image:Server_status.png||alt="Server status"]] |