Installing Jenkins on Ubuntu

You are here:
< All Topics

Jenkins is a self-contained open-source automation server used for automating repetitive technical assignments involved in programming, testing, delivering and deploying software.


Jenkins is Java-based and can be installed using Ubuntu packages, Docker, or by downloading and running its web application archive (WAR) file that includes all the contents of a web application to run on a server.


Prerequisites for Installing Jenkins


A minimum 1 GB of RAM for a small team and 4 GB+ of RAM for production-level Jenkins installations.


Oracle JDK 11 needs to be installed



So, first we need to install openjdk:


do an apt update first


Next, check for Java installation on the system:


$ java -version



If Java is not currently installed, you will get the following output:


Command ‘java’ not found, but can be installed with:


sudo apt install openjdk-11-jre-headless # version 11.0.10+9-0ubuntu1~20.04, or
sudo apt install default-jre # version 2:1.11-72
sudo apt install openjdk-8-jre-headless # version 8u282-b08-0ubuntu1~20.04
sudo apt install openjdk-13-jre-headless # version 13.0.4+8-1~20.04
sudo apt install openjdk-14-jre-headless # version 14.0.2+12-1~20.04



root@asus:/home/kevin# apt install default-jdk
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following packages were automatically installed and are no longer required:
daemon libevent-core-2.1-7 libevent-pthreads-2.1-7 libopts25 sntp
Use ‘sudo apt autoremove’ to remove them.
The following additional packages will be installed:
default-jdk-headless default-jre default-jre-headless libxt-dev openjdk-11-jdk openjdk-11-jdk-headless openjdk-11-jre



root@asus:/home/kevin# java -version
openjdk version “16.0.1” 2021-04-20
OpenJDK Runtime Environment (build 16.0.1+9-Ubuntu-120.10)
OpenJDK 64-Bit Server VM (build 16.0.1+9-Ubuntu-120.10, mixed mode, sharing)



Setting the JAVA_HOME Environment Variable in Ubuntu

Most of the Java-based software programs use the JAVA_HOME environment variable to discover the Java installation location.


To set the JAVA_HOME environment variable, first, check where Java is installed by running the following command:


$ readlink -f /usr/bin/java

root@asus:/home/kevin# readlink -f /usr/bin/java


then do


nano /etc/environment


Add the following line at the end of the file, make sure to replace the location of your Java installation path.



then save the file and reload the file to apply the changes to your current session:


$ source /etc/environment

Verify that the environment variable is set:


$ echo $JAVA_HOME


root@asus:~# source /etc/environment
root@asus:~# echo $JAVA_HOME



Next we can install jenkins!


To take advantage of the most recent stable version of Jenkins features and fixes, use the project-maintained packages to install:


$ wget -q -O – | sudo apt-key add –
$ sudo sh -c ‘echo deb binary/ > /etc/apt/sources.list.d/jenkins.list’
$ sudo apt-get update
$ sudo apt-get install jenkins




Jul 18 14:15:19 asus systemd[1]: Starting LSB: Start Jenkins at boot time…
Jul 18 14:15:19 asus jenkins[1382664]: Found an incorrect Java version
Jul 18 14:15:19 asus jenkins[1382664]: Java version found:
Jul 18 14:15:19 asus jenkins[1382686]: openjdk version “16.0.1” 2021-04-20



Starting LSB: Start Jenkins at boot time
Found an incorrect Java version
Java version found:
openjdk version “16.0.1” 2021-04-20



Unfortunately, Jenkins does not work with Java version openjdk 16.


I switched to Java  version 11 and now it works:


root@asus:/etc/init.d# update-alternatives –config java
There are 2 choices for the alternative java (providing /usr/bin/java).


Selection Path Priority Status
0 /usr/lib/jvm/java-16-openjdk-amd64/bin/java 1611 auto mode
* 1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode
2 /usr/lib/jvm/java-16-openjdk-amd64/bin/java 1611 manual mode


Press <enter> to keep the current choice[*], or type selection number:


(previously it was 0 ie version 16)



root@asus:/etc/init.d# systemctl status jenkins
● jenkins.service – LSB: Start Jenkins at boot time
Loaded: loaded (/etc/init.d/jenkins; generated)
Active: active (exited) since Sun 2021-07-18 14:26:36 CEST; 2min 8s ago
Docs: man:systemd-sysv-generator(8)
Process: 1386375 ExecStart=/etc/init.d/jenkins start (code=exited, status=0/SUCCESS)


Jul 18 14:26:34 asus systemd[1]: Starting LSB: Start Jenkins at boot time…
Jul 18 14:26:34 asus jenkins[1386375]: Correct java version found
Jul 18 14:26:34 asus jenkins[1386375]: * Starting Jenkins Automation Server jenkins
Jul 18 14:26:34 asus su[1386414]: (to jenkins) root on none
Jul 18 14:26:34 asus su[1386414]: pam_unix(su-l:session): session opened for user jenkins by (uid=0)
Jul 18 14:26:35 asus su[1386414]: pam_unix(su-l:session): session closed for user jenkins
Jul 18 14:26:36 asus jenkins[1386375]: …done.
Jul 18 14:26:36 asus systemd[1]: Started LSB: Start Jenkins at boot time.
lines 1-14


You can then call up Jenkins on the machine by using a web-browser and entering the URL: 







Table of Contents