VPSを始めるときに、戸惑うことが少しあったので、分かりやすくまとめていこうと思います。自分の環境はメモリ12GBのUbuntuですが、基本的にはどのOSでも同じなはずです。
webサービスを運用するための仕様にいているので、同じ用途に使う人には参考になると思います。
画面での設定

まずは左のバーにある、「サーバー」をクリックして、自分の設定したいサーバーを選択します。そして、ネットワーク情報の中にあるセキュリティグループの右側にある「ペンのアイコン」をクリックします。
そこで、「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での作業方法です。

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

そして、「鍵のパスフレーズ」を入力してから、「生成」を押します。
「公開鍵の保存」と「秘密鍵の保存」で、保存して、安全な場所に保管しておいてください。「パスフレーズ」も覚えておくか、保管しておいてください。次回以降の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
作成したユーザーで接続

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

「ユーザー名」と「鍵」を作るときに設定した「パスフレーズ」を入力します。
「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 ps や docker 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
このコマンドを実行することで、自分の環境に合わせて証明書をインストールして設定してくれます。
参考







コメント