【2026年版】VPS契約後、最初にやるべき初期設定チェックリスト全項目(Ubuntu編)
最初に結論を書いておきます
正直に言うと、10項目のうち「絶対やれ」は5つだけです。
- パッケージ更新
- 一般ユーザー作成
- SSH鍵認証(パスワード認証を無効化)
- UFWファイアウォール
- タイムゾーン設定
この5つをやれば、最悪の事態(サーバー乗っ取り、時刻がおかしくてログが読めない)はほぼ防げます。残りは「やっといた方がいい」レベルなので、後回しにしてもOK。
swap(8番)だけは例外で、RAM 2GB以下のプランでClaude Codeや重めのツールを動かすなら実質必須です。RAMが足りなくてプロセスが落ちる、というのを経験してから設定する人が多いですが、最初からやっておいた方が絶対ラクです。
VPSを契約してrootでログインした瞬間、サーバーはほぼ素の状態です。セキュリティ設定なし、タイムゾーン未設定、swapなし――このまま使い始めると後々トラブルの原因になります。
この記事はVPS契約直後にやるべき初期設定を全項目コピペ可能なコマンドつきでまとめたチェックリストです。Ubuntu 22.04/24.04を対象としています。
初期設定チェックリスト全項目
| # | 設定項目 | 重要度 | 所要時間 |
|---|---|---|---|
| 1 | システムパッケージの更新 | 必須 | 2〜5分 |
| 2 | 一般ユーザーの作成とsudo権限付与 | 必須 | 1分 |
| 3 | SSH鍵認証の設定・パスワード認証無効化 | 必須 | 5分 |
| 4 | SSHポートの変更 | 推奨 | 1分 |
| 5 | UFWファイアウォールの設定 | 必須 | 2分 |
| 6 | タイムゾーンの設定 | 必須 | 1分 |
| 7 | ロケール・文字コードの設定 | 推奨 | 1分 |
| 8 | swapファイルの作成 | 推奨 | 2分 |
| 9 | fail2banのインストール | 推奨 | 2分 |
| 10 | 自動セキュリティアップデートの設定 | 推奨 | 1分 |
自分の場合、契約直後にまず1→2→3→5→6を一気にやります。所要時間は合計15分くらい。それ以外は用途が決まってから追加する、というやり方でずっとやってます。
1. システムパッケージの更新
まず最初にパッケージを最新化します。これをやらずに次に進む人がいますが、後でハマる原因になるのでここだけは絶対に先にやってください。
# パッケージリスト更新+全パッケージアップグレード
sudo apt update && sudo apt upgrade -y
# 不要パッケージの削除
sudo apt autoremove -y
sudo apt autoclean
時間がかかるのでコマンド打ったら少し待ちます。2〜5分で終わります。
2. 一般ユーザーの作成とsudo権限付与
rootで作業し続けるのは危険です。専用ユーザーを作成しましょう。
はっきり書いておきます。rootのまま全部やる人、たまにいますが本当にやめた方がいい。 コマンドミスでシステムをぶっ壊したとき、一般ユーザーなら「sudo: command not found」で止まりますが、rootは容赦なく実行します。
# ユーザー作成(aiuserは任意の名前に変更)
sudo adduser aiuser
# sudoグループに追加(sudo権限を付与)
sudo usermod -aG sudo aiuser
# ユーザー切り替えて確認
su - aiuser
sudo whoami # "root"と表示されればOK
3. SSH鍵認証の設定・パスワード認証無効化
ここが一番大事です。パスワード認証を残したまま放置すると、ボットが24時間ひたすらパスワードを総当たりで試し続けます。自分も最初に設定を忘れたサーバーでアクセスログを見たら数千件の失敗ログが残ってました。気持ちわるいです。
# 新ユーザーの.sshディレクトリを作成
sudo mkdir -p /home/aiuser/.ssh
sudo chmod 700 /home/aiuser/.ssh
sudo chown aiuser:aiuser /home/aiuser/.ssh
# ローカルPCで生成した公開鍵をVPSに転送(ローカルPCで実行)
ssh-copy-id -i ~/.ssh/id_rsa.pub aiuser@YOUR_SERVER_IP
# 鍵認証でログインできることを確認してからパスワード認証を無効化
sudo nano /etc/ssh/sshd_config
sshd_configで変更する設定:
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin prohibit-password
AuthorizedKeysFile .ssh/authorized_keys
# SSHサービスを再起動
sudo systemctl restart sshd
重要:鍵認証でログインできることを確認してからパスワード認証を無効化してください。 順番を間違えると締め出されます。新しいターミナルを別タブで開いて鍵認証ログインを試してから、元のタブでパスワード認証を無効化する、という手順でやると安全です。
4. SSHポートの変更
デフォルトの22番ポートは攻撃対象になりやすいです。別のポートに変更します。
正直、これは「やっておくとログがスッキリする」程度の効果です。鍵認証さえ設定してあれば22番のままでも致命的ではないですが、fail2banのBANログが静かになるのでやっておくと精神衛生上ラクです。
sudo nano /etc/ssh/sshd_config
# 以下を変更(49152〜65535の範囲が推奨)
Port 52222
# 再起動前にファイアウォールで新ポートを開放する(次のステップ参照)
5. UFWファイアウォールの設定
# UFWインストール(未導入の場合)
sudo apt install ufw -y
# デフォルトポリシー設定
sudo ufw default deny incoming
sudo ufw default allow outgoing
# SSHポートを許可(変更した場合は番号を合わせる)
sudo ufw allow 52222/tcp
# HTTPSを使う場合
sudo ufw allow 443/tcp
sudo ufw allow 80/tcp
# UFWを有効化
sudo ufw enable
# 設定確認
sudo ufw status verbose
UFWを有効化する前にSSHポートを開放したか必ず確認してください。 開放せずに有効化するとSSH接続が切れて詰みます。VPSのコントロールパネルからコンソールで繋ぎ直せばリカバリできますが、面倒なので先に確認する癖をつけておきましょう。
6. タイムゾーンの設定
日本時間(JST)に設定します。ログの時刻がJSTになり、管理が楽になります。
これをやっておかないとログの時刻がUTCになって「あのエラーいつ出た?」というときに毎回9時間引き算することになります。地味にストレスなので最初にやっておくことを強くすすめます。
# タイムゾーン設定
sudo timedatectl set-timezone Asia/Tokyo
# 確認
timedatectl
# "Time zone: Asia/Tokyo (JST, +0900)" と表示されればOK
date # 現在時刻の確認
7. ロケール・文字コードの設定
日本語ファイル名や日本語ログを扱う場合に設定します。
日本語のファイルやテキストを扱わないなら後回しでもOKです。 Claude Codeを動かすだけなら特に困らないです。日本語テキストを処理するスクリプトを書くようになったらその時設定すればいい。
# 現在のロケール確認
locale
# UTF-8ロケールの生成
sudo locale-gen ja_JP.UTF-8
sudo update-locale LANG=ja_JP.UTF-8
# 再ログイン後に確認
locale
8. swapファイルの作成
RAMが少ないプランでAIツールを動かす場合、swapが必須になります。
自分の場合、これをやっておかないとClaude Codeのセッション中にメモリ不足でプロセスが落ちることがありました。 2GBプランなら絶対設定しておいてください。4GBプランでも設定しておいて損はないです。swap作成コストはゼロなので。
# 2GBのswapファイルを作成(RAMの1〜2倍が目安)
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 起動時に自動マウント
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# swappiness値の調整(SSDの場合は10が推奨)
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
# 確認
sudo swapon --show
free -h
swappiness=10は「なるべくRAMを使い切ってからswapを使う」という設定です。デフォルトの60のままだと頻繁にswapにアクセスしてパフォーマンスが落ちるので、SSDのVPSなら10にしておくのが無難です。
9. fail2banのインストール
SSH総当たり攻撃を自動ブロックします。
4番でSSHポートを変更していれば攻撃自体が減りますが、fail2banをいれておくとさらに安心です。「設定したら特に何もしなくていい」系のツールなので、入れるコストに対してリターンが大きい。
# インストール
sudo apt install fail2ban -y
# 設定ファイルのコピー(オリジナルは変更しない)
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# SSH設定を追加
sudo nano /etc/fail2ban/jail.local
jail.localに追加・変更する設定:
[sshd]
enabled = true
port = 52222
maxretry = 5
bantime = 3600
findtime = 600
# 起動・自動起動設定
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# バン状況確認
sudo fail2ban-client status sshd
10. 自動セキュリティアップデートの設定
# unattended-upgradesインストール
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades
# → 「Yes」を選択
# 設定確認
cat /etc/apt/apt.conf.d/20auto-upgrades
正直、これは「設定しておくと後で忘れても安心」という保険です。セキュリティパッチが自動で当たるので、VPSを設定して放置しがちな人ほどやっておく価値があります。自分みたいに「しばらく触ってなかったな」となる人は特に。
設定完了後の確認コマンド一覧
全部やったら最後にまとめて確認しておきましょう。「設定したつもりが反映されてなかった」というのが一番もったいないです。
# 全設定の状態を一括確認
echo "=== OS情報 ===" && lsb_release -a
echo "=== タイムゾーン ===" && timedatectl | grep "Time zone"
echo "=== ユーザー一覧 ===" && getent passwd | grep -v nologin | grep -v false
echo "=== UFW状態 ===" && sudo ufw status
echo "=== swap状態 ===" && swapon --show
echo "=== fail2ban状態 ===" && sudo fail2ban-client status
echo "=== 自動更新 ===" && cat /etc/apt/apt.conf.d/20auto-upgrades
まとめ:あなたの使い方で選ぶ
| 使い方 | 絶対やる | やっておくと安心 | 後回しでOK |
|---|---|---|---|
| Claude Code目的(RAM 2GB) | 1・2・3・5・6・8(swap必須) | 4・9・10 | 7 |
| Claude Code目的(RAM 4GB以上) | 1・2・3・5・6 | 4・8・9・10 | 7 |
| Webサーバー・公開サービス運用 | 1・2・3・4・5・6・9・10 | 7・8 | ― |
| とりあえず試したいだけ | 1・2・3・5・6 | ― | 4・7・8・9・10 |
実際のところ、「完璧にやろう」と思って手が止まるのが一番もったいないです。 必須5項目だけ先にやってしまえば、残りはその後いつでも追加できます。
この10項目を(優先順位に従って)完了すれば、AIツール導入などの本来の作業に安心して進めます。
合わなかったらやめればいい。それだけの話だ。設定を後から追加することへの心理的ハードルは、最初に思ってるより全然低いです。
