Déploiement de phpIPAM avec docker compose : Un bon tool pour une gestion efficace des adresses IP via l'ui et teraform
Introduction La gestion des adresses IP dans une infrastructure réseau peut rapidement devenir un casse-tête, surtout dans les environnements complexes et en constante évolution. phpIPAM (PHP IP…

Introduction
La gestion des adresses IP dans une infrastructure réseau peut rapidement devenir un casse-tête, surtout dans les environnements complexes et en constante évolution. phpIPAM (PHP IP Address Management) est un outil open source qui permet d’inventorier, organiser et gérer efficacement vos plages d’adresses IP, VLANs et sous-réseaux.
Dans cet article, nous allons voir comment déployer phpIPAM avec Docker Compose de manière simple, fiable et prête pour un usage en production.
1. Prérequis
Avant de commencer, il faut :
- Un serveur Linux (Ubuntu/Debian/CentOS ou autre)
-
Docker ≥ 20.x installé
-
Docker Compose ≥ 2.x installé
-
Un accès administrateur (root ou sudo)
2. Structure du projet
On va créer un répertoire dédié :
mkdir phpipam-docker && cd phpipam-docker
3. Fichier docker-compose.yml
Voici un exemple complet :
services:
phpipam-web:
image: phpipam/phpipam-www:v1.7.3
ports:
- "80:80"
environment:
- TZ=Europe/Paris
- IPAM_DATABASE_HOST=phpipam-mariadb
- IPAM_DATABASE_PASS=wGkz28z38UJktKDQqV
- IPAM_DATABASE_WEBHOST=%
restart: always
networks:
- phpipam-net
volumes:
- phpipam-logo:/phpipam/css/images/logo
- phpipam-ca:/usr/local/share/ca-certificates:ro
depends_on:
- phpipam-mariadb
phpipam-cron:
image: phpipam/phpipam-cron:v1.7.3
environment:
- TZ=Europe/London
- IPAM_DATABASE_HOST=phpipam-mariadb
- IPAM_DATABASE_PASS=wGkz28z38UJktKDQqV
- SCAN_INTERVAL=1h
restart: always
volumes:
- phpipam-ca:/usr/local/share/ca-certificates:ro
depends_on:
- phpipam-mariadb
phpipam-mariadb:
image: mariadb:10.6.12
environment:
- MYSQL_ROOT_PASSWORD=wGkz28z38UJktKDQqV
restart: always
volumes:
- phpipam-db-data:/var/lib/mysql
networks:
- phpipam-net
volumes:
phpipam-db-data:
phpipam-logo:
phpipam-ca:
networks:
phpipam-net:
external: true
4. Lancer le déploiement
Démarrez les conteneurs avec :
docker compose up -d
Vérifiez que tout fonctionne :
docker ps

5. Accéder à phpIPAM
Une fois le déploiement terminé :
-
Ouvrez un navigateur et accédez à : http://<IP_SERVEUR>:80
-
Suivez l’assistant d’installation phpIPAM :
-
Configurez la connexion à la base de données (phpipam-mariadb, user/pass définis dans docker-compose.yml)
-
Créez un compte administrateur
-
Finalisez l’installation
-



- Voir si les hosts sont online

6. Sécuriser l’installation
Pour un usage production :
- Mettre la variable d'environnement IPAM_DISABLE_INSTALLER=1 dans docker-compose.yaml
- Verrouillage de l’installateur et sécurise l’application.
- Celà evite d'ecraser l'installation à chaque redemarage des conteneurs docker
services:
phpipam-web:
image: phpipam/phpipam-www:v1.7.3
ports:
- "80:80"
environment:
- TZ=Europe/Paris
- IPAM_DATABASE_HOST=phpipam-mariadb
- IPAM_DATABASE_PASS=wGkz28z38UJktKDQqV
- IPAM_DATABASE_WEBHOST=%
- IPAM_DISABLE_INSTALLER=1
restart: always
networks:
- phpipam-net
volumes:
- phpipam-logo:/phpipam/css/images/logo
- phpipam-ca:/usr/local/share/ca-certificates:ro
depends_on:
- phpipam-mariadb
phpipam-cron:
image: phpipam/phpipam-cron:v1.7.3
environment:
- TZ=Europe/London
- IPAM_DATABASE_HOST=phpipam-mariadb
- IPAM_DATABASE_PASS=wGkz28z38UJktKDQqV
- SCAN_INTERVAL=1h
restart: always
volumes:
- phpipam-ca:/usr/local/share/ca-certificates:ro
depends_on:
- phpipam-mariadb
phpipam-mariadb:
image: mariadb:10.6.12
environment:
- MYSQL_ROOT_PASSWORD=wGkz28z38UJktKDQqV
restart: always
volumes:
- phpipam-db-data:/var/lib/mysql
networks:
- phpipam-net
volumes:
phpipam-db-data:
phpipam-logo:
phpipam-ca:
networks:
phpipam-net:
external: true
-
Changer les mots de passe par défaut dans docker-compose.yml
-
Utiliser un reverse proxy (NGINX, Traefik, Caddy) avec HTTPS et let's encrypt par exemple
-
Sauvegarder régulièrement le volume mariadb_data :
8. Automatiser la gestion de phpIPAM avec Terraform
Une fois phpIPAM déployé, on peut automatiser la gestion des sous-réseaux, VLANs et IPs grâce au provider Terraform lord-kyron/phpipam.
Cela permet de versionner et déployer votre plan d’adressage réseau comme du code (IaC – Infrastructure as Code).
9.1. Installer le provider lord-kyron/phpipam
Ajoutez dans votre configuration Terraform :
provider "phpipam" {
app_id = "test"
endpoint = "https://phpipam.example.com/api"
password = "PHPIPAM_PASSWORD"
username = "Admin"
insecure = false
nest_custom_fields = false
}
data "phpipam_subnet" "subnet" {
subnet_address = "10.10.2.0"
subnet_mask = 24
}
data "phpipam_first_free_address" "next_address" {
subnet_id = data.phpipam_subnet.subnet.subnet_id
}
resource "phpipam_address" "newip" {
subnet_id = data.phpipam_subnet.subnet.subnet_id
ip_address = data.phpipam_first_free_address.next_address.ip_address
hostname = "tf-test-host.example.internal"
description = "Managed by Terraform"
lifecycle {
ignore_changes = [
subnet_id,
ip_address,
]
}
}
Commentaires
Aucun commentaire pour le moment.