手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 Podman で phpIPAM を構築する

phpIPAM は IP アドレス管理用の Web アプリケーションです。Podman で動かす場合は、Web コンテナ、cron コンテナ、DB コンテナを 1 つの pod にまとめると、同じネットワーク名前空間で扱いやすくなります。

この記事では、Ubuntu 22.04 上の Podman で phpIPAM を検証用に起動し、MariaDB、phpIPAM Web、phpIPAM cron、永続化、HTTPS ポート公開、systemd 化の基本を確認します。

関連する記事

この記事で確認すること

  • phpIPAM を Podman pod として起動する構成
  • MariaDB、Web、cron コンテナの役割分担
  • データ永続化ディレクトリの作成
  • HTTPS ポート公開と初期画面の確認
  • pod 単位の systemd 化
参考書籍
参考書籍
Kubernetes 完全ガイド 第 2 版
コンテナ運用、Pod、永続化の考え方を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見る
このリンクは Amazon アソシエイトリンクです。

phpIPAM を Podman で動かす構成

phpIPAM は Web アプリケーション本体と DB が必要です。Podman pod を使うと、複数コンテナを同じ localhost 上で接続できます。

コンテナ役割確認対象
phpipam-mariadbphpIPAM 用 DB永続化、認証情報
phpipam-wwwWeb UIHTTPS 応答、DB 接続
phpipam-cron定期処理ログ、DB 接続

前提を確認する

Podman が導入済みで、現在のユーザーから rootless 実行できる状態を前提にします。

podman --version
podman info
podman pod ps

データ用ディレクトリを作成する

DB データをホスト側に残すため、永続化用ディレクトリを作成します。rootless 実行では、実行ユーザーが読み書きできる権限にします。

sudo install -d -m 0750 -o "$USER" -g "$USER" /opt/container/phpipam
install -d /opt/container/phpipam/mariadb
ls -ld /opt/container/phpipam /opt/container/phpipam/mariadb

Pod を作成する

phpIPAM の Web、cron、DB を同じ pod に入れます。外部公開はホスト側の 10000 番を pod 内の 443 番へ対応させます。

podman pod create \
  --name phpipam-pod \
  -p 10000:443
podman pod ps

MariaDB を起動する

DB コンテナを先に起動します。パスワードは検証用の例なので、実運用では十分に強い値へ変更します。

podman run -d --pod phpipam-pod \
  --name phpipam-mariadb \
  -e MYSQL_ROOT_PASSWORD='change-me-root' \
  -e MYSQL_DATABASE=phpipam \
  -e MYSQL_USER=phpipam \
  -e MYSQL_PASSWORD='change-me' \
  -v /opt/container/phpipam/mariadb:/var/lib/mysql:Z \
  docker.io/library/mariadb:10.11
podman logs phpipam-mariadb

phpIPAM Web を起動する

Web コンテナは同じ pod 内の 127.0.0.1 で MariaDB に接続します。ping やスキャン機能を使う場合は、必要な capability を検討します。

podman run -d --pod phpipam-pod \
  --name phpipam-www \
  --cap-add NET_RAW \
  --cap-add NET_ADMIN \
  -e IPAM_DATABASE_HOST=127.0.0.1 \
  -e IPAM_DATABASE_USER=phpipam \
  -e IPAM_DATABASE_PASS='change-me' \
  -e IPAM_DATABASE_NAME=phpipam \
  docker.io/phpipam/phpipam-www:latest
podman logs phpipam-www

phpIPAM cron を起動する

phpIPAM の定期処理用に cron コンテナも起動します。Web コンテナと同じ DB 接続情報を指定します。

podman run -d --pod phpipam-pod \
  --name phpipam-cron \
  --cap-add NET_RAW \
  --cap-add NET_ADMIN \
  -e IPAM_DATABASE_HOST=127.0.0.1 \
  -e IPAM_DATABASE_USER=phpipam \
  -e IPAM_DATABASE_PASS='change-me' \
  -e IPAM_DATABASE_NAME=phpipam \
  docker.io/phpipam/phpipam-cron:latest
podman logs phpipam-cron

起動状態を確認する

pod と各 container の状態を確認します。Web UI は自己署名証明書で応答する構成が多いため、検証では -k を付けて HTTP ヘッダーを確認します。

podman pod ps
podman ps --pod
curl -kI https://127.0.0.1:10000/

ログを確認する

初期設定画面が表示されない場合は、Web、cron、DB のログを分けて確認します。特に DB 接続情報の不一致は起動後に気づきやすいポイントです。

podman logs phpipam-www
podman logs phpipam-cron
podman logs phpipam-mariadb

ブラウザで初期設定する

ブラウザから https://ホスト名:10000/ にアクセスし、phpIPAM の初期設定を進めます。公開範囲を広げる前に、管理者パスワードと DB 接続が正しく設定されていることを確認します。

  • 初期パスワードは導入後すぐ変更する
  • 外部公開前に TLS 終端とアクセス制御を決める
  • DB データのバックアップ対象を明確にする
  • 検証用パスワードを運用へ持ち込まない

systemd unit を生成する

継続運用する場合は、pod 単位で systemd unit を生成します。rootless で運用する場合はユーザー unit として管理する方法も検討します。

podman generate systemd --new --name phpipam-pod > container-phpipam-pod.service
sudo install -m 0644 container-phpipam-pod.service /etc/systemd/system/container-phpipam-pod.service
sudo systemctl daemon-reload
sudo systemctl enable --now container-phpipam-pod.service
systemctl status container-phpipam-pod.service --no-pager

停止と削除

検証を終了する場合は、systemd unit を止めてから pod を削除します。DB データを残すか削除するかは別に判断します。

sudo systemctl disable --now container-phpipam-pod.service
podman pod rm -f phpipam-pod
podman pod ps
ls -ld /opt/container/phpipam/mariadb

運用時に見るポイント

phpIPAM は IP アドレス管理のデータを持つため、コンテナの起動だけでなく DB の永続化、バックアップ、公開範囲、認証情報の管理を合わせて確認します。

  • DB データの永続化先をバックアップ対象にする
  • Web UI の公開範囲を制限する
  • 検証用パスワードを残さない
  • cron コンテナのログも確認する
  • Podman の rootless / rootful のどちらで運用するかを決める

まとめ

Ubuntu 22.04 の Podman で phpIPAM を動かす場合、Web、cron、DB を 1 つの pod にまとめると、DB 接続を pod 内の localhost として扱えます。

構築後は、Web UI の応答、DB 永続化、cron の動作、systemd unit、バックアップ対象を確認します。検証用の値をそのまま運用へ持ち込まないことも重要です。

Ubuntu 22.04 Podman で phpIPAM を構築する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る