0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

XServer VPSの初期設定

Posted at

これは何?

Xserver VPSを設定する際に、毎回同じようなコマンドを打つのが面倒&コマンドを毎回忘れるのでChatGPTに突っ込んでシェルスクリプトを作成してもらいました。

何ができるの?

この手順を踏むと、まっさらな状態のVPSから

  • root権限を持ったroot以外のユーザーを追加
  • 鍵認証を使用したSSH接続
    (ポート番号は任意のものに変更&rootでのログイン不可&パスワード認証によるログイン不可)
  • 実行した時点で最新バージョンのGitをインストール
  • 実行した時点で最新バージョンのDockerとdocker composeをインストール
    を簡単に行えます。

.shファイル

#!/bin/bash
VPS_IP=$(curl -s ifconfig.me)

echo "===== Xserver VPS初期セットアップスクリプト v1.0 (Created by ucchy4646 on 2025/06/18) ====="

echo "-------------------------------------------"
echo "事前にローカル上でSSHキーを作成してサーバー上にアップロードしてください。"
echo "ローカルで以下のコマンドを打つと鍵の生成とサーバーへのアップロードができます。"
echo "cd ~/.ssh/ && ssh-keygen -t rsa -b 4096 -C '(任意の文字列を入力)'"
echo "chmod 600 id_rsa"
echo "scp ~/.ssh/id_rsa.pub root@$VPS_IP:/root/my_key.pub"
echo "-------------------------------------------"

# ローカルで鍵を作成済みか確認
read -p "ローカルで鍵を作成済みですか? (y/n): " CONFIRM
if [[ "$CONFIRM" != "y" ]]; then
    echo "❌ 中止しました。ローカルで鍵を作成してから再度実行してください。"
    exit 1
fi

# === ユーザー入力 ===
read -p "👉 新規作成する管理ユーザー名を入力してください: " NEW_USER
read -p "👉 使用したいSSHポート番号(49152〜65535)を入力してください: " SSH_PORT
read -p "👉 サーバーに配置した公開鍵ファイルのパスを入力してください(例: /root/my_key.pub): " PUB_KEY_PATH

# 入力の確認
echo ""
echo "📝 入力された内容:"
echo " - 新規ユーザー: $NEW_USER"
echo " - SSHポート: $SSH_PORT"
echo " - 公開鍵ファイル: $PUB_KEY_PATH"
echo ""
read -p "上記の内容で進めますか? (y/n): " CONFIRM
if [[ "$CONFIRM" != "y" ]]; then
    echo "❌ 中止しました。"
    exit 1
fi

# === 1. 初回パッケージ更新 ===
echo "🔧 初回パッケージを更新中..."
apt update && apt upgrade -y && apt full-upgrade -y && apt autoremove -y && apt autoclean -y

# === 2. ユーザー作成 ===
echo "👤 新規ユーザー($NEW_USER)を作成中..."
adduser --gecos "" $NEW_USER
usermod -aG sudo $NEW_USER

# === 3. 公開鍵認証設定 ===
echo "🔐 SSH公開鍵認証を設定中..."
mkdir -p /home/$NEW_USER/.ssh
if [ -f "$PUB_KEY_PATH" ]; then
    cat "$PUB_KEY_PATH" > /home/$NEW_USER/.ssh/authorized_keys
else
    echo "⚠️ 公開鍵ファイルが見つかりません: $PUB_KEY_PATH"
    exit 1
fi
chmod 700 /home/$NEW_USER/.ssh
chmod 600 /home/$NEW_USER/.ssh/authorized_keys
chown -R $NEW_USER:$NEW_USER /home/$NEW_USER/.ssh

# === 4. SSH設定の変更 ===
echo "🔒 SSH設定を変更中..."
sshd_config="/etc/ssh/sshd_config"
cp $sshd_config ${sshd_config}.bak.$(date +%s)
sed -i -e "s/^#\?Port .*/Port $SSH_PORT/" \
       -e "s/^#\?PermitRootLogin .*/PermitRootLogin no/" \
       -e "s/^#\?PasswordAuthentication .*/PasswordAuthentication no/" \
       -e "s/^#\?PubkeyAuthentication .*/PubkeyAuthentication yes/" \
       $sshd_config

# === 5. SSH再起動 ===
echo "🚀 SSHサービスを再起動中..."
systemctl restart sshd

# === 6. DockerとDocker Composeのインストール ===
echo "🐳 DockerとDocker Composeをインストール中..."
apt install -y ca-certificates curl gnupg lsb-release

install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
    gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) \
  signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  tee /etc/apt/sources.list.d/docker.list > /dev/null

apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

usermod -aG docker $NEW_USER

# === 7. Gitのインストール ===
echo "📦 Gitをインストール中..."
add-apt-repository ppa:git-core/ppa -y
apt update && apt install -y git

# === 8. ソースコード配置用のディレクトリを作成 ===
mkdir -p /var/www/ && sudo chown -R $NEW_USER:$NEW_USER /var/www/

# === 9. 最終パッケージ更新 ===
echo "🔧 最終パッケージを更新中..."
apt update && apt upgrade -y && apt full-upgrade -y && apt autoremove -y && apt autoclean -y

# === 完了メッセージ ===
echo ""
echo "🎉 VPSセットアップ完了!次の点に注意してください:"
echo "-------------------------------------------"
echo "✅ SSHポート: $SSH_PORT に変更されました。"
echo "   接続例: ssh -p $SSH_PORT $NEW_USER@$VPS_IP"
echo "✅ ufwファイアウォールが有効です($SSH_PORT/tcp を許可)"
echo "✅ $NEW_USER は sudo, docker, git が使用可能です"
echo "このメッセージが表示されてからサーバーを再起動するので、少し時間をおいて接続を試してください"
echo "-------------------------------------------"

reboot

事前準備

  1. 設定を行いたいサーバーのIPとパスワードを入力してVPSパネルにログイン
  2. サイドバーの「パケットフィルター設定」から、SSH(22番ポート)を許可

image1.png

初期設定

ローカルのターミナルから以下のコマンドを1行ずつ実行(画面の指示通りに進めれば問題なく設定が完了します)
vim /setup/setup-vps.shを打ったらshファイルの中身を丸々コピペして保存してください。

ssh root@(サーバーのIPアドレス)
mkdir /setup
vim /setup/setup-vps.sh
chmod +x /setup/setup-vps.sh
sudo /setup/setup-vps.sh

事後処理

  • SSH接続のために設定したポート番号を、VPSの「パケットフィルター設定」から追加してください。
    ついでに、22番ポートの設定は不要なのでこちらは削除してください。
    image2.png
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?