Install Jenkins on Debian 10

Oracle JDK option

Download JDK from Oracle, you will need a Oracle account.

apt-get -y install gnupg git
tar -C /opt/ -zxvf $HOME/jdk-8u261-linux-x64.tar.gz
#tar -C /opt/ -zxvf $HOME/jdk-8u261-linux-x64.tar.gz
echo 'export JAVA_HOME=/opt/jdk1.8.0_261'>> /etc/profile
echo 'export PATH=$PATH:$JAVA_HOME/bin'>> /etc/profile
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | apt-key add -
echo 'deb https://pkg.jenkins.io/debian-stable binary/'>> /etc/apt/sources.list.d/jenkins.list
apt-get update
apt-get -y install jenkins

You will need to fix the error from daemon start, so modifiy /etc/init.d/jenkins and change the lines as follows:

PATH=/bin:/usr/bin:/sbin:/usr/sbin

to

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/opt/jdk1.8.0_261/bin

Restart Jenkins:

systemctl restart jenkins

OpenJDK option

apt-get -y install gnupg git openjdk-11-jdk apt-transport-https
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | apt-key add -
echo 'deb https://pkg.jenkins.io/debian-stable binary/'>> /etc/apt/sources.list.d/jenkins.list
apt-get update
apt-get -y install jenkins

nginx configuration

If you want to use port https or http, a good recommendation is create a nginx proxy to redirect traffic to standard port.

apt-get install nginx
cat <<EOF>> /etc/nginx/sites-available/jenkins.conf
upstream jenkins {
  keepalive 32; # keepalive connections
  server 127.0.0.1:8080; # jenkins ip and port
}

# Required for Jenkins websocket agents
map \$http_upgrade \$connection_upgrade {
        default upgrade;
        '' close;
}

server {
  listen          80 default_server;       # Listen on port 80 for IPv4 requests

  server_name     _;

  # this is the jenkins web root directory
  # (mentioned in the /etc/default/jenkins file)
  root            /var/cache/jenkins/war/;

  access_log      /var/log/nginx/jenkins/access.log;
  error_log       /var/log/nginx/jenkins/error.log;
  # pass through headers from Jenkins that Nginx considers invalid
  ignore_invalid_headers off;

  location ~ "^/static/[0-9a-fA-F]{8}\/(.*)$" {
    #rewrite all static files into requests to the root
    #E.g /static/12345678/css/something.css will become /css/something.css
    rewrite "^/static/[0-9a-fA-F]{8}\/(.*)" /\$1 last;
  }

  location /userContent {
    # have nginx handle all the static requests to userContent folder
    #note : This is the \$JENKINS_HOME dir
    root /var/lib/jenkins/;
    if (!-f \$request_filename){
      #this file does not exist, might be a directory or a /**view** url
      rewrite (.*) /\$1 last;
      break;
    }
    sendfile on;
  }

  location / {
      sendfile off;
      proxy_pass         http://jenkins;
      proxy_redirect     default;
      proxy_http_version 1.1;

      # Required for Jenkins websocket agents
      proxy_set_header   Connection        \$connection_upgrade;
      proxy_set_header   Upgrade           \$http_upgrade;

      proxy_set_header   Host              \$host;
      proxy_set_header   X-Real-IP         \$remote_addr;
      proxy_set_header   X-Forwarded-For   \$proxy_add_x_forwarded_for;
      proxy_set_header   X-Forwarded-Proto \$scheme;
      proxy_max_temp_file_size 0;

      #this is the maximum upload size
      client_max_body_size       10m;
      client_body_buffer_size    128k;

      proxy_connect_timeout      90;
      proxy_send_timeout         90;
      proxy_read_timeout         90;
      proxy_buffering            off;
      proxy_request_buffering    off; # Required for HTTP CLI commands
      proxy_set_header Connection ""; # Clear for keepalive
  }

}
EOF
rm /etc/nginx/sites-enabled/default
ln -s /etc/nginx/sites-available/jenkins.conf /etc/nginx/sites-enabled/
mkdir /var/log/nginx/jenkins
chown www-data.www-data /var/log/nginx/jenkins/
systemctl restart nginx

Initial password

cat /var/lib/jenkins/secrets/initialAdminPassword
jenkins_debian_10.txt · Last modified: 2021/05/07 13:48
Public Domain Except where otherwise noted, content on this wiki is licensed under the following license: Public Domain