# Install Pentaho Server

{% hint style="info" %}

#### Pentaho Server Installation

This section will guide you through the installation of the Pentaho Server:

* create installation directories
* create Pentaho Repository databases
* configure JDBC database connections
* start Pentaho server - systemd
* license manager
  {% endhint %}

<figure><img src="https://content.gitbook.com/content/Hrss1d6LJpXIRksI8lK3/blobs/sLj9ipfZSsHteMpb0XgK/image.png" alt=""><figcaption><p>Pentaho Pro Suite</p></figcaption></figure>

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

#### Pentaho Server Directories

The Pentaho server is a web application that runs in an Apache Tomcat servlet container.
{% endhint %}

1. Create /opt/pentaho server directories.

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

```
* server        - server zip packages
* software      - Pentaho binaries
```

2. Create /opt/pentaho/software sub-directories.

```bash
cd
cd /opt/pentaho/software
sudo mkdir -p {server,shims,ee-plugins,db_drivers}
```

```
* server       - server binaries
* shims        - collections of Hadoop libraries required to communicate with a specific version of Hadoop
* ee-pligins   - pentaho ee-plugins
* db_drivers   - database drivers
```

***

{% hint style="info" %}

#### Unpack Pentaho Server Packages

The jar command is a general-purpose archiving and compression tool, based on ZIP and the ZLIB compression format.&#x20;

x - Extract files from a JAR archive&#x20;

f - Sets the file specified by the jarfile operand to be the name of the JAR file that is created
{% endhint %}

1. Copy Pentaho server package.

```bash
cd
cd ~/Downloads/'Archive Build (Suggested Installation Method)'/
sudo cp * /opt/pentaho/software/server
```

2. Unjar pentaho-server-ee-10.2.0.0-222.zip to /opt/pentaho/server/

```bash
cd
cd /opt/pentaho/server
sudo jar -vxf /opt/pentaho/software/server/pentaho-server-ee-10.2.0.0-222.zip
```

3. &#x20;Change the permission for all .sh files.

{% hint style="info" %}
All .sh files will need executable permission.
{% endhint %}

```bash
cd
cd /opt/pentaho/server
sudo find . -iname "*.sh" -exec bash -c 'chmod +x "$0"' {} \;
```

```
find [obvious!]
.        - from this folder. You can put a path instead
-iname   - case insensitive name
"*.sh"   - wildcard filename
-exec    - utility to execute commands
bash     - what tool you want to use (you can use sh instead)
-c flag means execute the following command as interpreted by this program.
chmod +x - command to change the file to executable
"$0"     - The value that was passed to the utility
{}       - If the string {} appears anywhere in the utility name or the arguments it is replaced by the pathname of the current file.
;        - Terminates the command
```

3. Check that it matches the following directory structure:

{% hint style="info" %}
&#x20;   /opt/pentaho/&#x20;

&#x20;        server/&#x20;

&#x20;            pentaho-server/&#x20;

&#x20;                pentaho-solutions/&#x20;

&#x20;                    system&#x20;

The server plugins are installed into the system folder.
{% endhint %}
{% endtab %}

{% tab title="2. Pentaho Repository" %}
{% hint style="warning" %}

#### Pentaho Repository

The Pentaho Repository resides on the database that you installed during the Windows or Linux environment preparation step, and consists of the following components:&#x20;

#### **Jackrabbit**&#x20;

Contains the solution repository, examples, security data, and content data from reports that you use Pentaho software to create.&#x20;

#### **Quartz**&#x20;

Holds data that is related to scheduling reports and jobs.&#x20;

#### **Hibernate**&#x20;

Holds data that is related to audit logging.&#x20;

#### **Pentaho Operations Mart**&#x20;

Report on system usage and performance.
{% endhint %}

{% tabs %}
{% tab title="2.1 Database Passwords" %}
{% hint style="warning" %}
For your production server, Pentaho recommends that you change the default passwords in the following SQL script files to make the databases more secure.
{% endhint %}

1. Examine postgresql database scripts.

```bash
cd
cd /opt/pentaho/server/pentaho-server/data
ls -l
cd postgresql
ls -l
```

{% hint style="info" %}
For this workshop we're going to keep the defaults user and password.
{% endhint %}

```
create_jcr_postgresql.sql
create_quartz_postgresql.sql
create_repository_postgresql.sql
pentaho_logging_postgresql.sql
pentaho_mart_postgresql.sql
```

2. Examine postgresql database scripts.

```bash
 cd
 cd /opt/pentaho/server/pentaho-server/data/postgresql
 cat create_jcr_postgresql.sql
```

```
--
-- note: this script assumes pg_hba.conf is configured correctly
--

-- \connect postgres postgres

drop database if exists jackrabbit;
drop user if exists jcr_user;

CREATE USER jcr_user PASSWORD 'password';
CREATE DATABASE jackrabbit WITH OWNER = jcr_user ENCODING = 'UTF8' TABLESPACE =>
GRANT ALL PRIVILEGES ON DATABASE jackrabbit to jcr_user;
```

3. Exit.

```
CTRL x
```

***

{% hint style="danger" %}

#### Change Authentication Mode

Client authentication is controlled by pg\_hba.conf and is stored in the database cluster's data directory. (HBA stands for host-based authentication.)&#x20;

You need ensure that users defined in the scripts are able to be authenticated to connect to the tables.
{% endhint %}

1. Edit pg\_hba.conf.

```bash
cd
sudo nano /etc/postgresql/15/main/pg_hba.conf
```

2. Replace 'peer' for local connection with 'md5'.

<figure><img src="https://content.gitbook.com/content/Hrss1d6LJpXIRksI8lK3/blobs/2fnE6EvHqXi9Lo439ECg/image.png" alt=""><figcaption><p>Change from peer to md5</p></figcaption></figure>

{% hint style="info" %}
The MD5 (message-digest algorithm) hashing algorithm is a one-way cryptographic function that accepts a message of any length as input and returns as output a fixed-length digest value to be used for authenticating the original message.
{% endhint %}

3. Save.

```
CTRL + o
Enter
CTRL + x
```

4. Restart service.

```bash
sudo service postgresql restart
```

{% endtab %}

{% tab title="2.2 SQL Scripts" %}
{% hint style="info" %}

#### Run SQL Scripts

You will find SQL scripts for each supported Repository database:

* PostgreSQL
* Oracle
* MS Sql Server
* MySQL
* MariaDB
  {% endhint %}

1. Check postgresql repository is running.

```bash
sudo systemctl status postgresql
```

2. Select postgresql scripts directory.

```bash
cd
cd /opt/pentaho/server/pentaho-server/data/postgresql
ls -l
```

```
-rw-r--r-- 1 root root   464 Aug  7 07:42 alter_script_postgresql_BISERVER-13674.sql
-rw-r--r-- 1 root root   363 Aug  7 07:40 create_jcr_postgresql.sql
-rw-r--r-- 1 root root  5647 Aug  7 07:40 create_quartz_postgresql.sql
-rw-r--r-- 1 root root   356 Aug  7 07:40 create_repository_postgresql.sql
-rw-r--r-- 1 root root  4016 Aug  7 07:43 pentaho_logging_postgresql.sql
-rw-r--r-- 1 root root  1220 Aug  7 07:43 pentaho_mart_drop_postgresql.sql
-rw-r--r-- 1 root root 19035 Aug  7 07:43 pentaho_mart_postgresql.sql
-rw-r--r-- 1 root root   286 Aug  7 07:43 pentaho_mart_upgrade_audit_postgresql.sql
-rw-r--r-- 1 root root  7533 Aug  7 07:43 pentaho_mart_upgrade_postgresql.sql
```

3. Log in as 'pentaho' superuser.

```bash
sudo -su pentaho psql postgres
```

```
Passw0rd123
```

&#x20;💡The default password for each user: password

&#x20;💡You can switch database in PostgreSQL with the command: \c

<table><thead><tr><th width="310">Script</th><th width="118">Database</th><th>User / Password</th></tr></thead><tbody><tr><td>\i create_jcr_postgresql.sql</td><td>Jackrabbit</td><td></td></tr><tr><td>\i create_quartz_postgresql.sql</td><td>Quartz</td><td>pentaho_user/password</td></tr><tr><td>\i create_repository_postgresql.sql</td><td>Hibernate</td><td></td></tr><tr><td>\i pentaho_mart_postgresql.sql</td><td>OpsMart</td><td>hibuser/password</td></tr><tr><td>\i pentaho_logging_postgresql.sql</td><td>Logging</td><td>hibuser/password</td></tr></tbody></table>

{% hint style="warning" %}
Ensure you're in the

/opt/pentaho/server/pentaho-server/data/postgresql directory.

Refer to the table above for username / password.

You may need to \q and log back in.
{% endhint %}

4. Execute the scripts.

```
\i create_jcr_postgresql.sql
```

```
\i create_quartz_postgresql.sql
```

Enter password:&#x20;

```
password
```

Quit:

```
\q
```

Log back in as 'pentaho' superuser.

```bash
sudo -su pentaho psql postgres
```

```
Welcome123
```

```
\i create_repository_postgresql.sql
```

```
\i pentaho_mart_postgresql.sql
```

Enter password:

```
password
```

Quit:

```
\q
```

Log back in as 'pentaho' superuser.

```bash
sudo -su pentaho psql postgres
```

```
Welcome123
```

```
\i pentaho_logging_postgresql.sql
```

Enter password:

```
 password
```

Quit:

```
\q
```

4. Check the databases in pgAdmin.

{% hint style="warning" %}
No tables are created in the Hibernate and Jackrabbit databases. These are created during the installation of the Pentaho server.
{% endhint %}

<figure><img src="https://content.gitbook.com/content/Hrss1d6LJpXIRksI8lK3/blobs/8WQksitjgwznxREuvIUJ/databases.png" alt=""><figcaption><p>Pentaho Repository databases</p></figcaption></figure>
{% endtab %}

{% tab title="2.3 Configure Repository" %}
{% hint style="info" %}

#### Pentaho Repository

Now that you have initialized your repository database, you will need to configure Quartz, Hibernate, Jackrabbit, and Pentaho Operations Mart for a PostgreSQL database.

PostgreSQL is configured by default; if you kept the default passwords and port, you will not need to set up Quartz, Hibernate, Jackrabbit or the Pentaho Operations Mart.
{% endhint %}

{% hint style="danger" %}
By default, the examples in this section are for a PostgreSQL database that runs on port 5432. The default password is also in these examples.&#x20;

If you have a different port or different password, make sure that you change the password and port number in these examples to match the ones in your configuration.
{% endhint %}

***

{% hint style="info" %}

#### Quartz

Event information, such as scheduled reports, is stored in the Quartz JobStore. During the installation process, you must indicate where the JobStore is located by modifying the quartz.properties file.
{% endhint %}

1. Navigate to quartz directory.

```bash
cd 
cd /opt/pentaho/server/pentaho-server/pentaho-solutions/system/scheduler-plugin/quartz
sudo nano -c quartz.properties
```

2. Locate the #\_replace\_jobstore\_properties section and check.

```
[line 300/451]
org.quartz.jobStore.driverDelegateClass =
org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
```

3. Locate the # Configure Datasources section and check.

```
[line 379/451]
org.quartz.dataSource.myDS.jndiURL = Quartz
```

4. Exit.

```
CTRL + x
```

***

{% hint style="info" %}

#### Hibernate

Modify the Hibernate settings file to specify where Pentaho should find the Pentaho Repository’s Hibernate configuration file. The Hibernate configuration file specifies driver and connection information, as well as dialects and how to handle connection closes and timeouts.&#x20;

The Hibernate database is also where the Pentaho Server stores the audit logs that act as source data for the Pentaho Operations Mart.
{% endhint %}

1. Navigate to hibernate-settings directory.

```bash
cd 
cd /opt/pentaho/server/pentaho-server/pentaho-solutions/system/hibernate
sudo nano -c hibernate-settings.xml
```

2. Locate the config-file section and check.

```
[line 36/53]
<config-file>system/hibernate/postgresql.hibernate.cfg.xml</config-file>
```

3. Exit.

```bash
CTRL + x
```

4. Display postgresql.hibernate.cfg.xml.

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

5. Check postgresql has been set as default.

```
[line 35/51]
    <!--  Postgres 8 Configuration -->
    <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/Hibernat>
    <property name="connection.pool_size">10</property>
    <property name="show_sql">false</property>
    <property name="hibernate.jdbc.use_streams_for_binary">true</property>
    <!-- replaces DefinitionVersionManager -->
    <property name="hibernate.hbm2ddl.auto">update</property>
    <!-- load resource from classpath -->
    <mapping resource="hibernate/postgresql.hbm.xml" />
    <!-- mapping resource above is from CE; below is from EE -->
    <mapping resource="hibernate/postgresql.EE.hbm.xml" />
  </session-factory>
</hibernate-configuration>

```

6. Exit.

```
CTRL + x
```

***

{% hint style="info" %}

#### Jackrabbit

Apache Jackrabbit is a platform of java open source content repository. A JCR (Java content repository) is a type of object database to customizing, storing, searching and retrieving hierarchical data.&#x20;
{% endhint %}

{% embed url="<https://jackrabbit.apache.org/jcr/index.html>" %}

{% hint style="info" %}
As shown in the table below, locate and verify or change the code so that the PostgreSQL lines are not commented out, but the MySQL, Oracle, and MS SQL Server lines are commented out.

&#x20;If you have a different port or different password, make sure that you change the password and port number in these examples to match the ones in your configuration.
{% endhint %}

1. Navigate to jackrabbit directory.

```bash
cd 
cd /opt/pentaho/server/pentaho-server/pentaho-solutions/system/jackrabbit
sudo nano -c repository.xml
```

<table><thead><tr><th width="151">Line #</th><th width="227">Section</th><th>Check</th></tr></thead><tbody><tr><td>line 71/442</td><td>Repository</td><td>Filesystem schema: postgresql</td></tr><tr><td>line 129/442</td><td>Datastore</td><td>databaseType: postgresql</td></tr><tr><td>line 231/442</td><td>Workspace</td><td>Filesystem schema: postgresql</td></tr><tr><td>line 279/442</td><td>Persistence Manager (1)</td><td>PersistenceManager schema: postgesql</td></tr><tr><td>line 347/442</td><td>Versioning</td><td>Filesystem schema: postgresql</td></tr><tr><td>line 398/442</td><td>Persistence Manager (2)</td><td>PersistenceManager schema: postgesql</td></tr><tr><td>line 434/442</td><td>Database Journal</td><td>Journal schema: postgresql</td></tr></tbody></table>

2. Exit.

```
CTRL + x
```

{% endtab %}
{% endtabs %}
{% endtab %}

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

#### Tomcat

After your Repository has been configured, you must configure the web application servers to connect to the Pentaho Repository. In this step, you will make JDBC and JNDI connections to the Hibernate, Jackrabbit, and Quartz components.
{% endhint %}

{% tabs %}
{% tab title="3.1 Database Drivers" %}
{% hint style="warning" %}

#### Database Drivers

To connect to a database, including the Pentaho Repository database, you will need to download and install a JDBC driver to the appropriate places for Pentaho components as well as on the the web application server that contains the Pentaho Server.

Due to licensing restrictions, Pentaho cannot redistribute some third-party database drivers. You must download the file yourself and install it yourself.
{% endhint %}

{% hint style="info" %}
For this workshop we're going to distribute a MySQL driver ..
{% endhint %}

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

1. Copy the JDBC drivers to jdbc-distribution.

```bash
cd
cd ~/Downloads/'Database Drivers'/
sudo cp * /opt/pentaho/software/db_drivers
```

```bash
cd 
cd /opt/pentaho/software/db_drivers
sudo cp mysql-connector-j-9.0.0.jar /opt/pentaho/server/jdbc-distribution
```

2. Distribute the drivers.

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

```
/opt/pentaho/server/jdbc-distribution
DEBUG: Using PENTAHO_JAVA_HOME
DEBUG: _PENTAHO_JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
DEBUG: _PENTAHO_JAVA=/usr/lib/jvm/java-17-openjdk-amd64/bin/java
You must restart your Pentaho Server and Client tools to begin using the new drivers.
```

{% hint style="danger" %}
You will need to restart the Pentaho Server and Client Tools to register the driver.

Multiple distribution paths can be set, separated by a 'space'.
{% endhint %}

```bash
reboot
```

Location of JDBC drivers in Pentaho+: &#x20;

| Server / Design Tool               | Directory                                  |
| ---------------------------------- | ------------------------------------------ |
| Pentaho Server                     | /server/pentaho-server/tomcat/lib          |
| Pentaho Data Integration (Spoon)   | /design-tools/data-integration/lib         |
| Pentaho Report Designer (PRD)      | /design-tools/report-designer/lib/jdbc     |
| Pentaho Aggregation Designer (PAD) | /design-tools/aggregation-designer/drivers |
| Pentaho Schema Workbench (PSW)     | /design-tools/schema-workbench/drivers     |
| Pentaho Metadata Editor (PME)      | /design-tools/metadata-editor/libext/JDBC  |

{% hint style="warning" %}
Check that the driver(s) have been added ..  sometimes the distribution tool fails..  !!
{% endhint %}
{% endtab %}

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

#### context.xml

Database connection and network information, such as the username, password, driver class information, IP address or domain name, and port numbers for your Pentaho Repository database are stored in the context.xml file.
{% endhint %}

1. Check context.xml.

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

{% hint style="warning" %}
In a Production environment, check the username, password, driver class information, IP address (or domain name), and port numbers to match the correct values for your environment.
{% endhint %}

2. Exit.

```
CTRL + x
```

{% endtab %}
{% endtabs %}
{% endtab %}

{% tab title="4. Start Server" %}
{% hint style="info" %}

#### Start Server

Now that you have completed the initial Pentaho Archive installation steps, you are ready to start the Pentaho Server.
{% endhint %}

1. Switch to pentaho-server directory.

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

```
DEBUG: Using PENTAHO_JAVA_HOME
DEBUG: _PENTAHO_JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
DEBUG: _PENTAHO_JAVA=/usr/lib/jvm/java-17-openjdk-amd64/bin/java
DEBUG: PENTAHO_LICENSE_INFORMATION_PATH=
Using CATALINA_BASE:   /opt/pentaho/server/pentaho-server/tomcat
Using CATALINA_HOME:   /opt/pentaho/server/pentaho-server/tomcat
Using CATALINA_TMPDIR: /opt/pentaho/server/pentaho-server/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /opt/pentaho/server/pentaho-server/tomcat/bin/bootstrap.jar:/opt/pentaho/server/pentaho-server/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   -Xms2048m -Xmx6144m -Djava.library.path=/opt/pentaho/server/pentaho-server/pentaho-solutions/native-lib/linux/x86_64/ -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Dfile.encoding=utf8 -Djava.locale.providers=COMPAT,SPI -DDI_HOME="/opt/pentaho/server/pentaho-server/pentaho-solutions/system/kettle"
Tomcat started.
```

3. Tail the log (new terminal).

```bash
cd
sudo tail -f /opt/pentaho/server/pentaho-server/tomcat/logs/catalina.2024-*.log
```

```
....
31-Jul-2024 17:20:03.810 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
31-Jul-2024 17:20:03.827 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [61207] milliseconds
```

***

{% hint style="info" %}

#### Pentaho User Console

The Pentaho User Console (PUC) is a web-based design environment where you can analyze data, create interactive reports, dashboard reports, and build integrated dashboards to share business intelligence solutions with others in your organization and on the internet.
{% endhint %}

{% embed url="<http://localhost:8080/pentaho>" %}
Link to Pentaho Server&#x20;
{% endembed %}

```
Username: admin
Password: password
```

<figure><img src="https://content.gitbook.com/content/Hrss1d6LJpXIRksI8lK3/blobs/wW91qsqo0rvOnHBa7zAj/PUC.png" alt=""><figcaption><p>Pentaho User Console</p></figcaption></figure>

***

{% hint style="info" %}

#### Systemd

Systemd is a system and service manager for Linux operating systems. It's designed to be backwards compatible with SysV init scripts, and provides several features to start system services in parallel, which can reduce boot times.
{% endhint %}

To use this service:

1. Save the file below as: `/etc/systemd/system/pentaho-server.service`

```systemd
[Unit]										  
Description=Pentaho Server							  
Before=multi-user.target															 								  
Before=graphical.target								  
After=network.service								  
After=network.target								  
After=syslog.target			  
											  
[Service]								       	  
Type=forking									  
Environment="JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64"		    					  
ExecStart=/opt/pentaho/server/pentaho-server/start-pentaho.sh
ExecStartPost=/bin/echo pentaho...end of unitfile		 		  
ExecStop=/opt/pentaho/server/pentaho-server/stop-pentaho.sh
TimeoutSec=500									  
IgnoreSIGPIPE=no									  
KillMode=process									  
GuessMainPID=no									  
RemainAfterExit=yes								  
SuccessExitStatus=5 6								  
User=root									  
 										  
[Install]									  
WantedBy=multi-user.target
```

2. Reload the systemd daemon.

```bash
sudo systemctl daemon-reload
```

3. Start the service.

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

4. Enable the service to start on boot.

```bash
sudo systemctl enable pentaho-server
```

```
Created symlink /etc/systemd/system/multi-user.target.wants/pentaho-server.service → /etc/systemd/system/pentaho-server.service.
```

You can then manage the service using standard systemd commands:

To stop:&#x20;

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

To restart:&#x20;

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

To check status:&#x20;

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

{% endtab %}

{% tab title="5. License Manager" %}

<figure><img src="https://content.gitbook.com/content/Hrss1d6LJpXIRksI8lK3/blobs/TQWQfQfCfnJlHgVnios0/image.png" alt=""><figcaption><p>Licensing</p></figcaption></figure>

{% tabs %}
{% tab title="License Manager" %}
{% hint style="warning" %}
The Pentaho Licensing model has changed in Pentaho Pro Suite 10.+ Licenses are now handled via a License Manager.

This embedded service (on-prem / cloud) will enable our customers (Direct & OEM) to manage their PDI & BA entitlements with greater visibility and ease.&#x20;

The License manger also checks EE plugins.
{% endhint %}

{% hint style="info" %}

#### Trial license

You can obtain a Pentaho trial license to test the product before you acquire it. You need internet access to activate a trial license and run the installed trial version. It is not possible to run it for an extended period of time while disconnected from internet.
{% endhint %}

The temporary license expires thirty days after the start of the evaluation period.

1. To request a trial activation ID, go to the [Pentaho Enterprise download page](https://www.hitachivantara.com/en-us/products/pentaho-platform/data-integration-analytics/download-pentaho.html). Alternatively, contact the Pentaho Sales team.
2. On the download page, click Start a Free 30 Day Trial to open the trial registration form.
3. Complete the trial registration form and click Submit. The trial entitlement and activation ID is sent to you by email.
4. Download and install the Pentaho product. When launching the product, the Add License window opens.

<figure><img src="https://content.gitbook.com/content/Hrss1d6LJpXIRksI8lK3/blobs/zAaL9XX8ptsBLsna26fM/LM.png" alt=""><figcaption><p>License Manager</p></figcaption></figure>

5. Select Activation Code.
6. Copy the activation ID that you received from the local license manager, paste it into the provided field, and click OK

<figure><img src="https://content.gitbook.com/content/Hrss1d6LJpXIRksI8lK3/blobs/kf44LYIdht3MDpDdzbng/image.png" alt=""><figcaption><p>Trial license - activation code</p></figcaption></figure>

{% hint style="warning" %}

#### Enterprise licenses

If you are an existing customer wanting to upgrade from Pentaho 9.x or earlier supported versions, do not start the server before upgrading the licenses. You must install the new version of the product before activating the licenses.
{% endhint %}

{% hint style="info" %}
**Activate a license using a cloud license server**

If you are able to access our cloud license server without any security restrictions, this is the quickest way to get up and running with Pentaho.

Copy the cloud license server URL that Pentaho emails you into the License Server field of the Add License dialog box that opens when you launch the product and click OK.
{% endhint %}
{% endtab %}

{% tab title="Set ENV License Path" %}
{% hint style="info" %}

#### Set ENV License Path

To ensure that the Pentaho Server uses the same location to store and retrieve your Pentaho licenses, you must create a PENTAHO\_LICENSE\_INFORMATION\_PATH system environment variable for your Pentaho user account if it does not exist. It does not matter what location you choose; however, the location needs to be available to the user account(s) that run the Pentaho Server.
{% endhint %}

Perform the following steps to set the environment variable for the license path in Linux.

1. Edit the /etc/environment file.

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

2. Add this line in a convenient place (changing the path if necessary)

```bash
# 
export PENTAHO_LICENSE_INFORMATION_PATH=/home/pentaho/.pentaho/.elmLicInfo.plt
```

{% hint style="info" %}
The license information file is saved in the /home/pentaho/.pentaho folder.
{% endhint %}

3. Log out and log back into the operating system for the change to take effect.
4. Verify that the variable is properly set using the following command.

```bash
env | grep PENTAHO_LICENSE_INFORMATION_PATH
```

The PENTAHO\_LICENSE\_INFORMATION\_PATH variable is now set.
{% endtab %}
{% endtabs %}
{% endtab %}
{% endtabs %}
