Setting up a Pentaho server as a Windows service

by Andrew Cave
January 13, 2017
  1. Download the 64-bit version of Apache Tomcat that matches the Apache Tomcat version that was bundled with the PDI Server
  2. In the downloaded Tomcat zip file, copy the tomcat\bin\tomcat6.exe and tomcat\bin\tomcat6w.exe into the data-integration-server\tomcat\bin directory. Overwrite the existing files (Pentaho 6.1 is using Tomcat8 so tomcat8.exe and tomcat8w.exe)
  3. Start an Administrator Command Prompt, and navigate to the same data-integration-server\tomcat\bin directory.
  4. Run the following commands:
    • service.bat install PentahoDIServer

This will install the service, but we still need to configure it.

That warning about the jvm.dll means we might have to find it ourselves.  But first we’ll get the service interface ready.

5. Run this in the cmd window

copy tomcat8w.exe PentahoDIServer.exe

(or tomcat6w depending on your version).  Note that this is the same name as the service we just installed

Then, still in the cmd window, run


and the service manager pops up

6. Configure the service

Change the display name/description to your taste (this is what you will see in the Windows services console).

Change the startup type to ‘Automatic’

The next tab allows you to set the user that the service will be executed under.  The default is OK for now

The next tab (Logging) has the logging settings (including STDIN and STDOUT) Default is OK here, though you can redirect if you choose.

The next tab has the java settings.  And look! It found where the jvm.dll is.  If it hadn’t, we could have set it manuallyp7

We needed to add the following Java option  for both BA and PDI services

-Dpentaho.installed.licenses.file=E:\Program Files\pentaho\installed_licence\.installedLicenses.xml

(The exact path will probably differ on your server)

And these ones for the PDI server



The KETTLE_HOME variable is the drive & directory that your .kettle directory lives in.  In this case it is E:\.kettle, so KETTLE_HOME is just E:\

You will probably want to increase the ‘Initial Memory Pool’ and the ‘Maximum memory pool’ which control the initial amount of memory the PDI server grabs and the maximum it will ask Windows for.  The exact amount will (of course) depend on the amount of RAM available on your server


NB:  If the Database Server that houses the Pentaho Repository is stored on the local system, ensure that it is also running as a Windows Service, so that the Pentaho server can connect to the repository when it starts up

Restart the Windows Server. Confirm that the DI Server starts successfully

Repeat the process for the BA server (except call the service PentahoBAServer instead)

Portrait of Maxx Silver
Andrew Cave

Andrew Cave is a senior data engineer with BizCubed. He has worked in network data, billing, telco credit and debt after a career in the welfare sector. He loves databases. Follow him on LinkedIn

More blog posts