> For the complete documentation index, see [llms.txt](https://academy.pentaho.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://academy.pentaho.com/pentaho-11-installation-en/pentaho-11-installation-fr/installation/archive-installation/install-pentaho-server.md).

# Installez Pentaho Server

{% hint style="info" %}

#### **Pentaho Server**

Cette section vous guide dans l’installation et le démarrage de Pentaho Server sur Ubuntu.

Vous allez :

* Créer les répertoires d’installation
* Préparer les bases de données du référentiel Pentaho
* Configurer les connexions JDBC/JNDI
* Démarrer Pentaho Server (et éventuellement configurer systemd)
* Configurer le gestionnaire de licences
  {% endhint %}

{% hint style="warning" %}
Base testée : Ubuntu 24.04 LTS avec Java 21 (OpenJDK) et PostgreSQL 17.

Assurez-vous d’avoir terminé [Préparer l’environnement](/pentaho-11-installation-en/pentaho-11-installation-fr/installation/archive-installation/prepare-environment.md) en premier.

Pour les détails de compatibilité, voir [Référence des composants](https://docs.pentaho.com/install/components-reference).
{% endhint %}

{% hint style="info" %}
**Prérequis**

* Serveur Ubuntu 24.04 LTS
* Java 21 installé et `PENTAHO_JAVA_HOME` défini
* PostgreSQL 17 installé et en cours d’exécution
* Un utilisateur `pentaho` non root avec sudo
* `package` unzip installé
* Archives ZIP et pilotes JDBC téléchargés
  {% endhint %}

<figure><img src="/files/aab4d18597206bfea4adc1b539b9f5675ca17875" alt="Pentaho Pro Suite overview image"><figcaption><p>Pentaho Pro Suite</p></figcaption></figure>

{% tabs %}
{% tab title="1. Pentaho Server" %}
{% hint style="info" %}

#### **Répertoires de Pentaho Server**

Pentaho Server est une application web exécutée dans un conteneur de servlets Apache Tomcat.
{% endhint %}

1. Créez les répertoires de base sous `/opt/pentaho`.

```bash
cd
sudo mkdir -p /opt/pentaho/{server,software}
```

```
/opt/pentaho
├── server      # Runtime serveur décompressé (tomcat, pentaho-solutions, scripts)
└── software    # Installateurs, ZIP, pilotes (zone de transit)
```

2. Créez des sous-répertoires dans `/opt/pentaho/software`.

```bash
cd /opt/pentaho/software
sudo mkdir -p {db-drivers,docker,ee-client,ee-plugins,ops-mart,sdk,server,shims}
```

```
db-drivers   - pilotes JDBC
docker       - configuration Pentaho sur site et Dockerfiles
ee-client    - plugins client Pentaho EE
ee-plugins   - plugins serveur Pentaho EE
ops-mart     - scripts Operations Mart
sdk          - kit Pentaho SDK
server       - serveur Pentaho
shims        - collections de shims Hadoop
```

***

{% hint style="info" %}
**Décompresser le paquet Pentaho Server (ZIP)**

Utilisez `package` pour extraire le ZIP du serveur dans le répertoire d’exécution. Cela évite d’avoir besoin du JDK complet (le JRE n’inclut pas l’outil `jar` ).

* `pentaho-server-ee-11.0.0.0-2xx.zip` - Pentaho Server (Archive - incl. Tomcat 10)
  {% endhint %}

1. Assurez-vous que `package` est disponible et copiez les ZIP du serveur dans la zone de transit.

```bash
cd
sudo apt update -y && sudo apt install -y unzip
sudo cp ~/Downloads/'Archive Build (Suggested Installation Method)'/* /opt/pentaho/software/server
```

2. Extrayez le ZIP de Pentaho Server dans `$PENTAHO_BASE/server`.

```bash
cd
cd "$PENTAHO_BASE/server"

# Remplacez <version> par le nom exact du fichier que vous avez téléchargé
sudo unzip /opt/pentaho/software/server/pentaho-server-ee-11.0.0.0-2xx.zip
```

<figure><img src="/files/993f1016188f00b85b36a1c91a5c142e477afdfe" alt=""><figcaption><p>Décompresser Pentaho Server</p></figcaption></figure>

3. Rendez tous les fichiers `.sh` exécutables.

```bash
cd
cd "$PENTAHO_BASE/server"
sudo find . -iname "*.sh" -exec chmod +x {} \;
```

4. Définissez la propriété et des permissions raisonnables pour exécuter 'pentaho' en tant qu’utilisateur non root.

```bash
cd
sudo chown -R pentaho:pentaho /opt/pentaho
sudo find /opt/pentaho -type d -exec chmod 755 {} \;
sudo find /opt/pentaho -type f -exec chmod 644 {} \;
sudo find /opt/pentaho -name "*.sh" -exec chmod 755 {} \;
```

{% hint style="info" %}
755 signifie que vous pouvez faire tout ce que vous voulez avec le fichier ou le répertoire, et que les autres utilisateurs peuvent le lire et l’exécuter, mais pas le modifier. Convient aux programmes et aux répertoires que vous souhaitez rendre accessibles publiquement.

644 signifie que vous pouvez lire et écrire le fichier ou le répertoire, et que les autres utilisateurs peuvent seulement le lire.
{% endhint %}

5. Vérifiez la structure du répertoire du serveur.

{% hint style="info" %}
/opt/pentaho/

```
  server/
    pentaho-server/
      pentaho-solutions/
        system/
```

Les plugins du serveur sont installés dans le dossier `pentaho-solutions/system` .
{% endhint %}
{% endtab %}

{% tab title="2. Référentiel Pentaho" %}
{% hint style="info" %}

#### **Composants du référentiel Pentaho**

Le référentiel Pentaho (sur PostgreSQL par défaut) se compose de :

* Jackrabbit : référentiel de solutions, sécurité et métadonnées de contenu
* Quartz : données du planificateur
* Hibernate : journalisation d’audit
* Pentaho Operations Mart : rapports d’utilisation et de performance
  {% endhint %}

{% stepper %}
{% step %}
**Vérifiez les mots de passe par défaut dans les scripts SQL**

1. Inspectez les scripts PostgreSQL fournis avec le serveur.

```bash
cd
cd "$PENTAHO_SERVER/data/postgresql"
ls -1
```

Vous devriez voir des fichiers similaires à :

```
alter_script_postgresql_BISERVER-13674.sql
create_jcr_postgresql.sql
create_quartz_postgresql.sql
create_repository_postgresql.sql
migrate_old_quartz_data_postgresql.sql
pentaho_logging_postgresql.sql
pentaho_mart_drop_postgresql.sql
pentaho_mart_postgresql.sql
pentaho_mart_upgrade_audit_postgresql.sql
pentaho_mart_upgrade_postgresql.sql

```

2. Ouvrez un script pour examiner les utilisateurs/mots de passe par défaut (à modifier en production).

```bash
sed -n '1,120p' create_jcr_postgresql.sql
```

{% hint style="danger" %}
Conseils pour la production : utilisez des mots de passe uniques et robustes, changez-les régulièrement, stockez-les dans un coffre-fort sécurisé et ne validez jamais de secrets dans le contrôle des sources.

Ne conservez pas les mots de passe par défaut de l’atelier en production.
{% endhint %}
{% endstep %}

{% step %}
**Exécuter les scripts SQL pour créer les bases de données du référentiel**

1. Confirmez que PostgreSQL fonctionne et localisez les scripts.

```bash
sudo systemctl status postgresql --no-pager
cd
cd "$PENTAHO_SERVER/data/postgresql"
ls -l
```

2. Connectez-vous en tant que `pentaho` superutilisateur.

Mot de passe : `SecurePassword123`

```bash
sudo -u pentaho psql -d postgres
```

3. Exécutez les commandes étape par étape - pas comme un seul bloc de script. Fournissez les mots de passe si demandé - voir ci-dessous.

```plsql
\i create_jcr_postgresql.sql
\i create_quartz_postgresql.sql
\q quittez après Quartz et reconnectez-vous ..
assurez-vous d’être dans le répertoire "$PENTAHO_SERVER/data/postgresql"
sudo -u pentaho psql -d postgres
\i create_repository_postgresql.sql
\i pentaho_mart_postgresql.sql
\q quittez après Hibernate et reconnectez-vous ..
assurez-vous d’être dans le répertoire "$PENTAHO_SERVER/data/postgresql"
sudo -u pentaho psql -d postgres
\i pentaho_logging_postgresql.sql
\q
```

| Utilisateur   | Mot de passe      |
| ------------- | ----------------- |
| postgres      | SecurePassword123 |
| pentaho       | SecurePassword123 |
| jcr\_user     | password          |
| pentaho\_user | password          |
| hibuser       | password          |

4. Validation rapide (CLI) - listez les bases de données créées et connectez-vous - appuyez sur q pour faire défiler la liste.

```sql
\l+ jackrabbit
\l+ quartz
\l+ hibuser
\l+ opsmart
\c jackrabbit
\dt
\c quartz
\dt
```

{% hint style="warning" %}
Les tables pour Hibernate et Jackrabbit peuvent être créées plus tard par Pentaho Server lors du premier démarrage. Voir des schémas vides à ce stade est normal.
{% endhint %}

5. Facultatif : vérifiez dans pgAdmin (GUI).

<figure><img src="/files/773ce3837a3579553ec91780820431dabf68e7bf" alt=""><figcaption><p>Bases de données Pentaho</p></figcaption></figure>
{% endstep %}

{% step %}
**Configurer Pentaho pour utiliser PostgreSQL**

{% hint style="info" %}
PostgreSQL est la valeur par défaut. Si vous avez conservé les mots de passe et le port par défaut (`5432`), vérifiez uniquement les paramètres ci-dessous ; sinon, ajustez l’hôte/le port/l’utilisateur/le mot de passe pour correspondre à votre environnement.
{% endhint %}

***

{% hint style="info" %}
Quartz - définissez le delegate PostgreSQL et la source de données JNDI.
{% endhint %}

1. Ouvrez la configuration Quartz.

```bash
cd "$PENTAHO_SERVER/pentaho-solutions/system/scheduler-plugin/quartz"
sudo nano -c quartz.properties
```

2. Vérifiez ces valeurs (les numéros de ligne peuvent différer) :

{% code title="quartz.properties — entrées requises" %}

```
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
org.quartz.dataSource.myDS.jndiURL=Quartz
```

{% endcode %}

***

{% hint style="info" %}
Hibernate — pointez vers le fichier de configuration PostgreSQL.
{% endhint %}

1. Ouvrez les paramètres Hibernate.

```bash
cd "$PENTAHO_SERVER/pentaho-solutions/system/hibernate"
sudo nano -c hibernate-settings.xml
```

2. Confirmez la référence au fichier de configuration :

{% code title="hibernate-settings.xml" %}

```
<config-file>system/hibernate/postgresql.hibernate.cfg.xml</config-file>
```

{% endcode %}

3. Vérifiez éventuellement `postgresql.hibernate.cfg.xml` pour le nom de la source de données et le dialecte.

```bash
sudo nano -c postgresql.hibernate.cfg.xml
```

Assurez-vous que :

{% code title="postgresql.hibernate.cfg.xml — propriétés clés" %}

```
<property name="connection.driver_class">org.postgresql.Driver</property>
<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<property name="hibernate.connection.datasource">java:comp/env/jdbc/Hibernate</property>
```

{% endcode %}

***

{% hint style="info" %}
Jackrabbit — vérifiez le stockage PostgreSQL dans `repository.xml`.
{% endhint %}

1. Ouvrez la configuration Jackrabbit.

```bash
cd "$PENTAHO_SERVER/pentaho-solutions/system/jackrabbit"
sudo nano -c repository.xml
```

2. Vérifiez que les sections PostgreSQL sont actives (les autres commentées), par exemple :

{% hint style="info" %}

* Schéma du système de fichiers : `postgresql`
* Magasin de données `databaseType="postgresql"`
* Schéma du gestionnaire de persistance : `postgresql`
* Journal de base de données : `postgresql`
  {% endhint %}

{% hint style="warning" %}
Vérifiez les noms JNDI et les ports entre Quartz, Hibernate, Jackrabbit et Tomcat `context.xml` pour garantir la cohérence (même hôte, port 5432 sauf modification, et noms de ressources JNDI correspondants).

Noms JNDI attendus :

* Quartz : `Quartz`
* Hibernate : `java:comp/env/jdbc/Hibernate`
* Jackrabbit : comme référencé dans `repository.xml`
  {% endhint %}
  {% endstep %}
  {% endstepper %}
  {% endtab %}

{% tab title="3. Tomcat" %}
{% hint style="info" %}

#### **Tomcat**

Après avoir configuré le référentiel, configurez le serveur d’applications web (Tomcat 10) pour se connecter au référentiel à l’aide de JDBC/JNDI.
{% endhint %}

{% tabs %}
{% tab title="1. Pilotes de base de données" %}
{% hint style="warning" %}

#### **Pilotes JDBC**

Pour vous connecter aux bases de données (y compris le référentiel), installez les pilotes JDBC appropriés. En raison de restrictions de licence, certains pilotes doivent être téléchargés manuellement.
{% endhint %}

{% embed url="<https://docs.pentaho.com/install/jdbc-drivers-reference>" %}

{% embed url="<https://jdbc.postgresql.org/download/postgresql-42.7.8.jar>" %}

1. Vérifiez que le pilote JDBC PostgreSQL est présent dans la bibliothèque Tomcat (requis pour le référentiel) :

```bash
ls -1 "$TOMCAT_HOME/lib" | grep -i postgresql || echo "Pilote PostgreSQL introuvable"
```

{% hint style="info" %}
Si ce n’est pas le cas, téléchargez le pilote JDBC PostgreSQL (par exemple, `postgresql-42.7.8.jar`) et distribuez-le à l’aide du script d’assistance :
{% endhint %}

```bash
sudo cp ~/Downloads/'Database Drivers'/postgresql-*.jar /opt/pentaho/server/jdbc-distribution
cd /opt/pentaho/server/jdbc-distribution
sudo ./distribute-files.sh "$TOMCAT_HOME/lib"
```

2. Copiez tout pilote JDBC supplémentaire dans le dossier de transit et distribuez-le.

```bash
sudo cp ~/Downloads/'Database Drivers'/* /opt/pentaho/software/db-drivers
cd /opt/pentaho/software/db-drivers
sudo cp mysql-connector-j-9.0.0.jar /opt/pentaho/server/jdbc-distribution
```

3. Distribuez les pilotes à Tomcat.

```bash
cd /opt/pentaho/server/jdbc-distribution
sudo ./distribute-files.sh "$TOMCAT_HOME/lib"
```

4. Vérifiez que les JAR sont présents dans la bibliothèque Tomcat.

```bash
ls -1 "$TOMCAT_HOME/lib" | grep -Ei 'mysql|postgresql' || echo "Introuvable"
```

{% hint style="danger" %}
Vous devez redémarrer Pentaho Server (et les outils client, s’ils sont en cours d’exécution) pour charger les nouveaux pilotes JDBC. Un redémarrage complet du système n’est pas nécessaire.
{% endhint %}
{% endtab %}

{% tab title="2. context.xml" %}
{% hint style="info" %}

#### **context.xml**

Les informations de connexion de base de données pour les ressources JNDI utilisées par Pentaho sont stockées dans `context.xml`.
{% endhint %}

1. Ouvrez le fichier et examinez les ressources JNDI et les identifiants.

```bash
cd "$TOMCAT_HOME/webapps/pentaho/META-INF"
sudo nano -c context.xml
```

{% hint style="warning" %}
En production, vérifiez que le nom d’utilisateur, le mot de passe, la classe du pilote, l’hôte/IP et le port correspondent à votre environnement. Assurez-vous que les noms JNDI s’alignent avec les configurations Quartz, Hibernate et Jackrabbit.
{% endhint %}
{% endtab %}
{% endtabs %}
{% endtab %}

{% tab title="4. Démarrer le serveur" %}
{% hint style="info" %}

#### **Démarrer Pentaho Server**

Exécutez le serveur en tant que `pentaho` utilisateur pour éviter les problèmes d’autorisations.
{% endhint %}

1. Démarrez le serveur.

```bash
cd
cd "$PENTAHO_SERVER"
./start-pentaho.sh
```

2. Surveillez le journal Tomcat (méthode robuste).

```bash
tail -f "$TOMCAT_HOME/logs/catalina."*.log
```

Les messages attendus incluent :

```
... Démarrage de ProtocolHandler ["http-nio-8080"]
... Démarrage du serveur en [xxxxx] millisecondes
```

***

{% hint style="info" %}
**Pentaho User Console (PUC)**

Pentaho User Console (PUC) est l’interface web pour créer et consulter du contenu.
{% endhint %}

{% embed url="<http://localhost:8080/pentaho>" %}
Lien vers Pentaho Server
{% endembed %}

Identifiants par défaut (à modifier immédiatement après la première connexion) :

```
Nom d’utilisateur : admin
Mot de passe : password
```

<figure><img src="/files/475b7501f364732935e20820389aa6d33eda9715" alt=""><figcaption><p>Pentaho User Console</p></figcaption></figure>

3. Vous avez également la possibilité de basculer vers le nouvel écran de connexion.

{% embed url="<http://localhost:8080/pentaho/content/login/web/index.html>" %}

<figure><img src="/files/f702d0f54f9e246996dcc897532792bafafa0093" alt=""><figcaption><p>NOUVEAU - Pentaho User Console</p></figcaption></figure>

{% hint style="info" %}
Si vous avez déjà saisi vos informations de licence, vous serez alors redirigé vers la nouvelle User Console.
{% endhint %}

***

{% hint style="success" %}
**Validations rapides**
{% endhint %}

* Vérifiez que HTTP répond :

```bash
curl -I http://localhost:8080/pentaho/ | head -n 1
```

* Facultatif (accès à distance) : ouvrez le pare-feu et testez depuis une machine cliente (adaptez selon votre politique réseau) :

```bash
sudo ufw allow 8080/tcp || true
```

***

<details>

<summary>Valider le référentiel après la première exécution (cliquez pour développer)</summary>

```sql
-- Exemple Quartz
\c quartz
SELECT COUNT(*) FROM qrtz_scheduler_state;

-- Exemple Hibernate (attendez-vous à de nombreuses tables après le premier démarrage)
\c hibuser
\dt
```

</details>

***

{% hint style="info" %}
**systemd (facultatif)**

Créez un service systemd pour gérer Pentaho au démarrage et en cas de panne.
{% endhint %}

1. Enregistrez le fichier d’unité sous `/etc/systemd/system/pentaho-server.service`.

{% code title="/etc/systemd/system/pentaho-server.service" %}

```ini
[Unit]
Description=Pentaho Server
After=network-online.target
Wants=network-online.target

[Service]
Type=forking
User=pentaho
Group=pentaho
EnvironmentFile=-/etc/environment
# Solution de repli facultative si vous n’utilisez pas PENTAHO_JAVA_HOME dans /etc/environment
# Environment="JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64"
WorkingDirectory=/opt/pentaho/server/pentaho-server
ExecStart=/opt/pentaho/server/pentaho-server/start-pentaho.sh
ExecStop=/opt/pentaho/server/pentaho-server/stop-pentaho.sh
TimeoutSec=500
Restart=on-failure
RestartSec=5
SuccessExitStatus=5 6
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
```

{% endcode %}

2. Rechargez et démarrez.

```bash
sudo systemctl daemon-reload
sudo systemctl start pentaho-server
sudo systemctl enable pentaho-server
```

Gérez le service :

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

***

<details>

<summary>Dépannage (cliquez pour développer)</summary>

* HTTP 404 sur `/pentaho` après le démarrage : confirmez `"$TOMCAT_HOME/webapps/pentaho"` existe, vérifiez `catalina.*.log` pour les erreurs de déploiement, et vérifiez les permissions des fichiers sous `$PENTAHO_SERVER`.
* Le port 8080 est déjà utilisé : modifiez le port Tomcat dans `server.xml` ou arrêtez le service en conflit.
* Pilote JDBC introuvable : vérifiez les fichiers JAR du pilote (par exemple, `postgresql-*.jar`, `mysql-*.jar`) existent dans `"$TOMCAT_HOME/lib"`.
* L’authentification à PostgreSQL échoue : préférez `scram-sha-256`; vérifiez `pg_hba.conf`, redémarrez PostgreSQL et testez `psql -h 127.0.0.1` avec l’utilisateur cible.
* Problèmes de schéma Jackrabbit : vérifiez à nouveau `repository.xml` les sections sont définies sur `postgresql`.
* Erreurs d’activation de licence : vérifiez les journaux Tomcat dans `tomcat/logs/` pour `licence`/`elm` messages.

</details>

***

{% endtab %}

{% tab title="5. Gestionnaire de licences" %}
{% hint style="info" %}

#### **Gestionnaire de licences**

Pentaho Pro Suite 11.x utilise un gestionnaire de licences (cloud ou local) pour gérer les droits PDI et BA et vérifier les plugins EE.
{% endhint %}

<figure><img src="/files/8bf72c4733cbbcbfd01330637948a523c9764381" alt=""><figcaption><p>Licences</p></figcaption></figure>

{% tabs %}
{% tab title="Gestionnaire de licences" %}
{% hint style="info" %}

#### **Licence d’essai**

Une licence d’essai de 30 jours est incluse si vous avez téléchargé depuis : [Essai Pentaho de 30 jours](https://pentaho.com/download/)

Si vous avez téléchargé les binaires GA depuis : [Portail client Pentaho](https://support.pentaho.com/hc/en-us), alors vous aurez besoin d’un ID d’activation ou de votre URL de licence.

Si vous avez installé dans un environnement isolé du réseau, vous devrez demander une licence hors ligne.
{% endhint %}

1. Lancez Pentaho Server > Administration > Licences pour ouvrir la boîte de dialogue Ajouter une licence.
2. Cliquez sur le signe +.

<figure><img src="/files/ded2b234d7316bd9268a2dd7b4e4d72125fd1b69" alt=""><figcaption><p>Ajouter une licence</p></figcaption></figure>

5. Saisissez le code d’activation ou votre URL de licence :

<figure><img src="/files/274d73d753cd6f5b72b717967613c6b28b31db66" alt="Add License dialog"><figcaption><p>Gestionnaire de licences</p></figcaption></figure>

{% hint style="warning" %}
**Licences Entreprise**

Si vous passez de la version 9.x ou antérieure, installez la nouvelle version du produit avant d’activer les licences. Ne démarrez pas le serveur avant d’avoir mis à niveau les licences.
{% endhint %}
{% endtab %}

{% tab title="Définir le chemin de licence ENV" %}
{% hint style="info" %}
**Définir la variable d’environnement du chemin de licence**

Créez une `PENTAHO_LICENSE_INFORMATION_PATH` variable d’environnement afin que Pentaho Server trouve systématiquement votre fichier de licence.
{% endhint %}

1. Assurez-vous que le répertoire cible existe et est sécurisé.

```bash
sudo -u pentaho mkdir -p /home/pentaho/.pentaho
sudo chown -R pentaho:pentaho /home/pentaho/.pentaho
chmod 700 /home/pentaho/.pentaho
```

2. Modifiez `/etc/environment` et ajoutez la ligne ci-dessous (pas `export`).

```bash
sudo nano /etc/environment
```

Ajoutez (ou mettez à jour) ce qui suit :

```
PENTAHO_LICENSE_INFORMATION_PATH=/home/pentaho/.pentaho/.elmLicInfo.plt
```

3. Déconnectez-vous/reconnectez-vous ou rechargez l’environnement et vérifiez.

```bash
source /etc/environment
env | grep PENTAHO_LICENSE_INFORMATION_PATH
```

La `PENTAHO_LICENSE_INFORMATION_PATH` variable est maintenant définie.
{% endtab %}
{% endtabs %}
{% endtab %}
{% endtabs %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://academy.pentaho.com/pentaho-11-installation-en/pentaho-11-installation-fr/installation/archive-installation/install-pentaho-server.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
