Ubuntuを最新にする

sudo apt update
sudo apt upgrade

# 必要であれば再起動
sudo reboot

Java11をインストール

sudo apt install default-jdk
sudo apt install default-jdk-headless

Dockerをインストール

公式サイトを参考:https://docs.docker.com/install/linux/docker-ce/ubuntu/

sudo apt-get update

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io

Jenkinsをインストール

UbuntuにはすでにJenkinsのパッケージがあるので、apt経由でインストールできます:http://pkg.jenkins-ci.org/debian/

wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -

/etc/apt/sources.listを開いて、下記の行を追加:

deb https://pkg.jenkins.io/debian binary/

インストール:

sudo apt-get update
sudo apt-get install jenkins

これでJenkinsはすでにポート8080に動いている、このまま使ってもいいが、NginxをgatewayにしてSSLも実装しちょおう!

NginxとSSL実装

Nginxをインストール

sudo apt update
sudo apt install nginx

Certbotをインストール

公式サイト参考: https://certbot.eff.org/lets-encrypt/ubuntubionic-nginx

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot python-certbot-nginx

<ドメイン>のSSL証明書を発行:

sudo certbot certonly --nginx -d <ドメイン>

Nginxの設定、ファイル/etc/nginx/sites-available/jenkins.confを新規して、下記の内容を記入:

<ドメイン>を自分のドメイン名にしてください。

server {
    listen 80;
    server_name <ドメイン>;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name <ドメイン>;
    server_tokens off;

    ssl_certificate /etc/letsencrypt/live/<ドメイン>/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/<ドメイン>/privkey.pem;

    location / {
      proxy_set_header        Host $host:$server_port;
      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;

      # Fix the "It appears that your reverse proxy set up is broken" error.
      proxy_pass          http://127.0.0.1:8080;
      proxy_read_timeout  90;

      proxy_redirect      http://127.0.0.1:8080 <ドメイン>;

      # Required for new HTTP-based CLI
      proxy_http_version 1.1;
      proxy_request_buffering off;
      # workaround for https://issues.jenkins-ci.org/browse/JENKINS-45651
      add_header 'X-SSH-Endpoint' '<ドメイン>:50022' always;
    }
}

設定をリンクする:

ln -s /etc/nginx/sites-available/jenkins.conf /etc/nginx/sites-enabled/jenkins

# デフォルトの設定を削除
rm /etc/nginx/sites-enabled/default

設定をチェック

sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

問題なければ、Nginx再起動で設定を有効化する:

sudo service nginx restart

今はmaster一台しかない状態ですが、必要に応じて追加していけばいいかなと思います!