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
続いて次の作業を行います。
- 作業用ユーザーを作って sudo 権限を与える(VPSでsudoユーザーを作成する方法)
- SSH を公開鍵認証にし、root ログインとパスワード認証を止める(SSH公開鍵認証の設定方法)
- ファイアウォールで必要なポートだけを開ける(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を丸ごと上書きせず、設定は見比べて必要な部分だけ移す
障害時の復旧手順をまとめておきたい場合は バックアップからサーバーを復元する手順 も参考にしてください。