# Tâches post‑installation

{% hint style="info" %}

#### **Renforcement et optimisation après installation**

Paramètres optionnels que vous pouvez appliquer après l'installation pour durcir Tomcat/Pentaho et ajuster le comportement :
{% endhint %}

<details>

<summary>Masquer l'en-tête Server de Tomcat</summary>

Par défaut, Tomcat envoie un `Server` en-tête exposant des informations de version. Vous pouvez le remplacer pour réduire la fuite d'informations.

1. Modifiez le connecteur Tomcat dans `server.xml`.

```bash
sudo nano /opt/pentaho/server/pentaho-server/tomcat/conf/server.xml
```

2. Ajoutez ou mettez à jour l'attribut `server` sur le connecteur HTTP et (si utilisé) le connecteur AJP, puis enregistrez.

```xml
<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           server=" "
           redirectPort="8443" />
```

3. Redémarrez le serveur Pentaho.

```bash
sudo systemctl restart pentaho-server
```

</details>

<details>

<summary>Java Security Manager (déprécié/supprimé)</summary>

Le Java Security Manager hérité est déprécié et n'est pas disponible sur les versions LTS Java modernes (y compris Java 21). Ne pas utiliser `-security` avec Tomcat sur Java 21. Privilégiez le renforcement au niveau du système d'exploitation, des utilisateurs au moindre privilège, le périmètre réseau, et des politiques de conteneur/AppArmor/SELinux selon le besoin.

</details>

<details>

<summary>Changer le chemin de contexte de l'application web</summary>

Modifiez le chemin de contexte si vous ne souhaitez pas que l'application soit accessible à `/pentaho`.

1. Arrêtez le serveur Pentaho.

```bash
cd /opt/pentaho/server/pentaho-server
sudo ./stop-pentaho.sh
```

2. Éditez `context.xml`.

```bash
sudo nano /opt/pentaho/server/pentaho-server/tomcat/webapps/pentaho/META-INF/context.xml
```

3. Mettez à jour le chemin de contexte.

```xml
<Context path="/company" docBase="webapps/company/" />
```

4. Renommez le dossier webapp pour qu'il corresponde au nouveau nom de contexte.

```bash
sudo mv /opt/pentaho/server/pentaho-server/tomcat/webapps/pentaho \
        /opt/pentaho/server/pentaho-server/tomcat/webapps/company
```

5. Mettez à jour la redirection dans `ROOT/index.jsp`.

```bash
sudo nano /opt/pentaho/server/pentaho-server/tomcat/webapps/ROOT/index.jsp
```

Changez le meta refresh en :

```html
<meta http-equiv="refresh" content="0;URL=/company">
```

6. Mettez à jour l'URL du serveur.

```bash
sudo nano /opt/pentaho/server/pentaho-server/pentaho-solutions/system/server.properties
```

```
fully-qualified-server-url=http://localhost:8080/company/
```

7. Démarrez le serveur et testez.

```bash
sudo ./start-pentaho.sh
```

{% hint style="warning" %}
Les mises à niveau peuvent écraser les webapps déployées. Réappliquez les personnalisations après les mises à jour, ou utilisez plutôt un mappage de chemin via un reverse proxy.
{% endhint %}

</details>

<details>

<summary>Passer à HTTPS</summary>

Le port par défaut est 8080.

1. Arrêtez le serveur Pentaho.

```bash
cd /opt/pentaho/server/pentaho-server
sudo ./stop-pentaho.sh
```

2. Changez le port du connecteur.

```bash
sudo nano /opt/pentaho/server/pentaho-server/tomcat/conf/server.xml
```

```xml
<Connector URIEncoding="UTF-8"
      port="8443"
      protocol="org.apache.coyote.http11.Http11NioProtocol"
      maxThreads="150"
      SSLEnabled="true"
      scheme="https"
      secure="true"
      clientAuth="false"
      sslProtocol="TLS"
      keystoreType="PKCS12"
      keystoreFile="/opt/pentaho/pentaho-server/tomcat/ssl/keystore.p12"
      keystorePass="changeit"
    />
```

3. Mettez à jour l'URL du serveur.

```bash
sudo nano /opt/pentaho/server/pentaho-server/pentaho-solutions/system/server.properties
```

```
fully-qualified-server-url=http://localhost:8090/pentaho/
```

4. Démarrez le serveur et vérifiez.

```bash
sudo ./start-pentaho.sh
curl -I http://localhost:8090/pentaho/ | head -n 1
```

</details>

<details>

<summary>Changer le port HTTP par défaut</summary>

Le port par défaut est 8080.

1. Arrêtez le serveur Pentaho.

```bash
cd /opt/pentaho/server/pentaho-server
sudo ./stop-pentaho.sh
```

2. Changez le port du connecteur.

```bash
sudo nano /opt/pentaho/server/pentaho-server/tomcat/conf/server.xml
```

```xml
<Connector URIEncoding="UTF-8"
           port="8090" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"
           relaxedPathChars="[]|"
           relaxedQueryChars="^{}[]|&amp;"
           maxHttpHeaderSize="65536" />
```

3. Mettez à jour l'URL du serveur.

```bash
sudo nano /opt/pentaho/server/pentaho-server/pentaho-solutions/system/server.properties
```

```
fully-qualified-server-url=http://localhost:8090/pentaho/
```

4. Démarrez le serveur et vérifiez.

```bash
sudo ./start-pentaho.sh
curl -I http://localhost:8090/pentaho/ | head -n 1
```

</details>

<details>

<summary>Durcir ou désactiver le port d'arrêt de Tomcat</summary>

Par défaut Tomcat écoute sur un port d'arrêt local (8005) pour la commande `SHUTDOWN` .

* Désactivez le port en définissant `port="-1"`, ou
* Changez à la fois le port et la commande d'arrêt pour des valeurs imprévisibles.

1. Modifier le `<Server>` élément dans `server.xml`.

```bash
sudo nano /opt/pentaho/server/pentaho-server/tomcat/conf/server.xml
```

Exemples :

```xml
<Server port="-1" shutdown="SHUTDOWN">
```

ou

```xml
<Server port="18005" shutdown="My$tr0ngShutCmd">
```

2. Redémarrez le serveur Pentaho.

```bash
sudo systemctl restart pentaho-server
```

</details>

<details>

<summary>Pages d'erreur personnalisées (404, 403, 500)</summary>

Définissez des pages d'erreur au niveau de l'application pour éviter d'exposer les valeurs par défaut.

1. Créez une page d'erreur dans votre webapp.

```bash
sudo tee /opt/pentaho/server/pentaho-server/tomcat/webapps/pentaho/error.jsp >/dev/null <<'EOF'
<html>
<head>
  <title>Error</title>
</head>
<body>
  <h1>Something went wrong</h1>
  <p>Please contact your administrator.</p>
</body>
</html>
EOF
```

2. Ajoutez des mappages d'erreur dans la webapp `web.xml`.

```bash
sudo nano /opt/pentaho/server/pentaho-server/tomcat/webapps/pentaho/WEB-INF/web.xml
```

```xml
<error-page>
  <error-code>404</error-code>
  <location>/error.jsp</location>
</error-page>
<error-page>
  <error-code>403</error-code>
  <location>/error.jsp</location>
</error-page>
<error-page>
  <error-code>500</error-code>
  <location>/error.jsp</location>
</error-page>
```

3. Redémarrez le serveur et testez.

</details>

<details>

<summary>Durée d'expiration de la session</summary>

Définissez un délai d'expiration global des sessions pour l'application.

1. Modifiez la webapp `web.xml`.

```bash
sudo nano /opt/pentaho/server/pentaho-server/tomcat/webapps/pentaho/WEB-INF/web.xml
```

```xml
<session-config>
  <session-timeout>20</session-timeout>
</session-config>
```

</details>

<details>

<summary>Augmenter le temps d'attente au démarrage de Karaf</summary>

Si le démarrage du serveur expire pendant que Karaf installe des fonctionnalités, augmentez le temps d'attente.

1. Arrêtez le serveur.

```bash
sudo systemctl stop pentaho-server
```

2. Éditez `server.properties`.

```bash
sudo nano /opt/pentaho/server/pentaho-server/pentaho-solutions/system/server.properties
```

Décommentez ou ajoutez :

```
# Time (ms) to wait for Karaf to install features before timing out
karafWaitForBoot=180000
```

3. Démarrez le serveur.

```bash
sudo systemctl start pentaho-server
```

</details>

<details>

<summary>Supprimer les données d'exemple du serveur</summary>

Retirez les exemples d'évaluation avant de passer en production.

1. Arrêtez le serveur.

```bash
sudo systemctl stop pentaho-server
```

2. Supprimez le `samples.zip` du contenu par défaut (le chemin peut varier selon la version).

```bash
sudo rm -f /opt/pentaho/server/pentaho-server/pentaho-solutions/system/default-content/samples.zip || true
```

3. Modifiez la webapp `web.xml` et supprimez les définitions d'exemples HSQLDB et le SystemStatusFilter (uniquement pour dev).

```bash
sudo nano /opt/pentaho/server/pentaho-server/tomcat/webapps/pentaho/WEB-INF/web.xml
```

Supprimez les blocs similaires à :

```xml
<context-param>
  <param-name>hsqldb-databases</param-name>
  <param-value>sampledata@../../data/hsqldb/sampledata</param-value>
</context-param>

<listener>
  <listener-class>org.pentaho.platform.web.http.context.HsqldbStartupListener</listener-class>
</listener>

<filter>
  <filter-name>SystemStatusFilter</filter-name>
  <filter-class>com.pentaho.ui.servlet.SystemStatusFilter</filter-class>
</filter>
```

4. Supprimez éventuellement le dossier `data/` si seul du contenu d'exemple a été utilisé (vérifiez votre environnement avant de supprimer).

```bash
sudo rm -rf /opt/pentaho/server/pentaho-server/data || true
```

5. Démarrez le serveur et supprimez les dossiers d'exemple via PUC (Browse Files → Public → Move to Trash).

```bash
sudo systemctl start pentaho-server
```

</details>

<details>

<summary>Masquer les widgets de la perspective Accueil</summary>

Masquez Getting Started et d'autres widgets depuis la page d'accueil de PUC.

1. Arrêtez le serveur.

```bash
sudo systemctl stop pentaho-server
```

2. Modifiez la configuration de la perspective Home.

```bash
sudo nano /opt/pentaho/server/pentaho-server/tomcat/webapps/pentaho/mantle/home/properties/config.properties
```

Ajoutez ou mettez à jour :

```
disabled-widgets=getting-started,recents,favorites
```

3. Démarrez le serveur et connectez-vous pour vérifier.

```bash
sudo systemctl start pentaho-server
```

</details>

<details>

<summary>Désactiver l'autocomplétion sur la page de connexion (avancé)</summary>

La modification des JSP fournies par le fournisseur peut être écrasée lors d'une mise à niveau. Privilégiez le SSO ou le contrôle via reverse proxy. Si nécessaire, modifiez le JSP de connexion.

1. Arrêtez le serveur.

```bash
sudo systemctl stop pentaho-server
```

2. Éditez `PUCLogin.jsp`.

```bash
sudo nano /opt/pentaho/server/pentaho-server/tomcat/webapps/pentaho/jsp/PUCLogin.jsp
```

3. Désactivez l'autocomplétion pour les champs utilisateur/mot de passe.

```html
<input id="j_username" name="j_username" type="text" autocomplete="off">
<input id="j_password" name="j_password" type="password" autocomplete="off">
```

4. Démarrez le serveur.

```bash
sudo systemctl start pentaho-server
```

</details>

<details>

<summary>Augmenter les limites d'upload CSV</summary>

Ajustez les limites d'upload et (optionnellement) la base de données de staging.

1. Éditez `pentaho.xml`.

```bash
sudo nano /opt/pentaho/server/pentaho-server/pentaho-solutions/system/pentaho.xml
```

```xml
<file-upload-defaults>
  <relative-path>/system/metadata/csvfiles/</relative-path>
  <max-file-limit>10000000</max-file-limit>
  <max-folder-limit>500000000</max-folder-limit>
</file-upload-defaults>
```

2. Changez la base de données de staging pour les fichiers CSV (optionnel) dans `data-access/settings.xml`.

```bash
sudo nano /opt/pentaho/server/pentaho-server/pentaho-solutions/system/data-access/settings.xml
```

```xml
<!-- settings for Agile Data Access -->
<data-access-staging-jndi>hibernate</data-access-staging-jndi>
```

3. Dans PUC, allez dans Tools → Refresh System Settings, puis redémarrez PUC (ou le serveur) pour appliquer.

</details>

***
