Skip to content
Live $100 credit at signup, up to $300 total Offer ends December 31, 2026 Get started →

Jenkins

Jenkins is an open-source automation server for building, testing, and deploying software. Its pipeline-as-code model and large plugin ecosystem let you wire up continuous integration and continuous delivery for almost any toolchain. The web UI runs on port 8080.

ComponentVersion
Jenkins2.555.3 (LTS)
OpenJDK21 (JRE)
Ubuntu24.04 LTS
ResourceMinimumRecommended
vCPU12
RAM2 GB4 GB
Storage20 GB50 GB

This image takes no deploy-time variables. It creates no shared administrator account. Jenkins generates a unique unlock password on every VM. Read it after first boot, then create your own administrator in the setup wizard:

sudo cat /var/lib/jenkins/secrets/initialAdminPassword
ssh ubuntu@<your-vm-ip>

On the first boot, a setup script starts Jenkins, which generates a unique initial admin password for this instance. This can take a few minutes on the first start. Track progress:

journalctl -u jenkins-first-boot.service -f

The login message (MOTD) confirms when Jenkins is ready.

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

Open a browser and navigate to:

http://<your-vm-ip>:8080

Paste the initial admin password, install the suggested plugins, and create your first administrator account.

Jenkins runs as a systemd service.

# Check status
systemctl status jenkins
# Restart
sudo systemctl restart jenkins
# View logs
sudo journalctl -u jenkins -f

Jenkins home (jobs, plugins, and configuration): /var/lib/jenkins.

Port 8080 is open on the VM’s network interface. UFW is enabled and allows SSH (port 22) and Jenkins (port 8080). No build-agent port (50000) is opened by default.

To restrict the UI to a specific IP:

sudo ufw delete allow 8080/tcp
sudo ufw allow from <trusted-ip> to any port 8080

To reach the UI without opening the firewall, use an SSH tunnel:

# Run this on your local machine
ssh -L 8080:localhost:8080 ubuntu@<your-vm-ip>

For production use, place Jenkins behind a reverse proxy such as nginx with a TLS certificate and serve the UI over HTTPS instead of exposing port 8080 directly.

Last updated: