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.
Software included
Section titled “Software included”| Component | Version |
|---|---|
| Jenkins | 2.555.3 (LTS) |
| OpenJDK | 21 (JRE) |
| Ubuntu | 24.04 LTS |
Requirements
Section titled “Requirements”| Resource | Minimum | Recommended |
|---|---|---|
| vCPU | 1 | 2 |
| RAM | 2 GB | 4 GB |
| Storage | 20 GB | 50 GB |
Environment variables
Section titled “Environment variables”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/initialAdminPasswordGetting started
Section titled “Getting started”1. Connect to your VM
Section titled “1. Connect to your VM”ssh ubuntu@<your-vm-ip>2. Wait for first-boot configuration
Section titled “2. Wait for first-boot configuration”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 -fThe login message (MOTD) confirms when Jenkins is ready.
3. Retrieve the initial admin password
Section titled “3. Retrieve the initial admin password”sudo cat /var/lib/jenkins/secrets/initialAdminPassword4. Complete the setup wizard
Section titled “4. Complete the setup wizard”Open a browser and navigate to:
http://<your-vm-ip>:8080Paste the initial admin password, install the suggested plugins, and create your first administrator account.
Managing Jenkins
Section titled “Managing Jenkins”Jenkins runs as a systemd service.
# Check statussystemctl status jenkins
# Restartsudo systemctl restart jenkins
# View logssudo journalctl -u jenkins -fJenkins home (jobs, plugins, and configuration): /var/lib/jenkins.
Security
Section titled “Security”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/tcpsudo ufw allow from <trusted-ip> to any port 8080To reach the UI without opening the firewall, use an SSH tunnel:
# Run this on your local machinessh -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.