Guide d'installation Linux - Production
Digdash
OpenJDK 11
sudo apt install default-jdk
# Vérifier l'installation
java -version
Tomcat 9
Installation
Création de l'arborescence
/home/digdash/webapps/default/
# Répertoire de travail
/home/digdash/appdata/default/
# Emplacement fichier .properties
/etc/digdash/
# Emplacement des logs
/var/log/digdash/
Modification des droits sur les dossier
chown -R tomcat:tomcat /var/log/digdash
chmod a+w /var/log/digdash
Configuration du server.xml
emplacement : /etc/tomcat9/server.xml
Emplacement des webapps
<Host name="localhost" appBase="webapps"
# par celle ci
<Host name="localhost" appBase="/home/digdash/webapps/default"
Valve Reverse Proxy
<Valve className="org.apache.catalina.valves.RemoteIpValve"
internalProxies="127\.0\.[0-1]\.1"
remoteIpHeader="X-Forwarded-For"
requestAttributesEnabled="true"
protocolHeader="x-forwarded-proto"
protocolHeaderHttpsValue="https"/>
Valve Log
<Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" />
Modification de la RAM
sudo nano /etc/default/tomcat9
# Remplacer la variable JAVA_OPTS existante par
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"
Activer l'autorisation d'écriture des logs par tomcat
sudo mkdir tomcat9.service.d
# Créer le fichier
sudo nano logging-allow.conf
# Ajouter les lignes suivantes
[Service]
ReadWritePaths=/var/log/
Déploiement de Digdash Version 22R1
Fichiers properties
Placer les fichiers suivant dans le dossier /etc/digdash
- digdash.properties (contenu à la racine du dossier dézippé)
Modifier le fichier digdash.properties précédemment copié
ddenterpriseapi.AppDataPath=/home/digdash/appdata/default
digdash_dashboard.AppDataPath=/home/digdash/appdata/default
studio.AppDataPath=/home/digdash/appdata/default
ddenterpriseapi.audit.db.url=jdbc:h2:/home/digdash/appdata/default/DDAudit_ddenterpriseapi;AUTO_SERVER=TRUE
ddenterpriseapi.comment.db.url=jdbc:h2:/home/digdash/appdata/default/DDAudit_ddenterpriseapi;AUTO_SERVER=TRUE
ddenterpriseapi.ddlog4j.properties.file=/etc/digdash/log4j_api.properties
studio.ddlog4j.properties.file=/etc/digdash/log4j_studio.properties
digdash_dashboard.ddlog4j.properties.file=/etc/digdash/log4j_dash.properties
adminconsole.adminconsole_domain=adminconsole
adminconsole.webstudio_domain=studio
adminconsole.server_domain_list=ddenterpriseapi
adminconsole.dashboard_domain=digdash_dashboard
studio.DOMAIN=ddenterpriseapi
studio.FORCEDOMAIN=true
studio.SERVERURL=http://localhost:8080
studio.FORCESERVERURL=true
studio.adminconsole_domain=adminconsole
digdash_dashboard.DOMAIN=ddenterpriseapi
digdash_dashboard.FORCEDOMAIN=true
digdash_dashboard.SERVERURL=http://localhost:8080
digdash_dashboard.FORCESERVERURL=true
digdash_dashboard.adminconsole_domain=adminconsole
########### Nettoyage automatique des fichiers programmé
########### Scheduled automatic file cleaning
ddenterpriseapi.startCleaner=true
########### Nettoyage des fichiers inutilisés au démarrage du serveur
########### Clean up unused files on server startup
ddenterpriseapi.cleanOnStart=false
########### Sauvegarde automatique programmée
########### Scheduled automatic backup
ddenterpriseapi.autoBackup=true
ddenterpriseapi.autoBackupKeepDays=7
digdash_dashboard.CANCHANGEPASSWORD=true
Emplacement des war
- Placer les war dans le dossier /home/digdash/webapps/default
- adminconsole.war
- ddenterpriseapi.war
- digdash_dashboard.war
- studio.war
Password Policy
<Rules>
<Profil>administrator</Profil>
<Pattern msg="Au moins 12 caractères">.{12,}</Pattern>
<MustHaveUpperCase>true</MustHaveUpperCase>
<MustHaveLowerCase>true</MustHaveLowerCase>
<MustHaveNumeric>true</MustHaveNumeric>
<MustHaveSpecialChar>true</MustHaveSpecialChar>
<MustNotContainID>true</MustNotContainID>
<MustNotContainDisplayName>false</MustNotContainDisplayName>
</Rules>
<Rules>
<Profil>supervisor</Profil>
<Pattern msg="Au moins 12 caractères">.{12,}</Pattern>
<MustHaveUpperCase>true</MustHaveUpperCase>
<MustHaveLowerCase>true</MustHaveLowerCase>
<MustHaveNumeric>true</MustHaveNumeric>
<MustHaveSpecialChar>true</MustHaveSpecialChar>
<MustNotContainID>true</MustNotContainID>
<MustNotContainDisplayName>false</MustNotContainDisplayName>
</Rules>
<Rules>
<Profil>user</Profil>
<Pattern msg="Au moins 12 caractères">.{12,}</Pattern>
<MustHaveUpperCase>true</MustHaveUpperCase>
<MustHaveLowerCase>true</MustHaveLowerCase>
<MustHaveNumeric>true</MustHaveNumeric>
<MustHaveSpecialChar>true</MustHaveSpecialChar>
<MustNotContainID>true</MustNotContainID>
<MustNotContainDisplayName>false</MustNotContainDisplayName>
</Rules>
</PasswordPolicyRepository>
MySQL 8
La base de données Mysql va servir à stocker les éléments suivants : Commentaires, données d'audit et formulaires de saisies.
Cette base est plus pérenne qu'une base H2 c'est pourquoi nous préconisons son utilisation. Si vous possédez déjà une base de données sur laquelle digdash peut écrire et lire alors passez à l'étape de configuration.
Installation
sudo systemctl start mysql
#Arrêt de mysql
sudo systemctl stop mysql
#Reload pour prise en compte de modification de configuration
sudo systemctl reload mysql
sudo systemctl force-reload mysql
#Connaître la version
mysql --version
Lancer mysql_secure_installation, cela va permettre de sécuriser l'installation
# Répondez oui à toutes les étapes
sudo mysql
# Modifier la méthode d'authentification
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'mynewpassword';
# Puis quitter mysql
exit;
# Relancez ensuite mysql_secure_installation
Configuration côté base de données
Nous allons créer une base pour chaque domaine et chaque module (par exemple prod_ddaudit et dev_ddaudit et ainsi de suite)
Dans l'exemple ci dessous nous allons considérer qu'il n'existe qu'un environnement 'default'.
sudo mysql -u root -p
# Créer toutes les bases de données nécessaires domaine_module
CREATE DATABASE default_ddaudit;
CREATE DATABASE default_comment;
# Créer un user pour chaque base de données domaine_user_module
CREATE USER 'default_user_ddaudit'@'localhost' IDENTIFIED BY 'mynewpassword';
CREATE USER 'default_user_comment'@'localhost' IDENTIFIED BY 'mynewpassword';
# Attribuer les droits aux utilisateurs sur les bonnes bases
GRANT ALL PRIVILEGES ON default_comment.* TO 'default_user_comment'@'localhost';
GRANT ALL PRIVILEGES ON default_ddaudit.* TO 'default_user_ddaudit'@'localhost';
Configuration côté Digdash
OpenLDAP
NGINX
Nous uitilisons Nginx comme reverse proxy
Installation
Configuration
Créer le fichier de configuration portant le nom de votre machine ou de votre environnement (ici documentation)
sudo nano /etc/nginx/sites-available/001-digdash.com.conf
upstream backend_tomcat{
least_conn;
server localhost:8080 fail_timeout=0;
}
server {
listen [::]:80;
listen 80;
server_name *.digdash.com;
# Redirect all non-https requests
rewrite ^ https://$host$request_uri? permanent;
error_log /var/log/nginx/digdash.com.error_log warn;
access_log /var/log/nginx/digdash.com.access.log;
}
server {
listen [::]:443 ssl http2 default_server;
listen 443 ssl http2 default_server;
server_name *.digdash.com
client_max_body_size 4G;
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_send_timeout 300;
error_page 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 421 422 423 424 425 426 428 429 431 451 500 501 502 503 504 505 506 507 508 510 511 /digdash_error.html;
proxy_intercept_errors on;
error_log /var/log/nginx/digdash.com.error_log warn;
access_log /var/log/nginx/digdash.com.access.log;
# Certificate(s) and private key
ssl_certificate_key /etc/ssl/stardigdashcom/digdashcom.key;
ssl_certificate /etc/ssl/stardigdashcom/STAR_digdash_com_mergechain.crt;
#DigDash Management SSL
include digdash_ssl_params;
#specific redirections rules
include nginx_redirections;
#Handle error with DigDash Message
location /digdash_error.html {
ssi on;
internal;
auth_basic off;
root /var/www/digdash;
}
location / {
include proxy_params;
proxy_intercept_errors on;
proxy_pass http://backend_tomcat;
proxy_cookie_path ~^/(.+)$ "/$1; HTTPOnly; Secure;samesite=none;";
}
}
Puis créer un lien symbolique dans site enabled