Conoha VPS(Ubuntu)のセットアップ手順

インフラ

VPSを始めるときに、戸惑うことが少しあったので、分かりやすくまとめていこうと思います。自分の環境はメモリ12GBのUbuntuですが、基本的にはどのOSでも同じなはずです。

webサービスを運用するための仕様にいているので、同じ用途に使う人には参考になると思います。

画面での設定

図1:VPSセットアップ画面

まずは左のバーにある、「サーバー」をクリックして、自分の設定したいサーバーを選択します。そして、ネットワーク情報の中にあるセキュリティグループの右側にある「ペンのアイコン」をクリックします。

そこで、「IPv4v6-SSH」と「IPv4v6-Web」を追加します。これをすることによって、SSH接続ができるようになり、Webサービスを公開する準備ができました。

SSH接続をした後の処理

ここからは、IPアドレスとVPSを契約したときに設定したrootパスワードを使ってSSH接続をしたことを前提に進めます。

そして、基本のセキュリティアップデートを行います。

sudo apt update # パッケージ情報の更新
sudo apt upgrade # パッケージの更新
sudo apt autoremove # (必要なくなった)パッケージの自動削除

作業用のユーザーを追加

最初は、強力な権限があるroot にパスワードでログインしました。これはセキュリティリスクがあるので、SSHの接続ポートや作業ユーザーを作成します。

[ユーザー名] をユーザー名に変えてください。アルファベット入力です。

sudo adduser [ユーザー名]

パスワードの設定など聞かれるので、入力していきます。メールアドレスや住所などを聞かれますが、Enterでスキップして問題ありません。

次に、作業用のユーザーを管理者の権限を渡して高度な操作を可能にします。

sudo gpasswd -a [ユーザー名] sudo

SSHの証明書の発行

この状態では、パスワードでログインできる状態のためrootなどのユーザーでパスワードのランダムアタックされるリスクがあります。

なので、証明書を発行してログインをできるようにします。

Tera Termでの作業方法です。

図2:TeraTerm画面

まずは、上にある「設定」をクリックして、「SSH鍵生成」を選択します。

図3:鍵の作成方法

 そして、「鍵のパスフレーズ」を入力してから、「生成」を押します。

「公開鍵の保存」と「秘密鍵の保存」で、保存して、安全な場所に保管しておいてください。「パスフレーズ」も覚えておくか、保管しておいてください。次回以降のSSH接続時に使います。

鍵を無くすとログインできなくなります。

鍵の登録

上で作成した作業用ユーザーでSSHログインします。

そのまま、TeraTermの画面に「公開鍵」をドラッグ&ドロップでSCP送信してください。

.pubという拡張子の方が「公開鍵」です。

sudo mkdir .ssh
sudo mv [公開鍵のファイル名] .ssh/authorized_keys

SSHの設定

SSHの設定ファイルである、/etc/ssh/sshd_config を編集します。

(行頭に # がある場合はコメントアウトになっていて、無効化されています。)

sudo vim /etc/ssh/sshd_config

Port 22と書いているところを探して、ポート番号に変更します。22はデフォルトでSSHで使われているので、攻撃者に狙われやすいです。

Port 2222

そして、Port 2222に変更します。

PermitRootLogin no

次に、 root でのログインを禁止します。

PubkeyAuthentication yes

そして、公開鍵でのログインを有効にします。

PasswordAuthentication no

最後に、パスワードでのログインを禁止します。

sudo systemctl restart ssh

これらの設定の変更を読み込むため、SSHサービスを再起動させます。

SSHポートの開放

ポート番号を変更しましたが、そのポートを開けておかないとログインできません。

sudo ufw allow 2222 #もしくは sudo ufw allow 2222/tcp
sudo ufw reload

今回の場合は、2222番ポートです。

sudo ufw enable

そして、ファイアウォールを有効化します。

22番ポートを閉じる

2222番ポートでの接続が確認出来たら22番ポートを閉じましょう。

# UFW から 22 を閉じる
sudo ufw delete allow 22/tcp
sudo ufw reload
sudo ufw status numbered

作成したユーザーで接続

図4:ポート番号の指定

自分のサーバーのIPアドレスか、逆引きホスト名を入力して、TCPポートを2222にして、OKをクリックします。

図5:必要事項の入力

「ユーザー名」と「鍵」を作るときに設定した「パスフレーズ」を入力します。

「RSA/DSA/ECDSA/ED25519鍵」を使うを選択し、保存してある秘密鍵をフォルダーから選択して「OK」をクリックします。

Nginxのインストール

sudo apt update
sudo apt install nginx

パッケージのアップデートと、インストールを行います。

sudo ufw allow 'Nginx FULL'

そして、Nginxが使うポートを開放します。

User@vm-def3f7e9-d5:~$ sudo ufw status
状態: アクティブ

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
2222                       ALLOW       Anywhere
Nginx Full                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
2222 (v6)                  ALLOW       Anywhere (v6)
Nginx Full (v6)            ALLOW       Anywhere (v6)

このコマンドを入力して、Nginxがポートを使っているかを確認します。ここではNginxとSSHが動いていることが分かります。

sudo systemctl start nginx    # 起動
sudo systemctl enable nginx   # サーバ起動時の自動起動設定
sudo systemctl status nginx   # ステータス確認。

そして、起動の確認をします。

良く使うnginxコマンド

sudo nginx -t

設定ファイルの構文チェックをします。

sudo systemctl reload nginx

設定ファイルの反映をします。

Docker/Docker Composeのインストール

ステップ1:必要なパッケージのインストールと古いバージョンの削除

まず、aptがHTTPS経由でリポジトリを使えるように、必要なパッケージをインストールします。また、もし古いDockerがインストールされている場合は、ここでクリーンアップします。

# aptパッケージインデックスを更新し、必要なパッケージをインストール
sudo apt-get update
sudo apt-get install -y ca-certificates curl

# 古いバージョンのDockerがあれば削除(なくてもエラーにはなりません)
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove -y $pkg; done

ステップ2: Dockerの公式GPGキーを追加

Dockerリポジトリが信頼できるものであることをシステムに教えるため、公式のGPGキーを追加します。

# Dockerの公式GPGキーを保存するためのディレクトリを作成
sudo install -m 0755 -d /etc/apt/keyrings

# DockerのGPGキーをダウンロードして保存
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

# ファイルの権限を設定
sudo chmod a+r /etc/apt/keyrings/docker.asc

ステップ3: DockerのAPTリポジトリを設定

Dockerをダウンロードするためのリポジトリ情報をaptのソースリストに追加します。

# APTリポジトリを追加
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# aptパッケージインデックスを再度更新
sudo apt-get update

ステップ4: Docker EngineとComposeのインストール

いよいよDocker本体と、目的のDocker Composeをインストールします。

# 最新版のDocker Engine, CLI, containerd, そしてDocker Composeプラグインをインストール
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

インストール後の確認

1.Dockerが動作しているか確認

hello-world という簡単なコンテナを動かしてみます。Hello from Docker! というメッセージが表示されれば、Dockerは正しくインストールされています。

sudo docker run hello-world

2.Docker Composeが使えるか確認

最初の目的だったコマンドを再度実行します。

docker compose version

以下のようにバージョン情報が表示されるはずです。

# ここは実行用ではなく、出力です。
Docker Compose version v2.27.0

【推奨】毎回sudoを打たずにdockerコマンドを実行する方法

毎回dockerコマンドの前にsudoを付けるのは少し面倒です。現在のユーザーをdockerグループに追加することで、sudoなしで実行できるようになります。

# 1. dockerグループに現在のユーザーを追加
sudo usermod -aG docker $USER

# 2. 設定を反映させる
# このコマンドを実行するか、一度ログアウトして再度ログインしてください
newgrp docker

上記設定後、ターミナルを再起動(またはPCを再起動)すれば、sudoなしで docker psdocker compose version などのコマンドが実行できるようになります。

補足:$USERは自分のユーザー名に置き換えず、 $USERのままで大丈夫です。

ディレクトリの作成

まずは、nginxの設定用のフォルダーと、それぞれのアプリケーション用のフォルダーを作成していきます。

sudo mkdir -p /var/www/nginx_file
sudo mkdir -p /var/www/app1
sudo mkdir -p /var/www/app2

複数のサービスを運用する予定なので、nginx用の設定フォルダーと、2つのフォルダーを作成します。

「-p」は、–parents の略で、指定したディレクトリの親ディレクトリが存在しない場合に、それらもまとめて作成するためのオプションです。

sudo chown -R [ユーザー名]:[ユーザー名] /var/www/nginx_file/
sudo chown -R [ユーザー名]:[ユーザー名] /var/www/app1/
sudo chown -R [ユーザー名]:[ユーザー名] /var/www/app2/

フォルダーの編集権限を、自分で作成した作業用のユーザーにします。

[ユーザー名]は上で自分で作成した作業用のユーザーの名前にしてください。

Nginxのシンボリックリンクの作成

events {
}

http {
    server {
        // 80番ポートでリクエストを待ち受ける
        listen 80;

        // ドキュメントルート(Webコンテンツを置くディレクトリ)
        root /var/www/html;
    }
}

nginxファイルを簡単に作成しておきます。

Nginxのメインの設定ファイルは/etc/nginx/nginx.confです。
nginx.conf内で/etc/nginx/conf.d/フォルダから*.confファイルを読み取るようになっています。

sudo ln -s /var/www/nginx_file/main_nginx.conf /etc/nginx/conf.d/

確認のために、中身を見ておきます。

cat /etc/nginx/conf.d/main_nginx.conf

補足:SSL化をする

sudo certbot --nginx

このコマンドを実行することで、自分の環境に合わせて証明書をインストールして設定してくれます。

参考

Ubuntu22.04 LTS 初期設定!VPS最初にやるべき設定【Beginners】
VPS最初にやるべき設定。Ubuntu22.04 LTS の初期設定についてです。SSHをよ安全に設定しましょう。
VPS(ConoHa) セットアップメモ(Ubuntu 22.04) - Qiita
最近はWebARENA Indigoに浮気していたけど、ConoHaが50万人記念(おめでとうございます)でVPS割引きっぷ75% OFFで安かった(870円/月)ので3年契約したのでセットアップをメモ 事前準備 VPS割引きっぷの購入(せ...
Linuxサーバーの環境構築の自分用メモ(Ubuntu 22.04.1 LTS, ConoHa 1GB) - Qiita
環境 ConoHa でサーバーを立てる際の参考になれば Unbuntu 22.04.1 LTS ConoHa 1GBプラン ユーザーの作成 $ ssh root@NNN.NNN.NNN.NNN -i ~/.ssh/XXXXXXXX.pem ...
【Ubuntu】ConoHaのVPSを作成した時にはじめにやること
ConoHaのVPSでUbunutuサーバを作成したときにはじめにやったほうが良い事ConoHaのVPSでUbuntu Serverを作成した時に私が最初に行っている作業です。 一般ユーザの作成 SSHサーバ設定 (ポート番号変更・root...

コメント

タイトルとURLをコピーしました