2026年7月30日

2026年7月30日

VPSのOSを再インストールする手順|バックアップから復元・初期設定までの流れ

VPS の OS がうまく動かなくなったときや、OS を新しい版に入れ替えたいとき、VPS 事業者のコントロールパネルにある「OS 再インストール」の機能でサーバーを初期状態に戻せます。再インストールするとディスクの中身は消えるため、作業の大半は事前の退避と、作業後の復元です。

この記事では、Ubuntu で WordPress などの Web サイトを動かしている VPS を例に、再インストールの前後の手順を説明します(2026年10月時点)。

再インストールはコントロールパネルから行う

OS の再インストールは、サーバーの中でコマンドを実行して行うものではありません。稼働中の OS の上で /etc を消したりカーネルを置き換えたりすると、起動できなくなるだけです。

各事業者のコントロールパネル(ConoHa VPS、さくらの VPS、Xserver VPS など)に、OS を選び直してディスクを初期化する機能があります。名称や選べる OS、IP アドレスが変わるかどうか、root パスワードや SSH 鍵の設定方法は事業者ごとに異なるため、事業者のマニュアルで確認してから進めてください。

再インストールが向いている場面

  • 設定を重ねて壊れてしまい、どこを直せばよいか分からない
  • 不正アクセスを受けた疑いがある(改ざんされた OS を使い続けない)
  • サポートが終わった OS を、新しい OS に入れ替えたい

不正アクセスが疑われる場合は、退避したファイルにも不正なコードが含まれている可能性があります。プログラムは公式の配布元から入れ直し、退避したデータは中身を確認してから戻してください。

1. 今の構成を書き出す

再インストール後に同じ環境を作れるよう、まず今の状態を記録します。

# OS の版
cat /etc/os-release

# 手動でインストールしたパッケージの一覧(Ubuntu / Debian)
apt-mark showmanual > ~/manual-packages.txt

# 動いているサービス
systemctl list-units --type=service --state=running > ~/services.txt

# 定期実行の設定
crontab -l > ~/crontab-$(whoami).txt 2>/dev/null
sudo crontab -l > ~/crontab-root.txt 2>/dev/null
ls /etc/cron.d/

# 待ち受けているポート
sudo ss -tlnp > ~/listening-ports.txt

ファイアウォールの設定(sudo ufw status numbered の結果)、ユーザーの一覧、DNS の設定(どのドメインがこのサーバーを向いているか)もメモしておきます。

2. データを退避する

退避するものの例です。

対象 場所の例
Web サイトのファイル /var/www/
データベース MySQL / MariaDB のダンプ
Web サーバー・PHP の設定 /etc/nginx/、/etc/apache2/、/etc/php/
SSL 証明書 /etc/letsencrypt/
ユーザーのファイル・SSH 公開鍵 /home/、各ユーザーの ~/.ssh/authorized_keys
手順1で作った一覧 ~/manual-packages.txt など
# データベースをダンプする(InnoDB ならロックを最小限にして取得できる)
sudo mysqldump --single-transaction --routines --triggers --databases wordpress > ~/wordpress.sql

# ファイルと設定をまとめる
BK=/var/tmp/vps-backup-$(date +%Y%m%d).tar.gz
sudo tar -czpf "$BK" /var/www /etc/nginx /etc/php /etc/letsencrypt /home
sudo chown "$(whoami):" "$BK"
ls -lh "$BK"

ダンプと手順1の一覧はホームディレクトリ(/home/ユーザー名/)に置いたので、/home と一緒にまとめられます。

wordpress はデータベース名です。Apache を使っている場合は /etc/nginx を /etc/apache2 に置き換えます。WP-CLI を使っている場合は、wp db export でもダンプを作れます。

サーバーの外に移す

再インストールするとサーバーのディスクは消えるため、バックアップはサーバーの外に置きます。手元のパソコンから rsync か scp で取得します。

# 手元のパソコンで実行
rsync -avP user@203.0.113.10:/var/tmp/vps-backup-*.tar.gz ./

取得したら、壊れていないか確認します。

tar -tzf vps-backup-20261030.tar.gz > /dev/null && echo OK

事業者がスナップショットやイメージ保存の機能を提供している場合は、再インストールの直前に取っておくと、問題があったときに元の状態へ戻せます。

3. コントロールパネルで再インストールする

事業者の画面で OS とその版を選び、再インストールを実行します。2026年10月時点で新しく入れるなら、サポート期間の長い Ubuntu 24.04 LTS、Debian 13、AlmaLinux / Rocky Linux 9・10 などが候補です。可能であれば、パスワードではなく SSH 公開鍵を登録する方法を選びます。

4. 再インストール後に接続する

再インストールすると、サーバーの SSH ホスト鍵が新しくなります。以前接続したことのあるパソコンからは、次のような警告が出て接続できません。

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

自分で再インストールした直後であれば、手元の記録から古い鍵を削除して接続し直します。

ssh-keygen -R 203.0.113.10
ssh root@203.0.113.10

詳しくは SSHのknown_hostsエラーを解消する方法 を参照してください。再インストールした覚えがないのにこの警告が出た場合は、接続先が別のサーバーに入れ替わっている可能性があるため、削除せずに原因を確かめてください。

5. 初期設定をする

データを戻す前に、まずサーバーを安全な状態にします。

# パッケージを最新にする
sudo apt update && sudo apt upgrade -y

続いて次の作業を行います。

  1. 作業用ユーザーを作って sudo 権限を与える(VPSでsudoユーザーを作成する方法)
  2. SSH を公開鍵認証にし、root ログインとパスワード認証を止める(SSH公開鍵認証の設定方法)
  3. ファイアウォールで必要なポートだけを開ける(VPSでufwを使ったファイアウォールの基本設定)

6. ソフトウェアを入れ直し、データを戻す

手順1の一覧を見ながら、必要なソフトウェアを入れます。Web サイトの例です。

データベースは、以前と同じ製品(MySQL か MariaDB)を入れると、ダンプをそのまま読み込みやすくなります(MySQL 8.0 以降のダンプは、MariaDB では照合順序の違いでエラーになることがあります)。

sudo apt install -y nginx mariadb-server php-fpm php-mysql php-xml php-mbstring php-curl php-gd php-zip php-intl

バックアップを新しいサーバーに送り、作業用のディレクトリに展開します。

# 手元のパソコンで実行
rsync -avP vps-backup-20261030.tar.gz user@203.0.113.10:~/

# サーバーで実行(/ に直接展開しない)
mkdir -p ~/restore
sudo tar -xzpf ~/vps-backup-20261030.tar.gz -C ~/restore

バックアップの /etc をそのまま / に上書きしないでください。OS やパッケージの版が変わると設定ファイルの内容も変わるため、古い設定で上書きするとサービスが起動しなくなることがあります。設定は、新しいファイルと見比べながら必要な部分だけを移します。

# 例: Web サイトのファイル
sudo rsync -a ~/restore/var/www/ /var/www/

# 例: Nginx のサイト設定(中身を確認してから)
sudo cp ~/restore/etc/nginx/sites-available/example.conf /etc/nginx/sites-available/
sudo ln -s /etc/nginx/sites-available/example.conf /etc/nginx/sites-enabled/
sudo nginx -t

データベースは、データベースとユーザーを作ってからダンプを読み込みます。

sudo mysql -e "CREATE USER 'wpuser'@'localhost' IDENTIFIED BY '強いパスワード';"
sudo mysql < ~/restore/home/ユーザー名/wordpress.sql   # ダンプ内の CREATE DATABASE でデータベースが作られる
sudo mysql -e "GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';"

ダンプは --databases を付けて作ったので、読み込むとデータベースも作られます。ユーザー名 は、ダンプを作ったときのユーザー名に置き換えてください。WordPress の場合は、wp-config.php のデータベース名・ユーザー・パスワードが新しい設定と合っているか確認します。データベースの復元については MySQLのバックアップから復元する方法 も参考にしてください。

SSL 証明書は、/etc/letsencrypt/ を戻す方法もありますが、新しいサーバーで certbot を入れて取り直すと、自動更新の設定(systemd タイマー)も新しい環境に合わせて作られます。

7. 動作を確認する

# サービスの状態
systemctl status nginx mariadb 'php*-fpm' --no-pager

# エラーログ
sudo tail -n 50 /var/log/nginx/error.log

ブラウザーでサイトを開き、ログインや問い合わせフォームなどの主要な機能を確認します。定期実行(cron)の設定も、手順1の記録を見て入れ直します。すべて確認できたら、手元のバックアップは一定期間保管してから削除します。

まとめ

  • OS の再インストールは、サーバー内のコマンドではなく事業者のコントロールパネルで行う
  • 構成を書き出し、ファイル・データベース・設定・証明書をサーバーの外に退避してから実行する
  • 再インストール後はホスト鍵が変わるので、ssh-keygen -R で古い記録を消して接続する
  • 初期設定(更新・ユーザー・SSH・ファイアウォール)を先に済ませ、それからデータを戻す
  • 古い /etc を丸ごと上書きせず、設定は見比べて必要な部分だけ移す

障害時の復旧手順をまとめておきたい場合は バックアップからサーバーを復元する手順 も参考にしてください。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲