AIと一緒にメールサーバー移転作業

15年ほど使ってきたメールサーバーを、そろそろ新しい環境へ引っ越そうとしています。

きっかけは、長年使ってきたCentOSのサポートが終了したこと。最近は、大事なメールが相手の迷惑メールフォルダに入ってしまうことも増えてきました。

「これは、そろそろ何とかしないといけないな」と思ったものの、システムを更新しようとしても、リポジトリが消えていてうまく進みません。

そこで、Amazon EC2に新しいメールサーバーを作って、古い環境から引っ越す計画を立てることにしました。

まずはAIに相談してみる

新しいOSには、これまで使ってきたCentOSではなく、Ubuntuを選ぶことにしました。Ubuntuでのサーバー運用は初めてです。

そこで、最近使い始めたAIに、今のサーバーがどんな状態なのかを説明して、移行手順を作ってもらいました。

まずはEC2に仮のインスタンスを作り、その手順に沿って作業開始です。

ところが、いくつかコマンドを実行したところで、いきなりエラーが出ました。

エラーの内容をAIに伝えると、「原因はこれかもしれません」と教えてくれます。言われた方法を試してみると、今度は別のエラーが出る。さらに相談して、また試す……。

そんな感じで、少しずつ作業を進めていきました。

AIに聞けば何でも解決、というわけではない

AIに相談しながら作業をしていると、経験豊富な技術者が隣にいてくれるような感じがします。エラーメッセージを貼り付ければ、原因や確認方法をすぐに返してくれるので、とても助かります。

ただ、AIの答えがいつも正しいとは限りません。

今のサーバーにしかない特殊な設定や、長年の運用で残っている例外的な構成までは、AIも最初から全部わかるわけではありません。UbuntuとCentOSの違いが、手順に十分反映されていないこともあります。

目の前のエラーは解決できても、「このまま本番の移行まで進めて大丈夫かな?」という不安が、だんだん大きくなってきました。

いったんストップして考え直す

そこで、作業をいったん止めることにしました。

最初は、AIに移行手順を作ってもらい、その通りに本番作業を進めればよいと思っていました。でも、実際にやってみると、最初に作った手順書は完成品ではなく、検証を始めるためのたたき台だったようです。

このまま勢いで進めるより、一度計画を見直した方が安全そうです。

本番ではなく、まずは予行演習

そこで、進め方を変えることにしました。

  1. AIに現在の環境をできるだけ詳しく理解してもらう
  2. 本番とは別の仮環境を用意する
  3. AIに移行作業を予行演習してもらう
  4. エラーや足りない手順を洗い出す
  5. 試行錯誤した結果を、手順書にまとめる
  6. できあがった手順書を自分で確認する
  7. 問題がなければ、本番環境で移行する

※これらは私が大手通信会社にてインフラ担当していた頃、複数人のメンバーでクロスチェックしながら本番環境構築前にやっていた手順に基づく手順である。

要するに、AIにいきなり本番作業をしてもらうのではなく、まずは安全な場所で練習してもらう、という作戦です。

仮環境なら、途中で失敗してもやり直せます。どこでつまずいたのか、どうやって解決したのかも記録しておけば、本番作業のときに役立ちます。

今夜は二回目の予行演習

今夜は、これから二回目の予行演習を行います。

一回目で見つかった問題を整理して、手順や前提条件を見直し、もう一度最初から確認していきます。

ただコマンドを最後まで実行できればよい、というわけではありません。

  • 作業前に何を確認しておく必要があるか
  • どこでエラーが起きやすいか
  • エラーが出たら、何を確認すればよいか
  • どんなバックアップを取っておくべきか
  • 作業後にメールの送受信をどう確認するか
  • 迷惑メール対策がきちんと機能しているか

こうしたことを一つずつ確認して、「これなら迷わず作業できそう」と思える手順書にしたいと思っています。

AIと一緒に作業するときに気をつけたいこと

今回の作業を通して、AIを使ってサーバー作業をするときに大事だと思ったことを、いくつかまとめてみます。

いきなり本番で試さない

AIの提案が正しそうに見えても、実際の環境では思わぬ問題が起きます。

特にメールサーバーは、設定を一つ間違えるだけでメールが届かなくなったり、送れなくなったりします。できるだけ本番とは別の検証環境で試した方が安心です。

目の前のエラーだけを直さない

エラーが出ると、ついそのエラーだけを解決したくなります。

でも、そもそもの手順や前提条件に問題があるのかもしれません。エラーをきっかけに、作業全体を見直すことも大事だと感じました。

AIの提案をそのまま実行しない

AIが教えてくれたコマンドは、何を変更するものなのかを確認してから実行するようにしています。

失敗したときに元へ戻せるのか、既存のメールや設定に影響しないのか。そこを自分で理解して、納得してから進めることが大切です。

失敗も記録しておく

試行錯誤やエラーは、できればなかったことにしたくなります。

でも、どこで失敗したのか、どうやって解決したのかを残しておけば、それは本番作業のときの参考資料になります。失敗も含めて、手順書に反映していこうと思います。

まとめ

15年使ってきたメールサーバーの移行は、なかなか大きな作業です。

OSも変わりますし、クラウド上に新しい環境を作る必要もあります。メールの送受信やセキュリティの確認も必要です。

だからこそ、AIに相談しながら進めるだけでなく、AIにもまず予行演習をしてもらうことにしました。

AIは、最初から完璧な答えを出してくれる魔法の道具ではありません。間違えることもありますし、こちらの説明が足りなければ、見当違いの答えが返ってくることもあります。

それでも、エラーの原因を一緒に考えたり、手順を整理したりする相手としては、とても頼りになります。

本番作業を急がず、まずは安全な環境で何度も練習する。そして、自分でも内容を理解して、納得できる手順書を作ってから本番に臨む。

今回のメールサーバー移行は、そんな進め方で、焦らず少しずつ進めていこうと思います。

追記

2回目の予行演習、無事に終わりましたが、まだ、課題が見つかり、1時間30分ほどかかりました。

前回よりは格段にスムーズになってます!

この結果を踏まえAIの方でも、手順書修正をやってくれています。

3回目の予行演習は数日後に予定しており、

なんとか今月中の本番稼働を目指しております。

最後に

余談ですが、わたしはAIとの作業が一通り終わると、

「GOOD!ありがとう」とか

「素晴らしい!助かったよ」とか

最後に伝えるようにしています。

必要ないのかもしれませんが…(笑)

AIも、心なしか、素敵な挨拶を返してくれるような気がします。

AIコーディング

以前の投稿でも書いた「ミニオセロ」いくつかの機能追加をAIとやってみました。

追加機能

  • socket.ioのルーム機能を用いて、対戦ルームを1個限定から3個とした。
  • ルーム選択ポップアップの追加
  • 「あそび方」ポップアップの追加
  • bootstrapを用いて、レスポンシブに対応

AIとの開発、もっと使い込んでみたいと思います。

1. 対戦ルームに入室する

まず、対戦ルームに入室してください。入室すると、そのルームの対戦を観戦できます。

ルームは右上のハンバーガーメニュー(☰)→「ルーム一覧」から変更できます。

2. エントリーする

ルームに入ったら、ハンバーガーメニューの「エントリー」から名前を入力してゲームに参加します。

エントリーした順に並び、先頭の2人が対戦します(先頭=白、2番目=黒)。

3. 待機と対戦の流れ

  • 3番目以降の人は「待機中」になります。
  • 対戦が終わると、勝った人は先頭に残り、負けた人は待機列の最後尾に回ります。
  • 待機中の人は順番が繰り上がり、2番目まで来ると次の対戦に参加できます。

4. 対戦中の操作

対戦中は画面下に「パス」「まいった」ボタンが表示されます。

  • 「パス」… 手番を相手に渡します
  • 「まいった」… 降参します

5. 負けたら

負けると待機列の最後尾に回り、再び順番を待ちます。

AIサーバー構築

普段使いのノートPCにLM studio入れて使ってましたが…
思考中、めっちゃ重くなるのと…

やっぱり遅い!

と、言う事で、数年前に中古で買ってメイン機として使っていたMacPro Late2013(通称ゴミ箱)Xeon 12core ram:64GB ssd:1TB D700x2
アップルがIntelMacのサポートを打切り、新しいOSが入れられなくなったので
Ubuntuを入れてAIサーバとして利用しようと考えました。

最初はノートPC同様LM studio入れましたが、ubuntuの日本語入力に慣れないので
ollama & Open WebUIの構成で環境構築しノートPCからWeb経由でアクセスする事としたので、その備忘録です。

ちなみに手順もローカルLLMに相談しながらトライ&エラーを繰り返しました。

ローカルLLM作成手順

以下は、Ubuntu 24.04.4 を USB メモリからインストールし、SSH サーバー、Python 環境、Docker、Ollama、Open WebUI のセットアップを行う手順です。

1. Ubuntu 24.04.4 のインストール

  • Ubuntu 24.04.4のインストールに関してはこちらをご覧ください。

2. SSH サーバーのインストール

sudo apt install openssh-server
sudo systemctl status ssh
sudo systemctl enable ssh
sudo systemctl start ssh

ポート 22 の開放

sudo ufw status
sudo ufw allow 22
sudo ufw reload
sudo ufw status
sudo ufw enable

3. 日本語化

sudo apt update
sudo apt install -y language-pack-ja
sudo dpkg-reconfigure locales
# 以下を選択:
#   ja_JP.UTF-8 UTF-8
#   ja_JP.UTF-8

4. Python 環境の構築

python3 --version
pip3 --version
sudo apt install python3-pip
sudo apt install python3.12-venv
python3 -m venv venv
source venv/bin/activate   # (venv) で確認できる
# ディスエクト:
(venv)user@userName:deactivate
sudo apt install python-is-python3
python --version

5. Docker のインストール

sudo apt update
sudo apt install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
    -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

リポジトリの追加

echo \
"deb [arch=$(dpkg --print-architecture) \
signed-by=/etc/apt/keyrings/docker.asc] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" \
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo groupadd docker
sudo usermod -aG docker <ユーザー名>
newgrp docker sudo apt install docker-ce docker-ce-cli containerd.io \ docker-buildx-plugin docker-compose-plugin docker --version docker compose version

6. Ollama のインストール

# ダウンロードとインストール
wget https://ollama.ai/install.sh
sh ./install.sh
# 状態確認
sudo systemctl status ollama
# 外部からの接続を確認
sudo ss -napt | grep ollama
LISTEN 0 4096 127.0.0.1:11434 0.0.0.0:* users:(("ollama",pid=5449,fd=3))
# .serviceファイルの修正
sudo systemctl edit ollama.service
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
Environment="OLLAMA_ORIGINS=192.168.*,172.*"
# サービスを再起動して再度確認
sudo systemctl restart ollama.service
sudo ss -napt | grep ollama
LISTEN 0 4096 *:11434 *:* users:(("ollama",pid=5548,fd=3))
# モデルのインストール
ollama pull llama3:8b
# モデルの実行
ollama run llama3:8b
# モデルのアンインストール
ollama rm llama3:8b

確認:

$ ollama -v
$ ollama --version
$ systemctl status ollama.service

7. Open WebUI を Docker コンテナとして実行

docker run -d -p 3000:8080 \
    --add-host=host.docker.internal:host-gateway \
    -v open-webui:/app/backend/data \
    --name open-webui \
    --restart always ghcr.io/open-webui/open-webui:latest

e.g. コンテナに入るには:

docker exec -it <コンテナ名またはID> bash

 

ローカルLLM

2016年熊本地震以来、新型コロナの流行など…
色々ありすぎて放置していたサーバーも
なんとか新しいサーバーに引越し開始しました。

そして先日の令和8年熊本地震…

世の中はAIブーム

とりあえず…

サーバーの引っ越しついでに、Wordpressのバージョンアップ!

普段使いのノートPCにローカルLLMを入れ
AI君に「こんな事やりたいんだけど設定ファイル作って!」とか…

結構時間かかるので、その間は別件こなしながら
のんびりやっています。

カテゴリー: AI