— Hermes Agentでさくさく移行準備が進んだ話
Raspberry Pi 4で動かしていた自宅サーバを、Ryzen 7搭載のミニPCに移行しました。この記事は、この移行作業を後世に残すためにしたためるものです。 ……大げさですね(^^;)
今回はその第2回、準備編です。 テーマは、移行計画の立案と、移行先サーバの初期セットアップまでです。
サーバの移行は、振り返ってみるとこれまでに何度も実施しています。 このブログにも2004年くらいからの記事があり、サーバ移行の記事も何本かありました。
ざっくり振り返ると、こんな感じです。
- 2004年以前: 確か当時利用していたプロバイダーのホームページサービスでブログを公開しはじめた。
- 2004年: Webサーバを自宅のFreeBSDの自作PCに引っ越し、HTML手書きのブロク構築から、CMSを導入。 当時はMovable Typeを利用。
- 2005年: サーバをFreeBSD自作PCから、Mac Mini に移行。 合わせてCMSをMovable TypeからWordPressに移行。
- 2014年: 仮想化統合、Mac Mini環境をP2Vして、iMacでVMware FusionでVM運用に。
- 2022年: MacOS仮想マシンからラズパイにサーバを移行。
という感じで、OS、ハードウェアのアーキテクチャ、運用ツールなどの変更も何度か実施しています。
そのままデータコピーだけで終わる移行は、あまりありませんでした。 たいてい、OSやサービス設定の記憶が薄れた頃にサーバ移行へ着手するので、手作業で設定のトライ&エラーを繰り返す作業が多かった記憶があります。
今回は、事前の検討や不具合調査で、Hermes Agentがサーバの中を調べてくれることが分かっていました。 そこで、全面的にHermes Agentを利用することにしました。
まずは旧環境を調査させて、移行プランを検討させました。
このタイミングで、移行先のミニPCにはOSのインストールまで済ませてありました。 そこでHermes Agentに新環境へのアクセス権も与えて、移行すべき設定やデータは何か、設定はコピーでよいのか再設定すべきなのか、作業の順番はどうするのかを、新旧環境を比較しながら提案してもらいました。
移行すべきデータやサービスは、WordPress、DB、Mail、DNS、Mailman、蔵ログ、SwitchBot、OpenClawなどです。
ラズパイの標準リポジトリから入れたサービス関連だけでなく、自作アプリや、外部から引いてきているツールもあります。 自分で構築時のことを思い出しながらやるとなると、かなり時間がかかりそうだと覚悟していました。
ところが、Hermes Agentさんは数分で状況調査を行い、作業計画を提案してくれました。





提案された移行プランでは、面倒になりそうだと思っていたサービスソフトのバージョン差、CPUアーキテクチャの違い、自作アプリの扱いなどの考慮ポイントが、きちんと洗い出されていました。
さらに、どう扱おうか少し迷っていたサーバ証明書についても、きちんとキャッチアップされていました。 これはかなり優秀だと感じました。
プランは妥当だと判断したので、移行作業の進捗管理ファイルを作ってもらいました。 今後の作業や、はまった点はそこに記録するようHermes Agentに指示して、計画の最初のステップに進みました。
移行作業のおおまかな進め方は、こんな感じです。
Hermes Agentは新旧サーバにアクセスできます。 そこで、移行用の作業スクリプトをステップごとに作成し、旧環境または新環境へ配置してもらいます。 それを私が確認しながら実行し、都度結果を確認しながら次のステップへ進める、という流れです。
何かにつまずくと、そこでエラー分析をして、作業計画を見直し、実行スクリプトをアップデートして再開します。 この繰り返しでした。
自分でやるときと手順そのものは同じです。 ただ、つまずいたときの調査スピードと、リカバリ策の提案スピードが段違いに上がりました。
朝、玄関前に置き配されていたミニPCを回収し、出社前にUbuntuのインストールと作業計画の策定を進めました。
会社から戻ってからは、新環境の基盤整備とパッケージ導入を実施しました。
このあたりがPhase 0とPhase 1です。
Phase 0では、タイムゾーンのJST化、root LVの拡張、Tailscaleの導入などを行いました。 移行先のミニPCは、root LVが初期状態では100GB程度しか割り当てられていなかったので、ここで約466GBまで拡張しています。
Phase 1では、旧サーバで動いていたサービスを再構築できるように、必要なパッケージを導入しました。
主なものは以下です。
- Apache
- PHP
- MariaDB
- BIND
- Postfix
- Dovecot
- OpenDKIM
- SpamAssassin
- ClamAV
- Certbot
- Fail2ban
- Python venv / pip
- Node.js / npm
Ubuntu 26.04ではパッケージ名が少し変わっているものもあり、たとえばBIND関連では bind9utils / dnsutils ではなく、bind9-utils / bind9-dnsutils を使う必要がありました。 こういう細かい差分も、Hermes Agentに確認させながら進めました。
ここまでが、Day 2の話です。
次は、いよいよ旧サーバからデータをバックアップし、新環境でサービスを動かしていきます。 第3回、実行編に続きます。