これは何?
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
事前準備
- 設定を行いたいサーバーのIPとパスワードを入力してVPSパネルにログイン
- サイドバーの「パケットフィルター設定」から、SSH(22番ポート)を許可
初期設定
ローカルのターミナルから以下のコマンドを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