CentOS 7を使用したAlibaba Cloud ECSインスタンスへのHarborのインストールと設定

このチュートリアルでは、CentOS 7を使用した**Alibaba Cloud Elastic Compute Service (ECS)**インスタンスに**Harbor**をインストールして設定します。

本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/how-to-install-harbor-on-centos-7_593832)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。

#前提条件
- Alibaba Cloud Elastic Compute Service (ECS)を有効化し、有効な支払い方法を確認する必要があります。新規ユーザーの場合は、Alibaba Cloudアカウントで無料アカウントを取得することができます。ECSインスタンスのセットアップ方法がわからない場合は、このチュートリアルまたはクイックスタートガイドを参照してください。ECSインスタンスは、少なくとも1GBのRAMと1つのCoreプロセッサを搭載している必要があります。
- Alibaba Cloudから登録されたドメイン名。すでにAlibaba Cloudまたは他のホストからドメインを登録している場合は、そのドメインネームサーバーレコードを更新することができます。
- ドメイン名は、あなたのAlibaba Cloud ECSのIPアドレスを指している必要があります。
- サーバーのホスト名を設定します。
- アリババクラウドのVNCコンソールまたはPCにインストールされているSSHクライアントにアクセスする
前提条件が完了したら、Alibaba Cloudアカウントのダッシュボードで利用できるSSHクライアントまたはVNCコンソールを介して、rootユーザー名とパスワードを使ってrootユーザーとしてログインします。

#Alibaba Cloud ECSインスタンスのセットアップ
###ルート権限を持つユーザーの追加
最初のステップでは、新しいユーザーを追加して sudo 権限を与えます。sudo 権限を与えることで、このユーザは必要に応じてシステム上で管理者権限の変更を行うことができます。このユーザは、日常的に SSH 経由でログインするために使用されます。このユーザを追加したら、様々な攻撃からサーバを守るために、rootユーザへのリモートrootアクセスを無効にします。

新しいユーザーアカウントを作成するには、以下のコマンドを使用します。

```
#  adduser aareez 
```

ここで、"areeez" は任意のユーザー名を指定できます。

追加したユーザ名にパスワードを設定する必要があります。パスワードを設定するには、以下のコマンドを実行します。

```
#  passwd aareez 
```

希望のパスワードを設定し、希望のパスワードを再入力してから**Enter**を押します。データが正しいことを確認するには、**Y**を入力してEnterを押します。

これでsudoユーザーのグループにユーザー名を割り当てて管理者権限を与えます。このために、`/etc/sudoers`ファイルをチェックして、sudoersグループが有効になっているかどうかを確認します。そのために、以下のコマンドを実行します。

```
#  visudo 
```

上記コマンドを実行するとファイルが開きますので、開いたファイルの中から以下の行を探してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/977e2e75-3ded-eb24-89e1-fa461c14a1d5.png)

デフォルトでは、2行目の **%wheel ALL=(ALL:ALL) ALL** がコメントされていることがあります (ハッシュ # で始まる )。そのため、ユーザ名を sudoers に追加した後でも **sudo** を使用するとエラーになります。この問題を防ぐには、この行が '#' 記号で始まる場合は、この記号を削除し、**Esc** キーを押しながら **:x** と入力して Enter キーを押して変更を保存してください。

ここで、以下のコマンドを実行して、ユーザー名**「aareez」**を**「wheel」**グループに追加します。

```
#  usermod -aG wheel aareez 
```

上記コマンド実行後、以下のコマンドを実行することで、そのグループのメンバーシップを確認することができます。

```
#  groups aareez 
```

あなたのユーザ名が **sudoers** グループに追加され、任意の root コマンドを実行できるようになりました。

新しいユーザ名とパスワードを使ってログインしてください。または、以下のコマンドでユーザを切り替えます。

```
#  su - aareez 
```

現在、新しいアカウントからログインしていることが確認できます。これを確認したい場合は、以下のコマンドを使用します。

```
#  whoami 
```

###wget のインストール
URLからファイルをダウンロードするには**wget**をインストールする必要があります。以下のコマンドを実行してください。

```
#  sudo yum install wget 
```

パスワードの入力を求められますが、その後、確認メッセージ **「Is this ok?」**が表示されます。**Y**を入力して**Enter**キーを押します。

###nano-editorのインストール
**nano**編集ファイルをインストールする必要があります。以下のコマンドを実行してください。

```
#  sudo yum install nano 
```

確認メッセージ**「Is this ok?」**が表示されます。**Y** と入力して **Enter** キーを押します。

###epel-releaseをインストール
**epel-release**をインストールしてepelリポジトリをインポートする必要があります。以下のコマンドを実行します。

```
#  sudo yum install epel-release 
```

確認メッセージ**「Is this ok?」**が表示されます。**Y**と入力して**Enter**キーを押します。

###CentOS 7システムのアップデート
何らかのパッケージのインストールを進める前に、以下のコマンドを使用して CentOS システムをアップデートしてください。このコマンドを実行するには、root ではないユーザから sudo 権限でログインすることを忘れないでください。

まず、以下のコマンドを実行してキャッシュをクリアします。

```
#  sudo yum clean all 
```

これで、以下のコマンドでシステムを更新します。

```
#  sudo yum -y update 
```

###yum-utils のインストール
yum-utils をインストールして **yum utils** をインポートする必要があります。

以下のコマンドを実行します。

```
#  sudo yum install yum-utils 
```

確認メッセージ**「Is this ok?」**が表示されます。**Y**と入力して**Enter**を押します。

#Docker CEとDocker Composeのインストール
###Docker CEのインストール
Docker ceとDocker composeをインストールするには、rootユーザーでログインすることをお勧めします。

```
#  su - root 
```

まず、**docker-ce**をインストールします。以下のコマンドを実行してdockerのリポジトリを行います。

```
#  yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 
```

以下のコマンドを実行します。

```
#  yum install docker-ce 
```

確認メッセージ**「Is this ok?」**が表示されます。**Y**を入力して**Enter**キーを押します。
再度尋ねられるので **「Is this ok? 」**、**Y**と入力して**Enter**キーを押します。

###python-pipをインストール
また、**python-pip**をインストールする必要があります。以下のコマンドを実行します。

```
#  yum install python-pip 
```

###Dockerのインストール Compose
`docker-compose`をインストールする必要があります。以下のコマンドを実行して、最新版のdocker-composeを取得します。

```
#  pip install docker-compose 
```

あとは以下のコマンドでdockerを起動する必要があります。

```
#  systemctl start docker 
```

dockerが正常に動作しているかどうかを確認するには、以下のコマンドを実行します。

```
#  docker run hello-world 
```

#Harborの設置
Harborをインストールする前に、sudo権限で自分のユーザーに切り替えます。私の場合、ユーザー名は**aareez**ですが、以下のコマンドで自分のユーザー名に置き換えてください。

```
#  su - aareez 
```

Harborをインストールするには、リリースページからバイナリをダウンロードする必要があります。バイナリは、オフラインだけでなく、オンラインインストーラで利用可能です。お好みのものをお使いください。

**オンラインインストーラの場合**
オンラインインストーラの場合は、以下のコマンドを実行します。

```
#  wget https://github.com/vmware/harbor/releases/download/v1.2.0/harbor-online-installer-v1.2.0.tgz 
```

**オフラインインストーラの場合**
オンラインインストーラの場合は、以下のコマンドを実行します。

```
#  wget https://github.com/vmware/harbor/releases/download/v1.2.0/harbor-offline-installer-v1.2.0.tgz 
```

次のコマンドでパッケージを展開します。

**オンラインインストーラの場合

```
#  tar -xvf harbor-online-installer-v1.2.0.tgz 
```

**オフラインインストーラの場合

```
#  tar -xvf harbor-offline-installer-v1.2.0.tgz 
```

###SSL証明書の生成
デフォルトでhttpを使用するので、クライアントのDockerデーモンに**--insecure-registry**を追加する必要があります。

`su - root`コマンドを実行して**root**ユーザーに切り替え、パスワードを入力します。

独自のSSL証明書を生成するには、以下のコマンドを実行します。**imarslan.com**を自分のドメイン名に変更することを忘れないでください。

```
#  mkdir cert && cd cert 
# openssl req -sha256 -x509 -days 365 -nodes -newkey rsa:4096 -keyout  harbor.imarslan.com.key -out harbor.imarslan.com.crt
```

- 国番号を2文字だけ入力します。私の場合は**PK**としました。
- あなたの州のフルネームを入力します。
- あなたの都市のフルネームを入力します。
- あなたの組織のフルネームを入力します。
- あなたの組織単位のフルネームを入力します。
- 共通名を入力します。私の場合は、サーバーのホスト名を使用しました。
- メールアドレスを入力します。

#Harborの設定
**sudo**権限で自分で作成したユーザーに切り替えます。私の場合、ユーザー名は **aareez** です。

```
#  su - aareez 
```

`/harbor/`ディレクトリに移動します。

```
#  cd harbor 
```

今、あなたは港の設定ファイルを編集する必要があります。以下のコマンドを実行します。

```
#  sudo nano harbor.cfg 
```

開いたファイルに以下のテキストをコピーして貼り付けてください。ホスト名は設定に応じて変更することを忘れないでください。その後、**Ctrl+X**を押し、**Y**と入力してから**Enter**を押して設定を保存します。

```
hostname = harbor.imarslan.com
ui_url_protocol = https
ssl_cert = /root/cert/harbor.imarslan.com.crt
ssl_cert_key = /root/cert/harbor.imarslan.com.key
```

インストールを完了するには、以下のコマンドを実行します。

```
#  sudo ./install.sh 
```

以下のコマンドを実行して、バックグラウンドでdockerを実行します。

```
#  sudo docker-compose up -d 
```

これで、Alibaba Cloud ECSのドメインまたはIPアドレスにアクセスすることで、HARBORにアクセスすることができるようになりました。私の場合は、[http://www.imarslan.com](https://www.imarslan.com/?spm=a2c65.11461447.0.0.63121fcb4g6FDX) を使ってアクセスすると、以下のような画面が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/7f7e1e0f-3659-5c94-c2f4-40fe07acb06d.png)

デフォルトのユーザー名とパスワードでログインできます。

ユーザー名: admin
パスワード: Harbor12345

ログインすると、以下のようなダッシュボードが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/b8036d0f-00a8-29c7-f122-20c1c22e7ec5.png)

おめでとうございます！Harborのインストールに成功しました

*アリババクラウドは日本に２つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
[アリババクラウドジャパン公式ページ](https://www.alibabacloud.com/ja)*