【不沈要塞化】低スペックPC自作サーバー完結編!AWS S3で「3-2-1バックアップ」を実装する

PC

こんにちは、てつです!

「低スペックPCでも止まらない!」自作サーバー構築シリーズ。

前回の運用環境整備に続き、今回は「データの安全性」を究極まで高める、不沈要塞化の最終ステップに挑みます。

自宅サーバー(中古PC)運用で最も怖いのは、ハードウェアの物理的な故障や、SDカードの寿命によるデータ喪失です。

これを防ぐため、IT業界の標準である「AWS S3」をバックアップ先に採用し、プロの現場でも鉄則とされる「3-2-1バックアップルール」を個人環境で実現する方法を、ステップバイステップで徹底解説します。

バックアップの鉄則「3つのコピーを持ち、2つの異なるメディアに保存し、1つは遠隔地(クラウド)に置く」という考え方です。

関連記事

低スペックPCでも止まらない!32GB環境でWordPressを安定稼働させる4つの運用設計
中古PCやChromebookで作った低スペックな自宅サーバーを、放置しても安全に稼働し続ける「資産」に変えませんか?Uptime Kumaによる監視、Watchtowerでの更新検知、Cronによる全自動メンテナンスまで、セキュリティの現場視点で具体的な運用設計を詳しく解説します。

1.AWS側での準備(バケットと鍵の作成): AWSの管理画面(マネジメントコンソール)で、データを保存する「箱(S3バケット)」を作り、プログラムからアクセスするための「専用の鍵(IAMユーザーのアクセスキー)」を発行します。

2.AWS CLIの導入: サーバー(MX Linux)からAWSを直接操作するための公式ツールをインストールします。

3.認証設定: サーバーに取得した「鍵」を登録し、安全な通信経路を確立します。

4.スクリプトの拡張: 既存の maintenance.sh に、S3へデータを同期(Sync)するコマンドを1行追記します。

S3バケットの作成

バックアップファイルを物理的に保存する場所を確保します。

1.AWSコンソールで「S3」を検索して開きます。

2.「バケットを作成」をクリックします。

3.バケット名: 世界で唯一の名前を付けます(例:プロジェクト名-backup-2026)。

4.リージョン: 「アジアパシフィック (東京) ap-northeast-1」を選択します。

  • 1行解説: リージョンとはデータの保存場所のことで、自分の居住地に近い東京を選ぶのが一般的です。

5.以下の項目をチェックして「バケットを作成」をクリックして完了です。

  • パブリックアクセスのブロック: 常に「オン(チェック入り)」にしておくべきです。外すとバックアップデータが公開されるリスクがあります。
  • バケットバージョニング: 可能なら「有効にする」ことが推奨されています。
  • デフォルト暗号化: 「サーバー側の暗号化 (SSE-S3)」が選ばれていれば、そのままで大丈夫です。

IAMユーザーの作成

プログラム(スクリプト)がAWSにログインするための「専用アカウント」を作ります。

1.「IAM」を検索して開き、左メニューの「ユーザー」→「ユーザーを作成」をクリックします。

2.ユーザー名: s3-backup-user など、用途がわかる名前にします。

3.「次へ」進み、「許可を設定」画面へ。

  • 1行解説: ここで「誰が何をしていいか」というルール(ポリシー)を決めます。

権限(ポリシー)の付与

作成したユーザーに「S3を触る許可」を与えます。

1.「ポリシーを直接アタッチする」を選択します。

2.検索窓に「S3Full」と入力し、AmazonS3FullAccess にチェックを入れます。

  • 1行解説: このポリシーにより、ユーザーはS3バケットへの読み書きが許可されます。

3.「ユーザーを作成」をクリックします。

アクセスキーの発行

サーバーから接続する際に必要な「ID」と「パスワード」を取得します。

1.作成したユーザー(例: s3-backup-user) をクリックして詳細画面へ。

2.「セキュリティ認証情報」タブをクリックし、下へスクロールして「アクセスキーを作成」を押します。

3.ユースケースで「Command Line Interface (CLI)」を選択し、次へ。

4.作成後、「アクセスキー」「シークレットアクセスキー」が表示されます。

  • 1行解説: これは一度しか表示されません。CSVファイルをダウンロードし、厳重に管理してください。

ここからは、AWSの画面で「S3バケット」と「IAMアクセスキー」が用意できた前提で、サーバー側の作業を解説します。

AWS CLIのインストール

SSH接続したサーバーのターミナルで以下のコマンドを実行し、AWSの様々なサービスを、ブラウザからではなく黒い画面(ターミナル)から直接操作するための公式ツールを導入します

Bash
sudo apt update && sudo apt install -y awscli

認証情報(鍵)の登録

以下のコマンドを打つと、対話形式で4つの質問が順番に表示されます。

Bash
sudo aws configure

AWSにログインするための「アクセスキー」「シークレットキー」「メインで使う地域(例:東京なら ap-northeast-1)」「出力形式(json)」をサーバーに記憶させます。

maintenance.sh への追記

前回作ったスクリプト(maintenance.sh )を開き、一番最後の行に以下を追記します。

nano /mnt/sdcard/プロジェクト名/scripts/maintenance.sh
# --- AWS S3への同期セクション ---
# ローカルのバックアップフォルダとS3バケットの内容を完全に同期します
aws s3 sync $BACKUP_DIR s3://作成したバケット名/backups/ --delete

スクリプトの編集が終わったらCtrl+O,Enter,Ctrl+Xでエディタを終了しましょう。

最終確認とテスト実行

以下のコマンドをターミナルで実行してください。

sudo /mnt/sdcard/プロジェクト名/scripts/maintenance.sh

【注目すべきポイント】

  • 前半のDockerの停止・再起動・ローカルバックアップは前回通り進みます。
  • 一番最後に追加したAWSコマンドが走る際、画面に upload: ... というメッセージが流れていけば成功です。

エラーが発生した場合の切り分け(トラブルシューティング)

もし最後の同期処理でエラーが出た場合は、以下の2点を確認します。

  1. aws configure は root 権限で実行したか?
    • 先ほどスクリプトを sudo(root権限)で実行するように設定しました。そのため、AWSの「鍵(アクセスキー)」も root 用に登録しておく必要があります。
    • もし一般ユーザー(yoshihiro)のままで aws configure を行っていた場合、スクリプトが鍵を見つけられずエラーになります。
    • 対策: sudo aws configure を実行し、もう一度アクセスキーとシークレットキーを入力してください。
  2. バケット名やIAMの権限は正しいか?
    • 権限が足りない場合は Access Denied と表示されます。その際はAWS管理画面に戻り、IAMユーザーに AmazonS3FullAccess が付与されているか再確認します。

ここまで問題なく実行でき、バックアップファイルが確認出来たら完璧です!

お疲れ様でした!

これで、あなたのサーバーは「SDカード(作業用)」「PC本体ストレージ(一時保存)」「AWSクラウド(長期保管)」という3層の守りを手に入れました。

たとえ明日、中古PCが物理的に壊れたとしても、AWSにデータがある限り、数分でブログを元の状態に復元することが可能です。

守りの基盤が完璧に整った今、次はいよいよAIツール開発やコンテンツ作成といった「攻め」のフェーズへと進んでいきましょう!

コメント

タイトルとURLをコピーしました