This guide is broken since Jenkins does not support Java 16. Feel free to look for a solution and create a Pull Request, see the related issue.

Jenkins is an open source automation server written in Java. Jenkins helps to automate the non-human part of the software development process, with continuous integration and facilitating technical aspects of continuous delivery. It is a server-based system that runs in servlet containers such as Apache Tomcat. It supports version control tools, including AccuRev, CVS, Subversion, Git, Mercurial, Perforce, TD/OMS, ClearCase and RTC, and can execute Apache Ant, Apache Maven and sbt based projects as well as arbitrary shell scripts and Windows batch commands. The creator of Jenkins is Kohsuke Kawaguchi. Released under the MIT License, Jenkins is free software.

Builds can be triggered by various means, for example by commit in a version control system, by scheduling via a cron-like mechanism and by requesting a specific build URL. It can also be triggered after the other builds in the queue have completed. Jenkins functionality can be extended with plugins.


For this guide you should be familiar with the basic concepts of


Recommended reading to follow along and go beyond this guide:


Jenkins is released under the MIT License.


We’re using Java version 14 (9, 10 and 12 are currently not supported by Jenkins, 8 and 11 are no longer provided by uberspace).

[isabell@stardust ~]$ java -version
openjdk version "14.0.1" 2020-04-14
OpenJDK Runtime Environment 20.3 (build 14.0.1+7)
OpenJDK 64-Bit Server VM 20.3 (build 14.0.1+7, mixed mode, sharing)
[isabell@stardust ~]$

Your URL needs to be setup:

[isabell@stardust ~]$ uberspace web domain list
[isabell@stardust ~]$


Create Workspace

First create a folder called Jenkins and a subfolder called Jenkins_home. Jenkins_home will hold all your Jenkins’s data.

[isabell@stardust ~]$ mkdir ~/Jenkins/Jenkins_home -p
[isabell@stardust ~]$

Download Jenkins

Next we download the current version of Jenkins:

[isabell@stardust ~]$ wget -O Jenkins/jenkins.war
--2019-05-24 15:33:32--
Resolving (
Connecting to (||:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: [following]
--2019-05-24 15:33:32--
Resolving (, 2600:3404:200:237::2
Connecting to (||:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 77273755 (74M) [application/x-java-archive]
Saving to: ‘Jenkins/jenkins.war’

100%[====================================================>]  77,273,755  21.4MB/s   in 3.7s

2019-05-24 15:33:36 (20.1 MB/s) - ‘Jenkins/jenkins.war’ saved [77273755/77273755]
[isabell@stardust ~]$

At this point you would already be able to run Jenkins, but you wouldn’t be able to connect to it and it would not run as a service.


Install service

We create the service file ~/etc/services.d/jenkins.ini and fill it with:

command=java -jar %(ENV_HOME)s/Jenkins/jenkins.war --httpPort=8080 --enable-future-java

After creating the configuration, tell supervisord to refresh its configuration and start the service:

[isabell@stardust ~]$ supervisorctl reread
SERVICE: available
[isabell@stardust ~]$ supervisorctl update
SERVICE: added process group
[isabell@stardust ~]$ supervisorctl status
SERVICE                            RUNNING   pid 26020, uptime 0:03:14
[isabell@stardust ~]$

Your Jenkins is now up and running as a service.

Finally we’ll setup our connection to the rest of the world.

Setup Web backend


Jenkins is running on port 8080.

To make the application accessible from the outside, configure a web backend:

[isabell@stardust ~]$ uberspace web backend set / --http --port <port>
Set backend for / to port <port>; please make sure something is listening!
You can always check the status of your backend using "uberspace web backend list".
[isabell@stardust ~]$

Finishing Installation

First connect and initial password

Now you can go to and see the Jenkins asking for your initial password. It is stored in ~/.jenkins/secrets/initialAdminPassword.

[isabell@stardust ~]$ cat ~/.jenkins/secrets/initialAdminPassword
[isabell@stardust ~]$

Just copy and paste that and you’ll be good to go. Just follow the setup and everything should work out.


To jump to a new version just replace the old war with the new version.

Written by: Raphael Höser <>