phpIPAMをDockerで構築しLAN内IPアドレス管理を自動化する

Building phpIPAM with Docker for Automated LAN IP Address Management

* 本ページはプロモーションが含まれています

GoogleSpreadSheetで管理していたIPアドレス台帳が、機器の増加に伴って追いつかなくなってきた。
実際に使われているIPアドレスとシートの記載がずれることが増え、手作業での棚卸しにも限界を感じていたので、phpIPAMをDockerで起動してIP管理を移すことにした。


Dockerで起動する 

docker-compose.yml は次の内容にした。

version: '3.7'
services:
  phpipam-web:
    image: phpipam/phpipam-www:latest
    ports:
      - "8054:80"
    environment:
      - TZ=Asia/Tokyo
      - IPAM_DATABASE_HOST=phpipam-mariadb
      - IPAM_DATABASE_PASS=my_secret_phpipam_pass
      - IPAM_DATABASE_WEBHOST=%
 #     - IPAM_DISABLE_INSTALLER=1
    restart: unless-stopped
    volumes:
      - phpipam-logo:/phpipam/css/images/logo
    depends_on:
      - phpipam-mariadb
  phpipam-cron:
    image: phpipam/phpipam-cron:latest
    environment:
      - TZ=Asia/Tokyo
      - IPAM_DATABASE_HOST=phpipam-mariadb
      - IPAM_DATABASE_PASS=my_secret_phpipam_pass
      - SCAN_INTERVAL=1h
    restart: unless-stopped
    depends_on:
      - phpipam-mariadb
  phpipam-mariadb:
    image: mariadb:latest
    environment:
      - MYSQL_ROOT_PASSWORD=my_secret_mysql_root_pass
    restart: unless-stopped
    volumes:
      - phpipam-db-data:/var/lib/mysql
volumes:
  phpipam-db-data:
  phpipam-logo:

LAN内でしか使わない前提なので、http接続のままにした。
ポート番号は8054にした。


インストール 

docker compose up -d で起動した後、http://<ip>:8054 にアクセスするとインストーラーが立ち上がる。

  • install時は root / my_secret_phpipam_passIPAM_DATABASE_PASS に指定した値)でログインする
  • DBの設定はAutoを選ぶ
  • Site URLは http://<ip>:8054 を入力する

インストールが無事完了したら、docker-compose.ymlIPAM_DISABLE_INSTALLER=1 の行をコメントアウトから戻して有効にし、コンテナを再起動しておく。インストーラーを開いたままにしておくと不要にアクセスできてしまうので、済んだら閉じておく。


設定 

phpIPAMサーバ設定 

管理画面のサーバ設定で、以下を変更した。

項目設定値
Site Domaindomain.local から自分のドメインに変更
Default LanguageJapanese
Admin mail管理者のメールアドレス
DNSサーバー自DNS設定(Pi-hole)を指定

My Account 

サーバ設定とは別に、自分のアカウント設定側でもDefault LanguageをJapaneseに変更する必要がある。システム全体の言語設定とは独立した項目なので、ここを見落とすと自分だけ英語表示のままになる。


サブネット管理 

Customers のセクションからサブネットを追加した。

項目設定値
サブネット192.168.1.0/24
ホストの状態Yes
新ホスト発見Yes

利用手順 

追加したサブネットに対してスキャンを実行すると、実際に使用中のIPアドレスが検知され、自動で登録される。
あとは登録されたIPアドレスごとに、用途やホスト名などの詳細を記録していけばよい。

複数のIPアドレスをまとめて編集したい場合は、管理画面の「インポート/エクスポート」からエクスポートする。データセットを「IPアドレス」にし、エクスポートしたい項目にチェックを入れると、エクセルなどの表計算ソフトで編集できる形式で書き出せる。編集後はCSVで保存し、同じ画面からインポートすれば反映される。


まとめ 

GoogleSpreadSheetでの手作業管理から、phpIPAMのDocker構築へ移行した。
サブネットを登録してスキャンを回すだけで使用中のIPアドレスが自動検知されるので、台帳とのずれを気にする手間が減った。一括編集もCSVのインポート/エクスポートで済むので、既存のシートからの移行もそれほど手間にはならなかった。


See also