Self hosted

Mastering phpIPAM Docker – The Ultimate Setup Guide

If you are looking for an excellent IP Address Management solution for your home lab or production environment, phpIPAM is excellent. It is free, open-source, and easy to configure using Docker or Docker Compose to get up and running quickly. Let’s look at mastering phpIPAM docker installation and see how you can have an excellent IP address management and network optimization tool.

What is IP Address Management (IPAM)?

IP Address Management (IPAM) is the process of planning, tracking, and organizing IP addresses and associated network resources within an organization. It helps administrators efficiently allocate and manage IP addresses, subnets, and DNS records, ensuring optimal network performance and avoiding address conflicts.

IPAM simplifies the management of IP address spaces, provides better visibility into network resources, and supports efficient troubleshooting and planning of network expansions. By using IPAM tools like phpIPAM, organizations can automate and streamline their IP address management processes for a more reliable and secure network infrastructure.

What is phpIPAM?

phpIPAM is an open-source web IP address management application designed to make managing IP addresses, subnets, and associated resources more efficient. With an easy-to-use web UI, API integration, and advanced configuration options, this powerful tool offers robust functionality for anyone looking to streamline their IP address management.

Its goal is to provide a light and simple IP address management application. The solution is Ajax-based using jQuery libraries, using PHP scripts and javascript and some HTML5/CSS3 features, so some modern browser is preferred to be able to display javascript quickly and correctly.

Setting Up phpIPAM with Docker

To get started with phpIPAM, you can easily set it up using Docker. Docker simplifies the installation process and allows for greater flexibility when managing multi-host containers. The first step is to pull the Docker image MySQL and create a MySQL instance. This MySQL instance will serve as the MySQL database backend for your phpIPAM application.

Docker Image MySQL Run

Pull the MySQL image and run the Docker image MySQL by entering the following command in your terminal:

docker pull mysql

After pulling the MySQL image, create a MySQL instance by running the following command:

docker run -e MYSQL_ROOT_PASSWORD=your_password -d mysql

Be sure to replace “your_password” with a specific root password of your choice. This will create a MySQL instance with the environment variable default for the MySQL password.

Deploying the phpIPAM Container

Next, you’ll need to pull the phpIPAM Docker image and deploy the phpIPAM container. Run the following command to pull the image:

docker pull phpipam/phpipam-www

Now, it’s time to deploy the phpIPAM container. Use the following command, making sure to replace “your_password” with the same MySQL password you used earlier:

docker run -d -p 80:80 -e MYSQL_ENV_MYSQL_PASSWORD=your_password --link your_mysql_container:mysql phpipam/phpipam-www

This command will link your phpIPAM container to the MySQL DB instance you created earlier for automatic database installation. The container will expose ports on the host system for HTTP traffic on port 80.

phpIPAM setup using Docker Compose

Using Docker Compose, you can use the following example code to configure phpIPAM and the required MySQL container.

version: '3'

services:
  phpipam-web:
    image: phpipam/phpipam-www:latest
    ports:
      - "80:80"
    environment:
      - TZ=America/Chicago
      - IPAM_DATABASE_HOST=phpipam-mariadb
      - IPAM_DATABASE_PASS=password
      - IPAM_DATABASE_WEBHOST=%
    restart: always
    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:latest
    environment:
      - TZ=Europe/London
      - IPAM_DATABASE_HOST=phpipam-mariadb
      - IPAM_DATABASE_PASS=password
      - SCAN_INTERVAL=1h
    restart: always
    volumes:
      - phpipam-ca:/usr/local/share/ca-certificates:ro
    depends_on:
      - phpipam-mariadb

  phpipam-mariadb:
    image: mariadb:latest
    environment:
      - MYSQL_ROOT_PASSWORD=password
    restart: always
    volumes:
      - phpipam-db-data:/var/lib/mysql

volumes:
  phpipam-db-data:
  phpipam-logo:
  phpipam-ca:

Replace your_root_password and your_phpipam_password with your desired passwords for the MySQL root user and the phpIPAM user, respectively.

Save this YAML code as docker-compose.yml in a directory of your choice. To spin up the containers, open a terminal, navigate to the directory containing the docker-compose.yml file, and run the following command:

docker-compose up -d

This command will create and start both the MySQL and phpIPAM containers, linking them as specified in the docker-compose.yml file.

Configuring phpIPAM

Once you have deployed the phpIPAM container, you can start configuring the IP address management application through the web UI.

Setting Up the MySQL Database

Access the phpIPAM web UI and enter your connection information. Note that the MySQL database, MySQL user, and MySQL password should match the ones you used when creating the MySQL instance. Next, provide the admin user password for the phpIPAM application. Note the following screens during the web-based setup process.

Integrating Google Maps API Key

You’ll need a Google Maps API key to display maps with subnet locations in the phpIPAM web UI. Visit the Google Maps API documentation to obtain your API key, and then enter it in the phpIPAM settings.

Advanced Configuration and Customization

phpIPAM offers a range of advanced configuration options for device-specific integration, multi-host container management, and more. Explore the available environment variables, Docker secrets, and store data options to optimize your IP address management setup.

Patching phpIPAM and Upgrading to New Versions

When a new version of phpIPAM is released, you can upgrade your existing installation by following the target release notes. Keep in mind that patching phpIPAM might require manual intervention, especially if you have made customizations or if there are significant changes between versions.

Securing phpIPAM with Docker Secrets

Docker secrets provide a secure way to store sensitive information, such as passwords, API keys, and other credentials. You can use Docker secrets to store the MySQL password, Google Maps API key, and other sensitive data for your phpIPAM instance.

Creating and Managing Docker Secrets

To create a Docker secret, use the following command:

docker secret create secret_name secret_file

Replace secret_name with a descriptive name for the secret and secret_file with the path to the file containing the sensitive information. Once you have created the secrets, you can manage them through the Docker Compose configuration.

phpIPAM Multi-Host Containers and Reverse Proxy Configuration

If your network setup requires running phpIPAM on multiple hosts or exposing it through a reverse proxy, you must configure the base URI, perform rewrites, and set up environment variables accordingly.

Configuring Multi-Host Containers

To run phpIPAM on multiple hosts, you need to modify the Docker Compose configuration to expose resources and ports on the host system. This will enable you to access the IP address management application across different hosts.

Setting Up Reverse Proxy

Configuring a reverse proxy for phpIPAM involves adjusting settings in your proxy server to forward requests to the phpIPAM container. This allows you to manage access, perform load balancing, and implement SSL encryption. Update the base URI and environment variables in the phpIPAM configuration to reflect the reverse proxy setup.

Device-Specific Integration and Customization

phpIPAM offers device-specific integration options for seamless interaction with network equipment and systems. You can extend the functionality of phpIPAM by writing custom modules, importing device data, or integrating with third-party applications.

Importing Device Data

To import device data into phpIPAM, use the web UI or API to upload CSV or XML files containing device information. This lets you quickly populate your IP address management application with relevant device data.

Third-Party Application Integration

Integrate phpIPAM with third-party applications using the built-in API. You can connect phpIPAM to network monitoring tools, configuration management systems, and other relevant applications by generating an API key and configuring the integration settings.

phpIPAM FAQs

  1. Q: What is phpIPAM, and how does it help with IP address management? A: phpIPAM is an open-source IP address management (IPAM) application that simplifies the process of planning, tracking, and organizing IP addresses and associated network resources within an organization.

  2. Q: How do I set up phpIPAM using Docker Compose? A: Create a docker-compose.yml file with the appropriate configuration for both the MySQL and phpIPAM containers. Then, run docker-compose up -d in the terminal to spin up the containers.

  3. Q: How can I secure sensitive information in phpIPAM using Docker secrets? A: Store sensitive information like MySQL passwords and API keys as Docker secrets. Create secrets using the docker secret create command and manage them through the Docker Compose configuration.

  4. Q: How can I configure phpIPAM to work with multiple hosts or a reverse proxy? A: Modify the Docker Compose configuration to expose resources and ports on the host system for multi-host setups. For reverse proxy configurations, adjust the settings in your proxy server to forward requests to the phpIPAM container and update the base URI and environment variables accordingly.

  5. Q: How can I keep my phpIPAM installation up-to-date and secure? A: Monitor the phpIPAM project source for new releases and updates, and plan upgrades by reviewing release notes and documentation for the target release. This ensures a smooth upgrade process with the latest security patches, bug fixes, and feature improvements.

Posts you may also like

Wrapping up

Mastering phpIPAM is essential for efficient IP address management and network optimization. By leveraging Docker to set up and configure phpIPAM, you can benefit from a more streamlined installation process and robust container management. With this powerful tool at your disposal, you’ll be better equipped to easily manage IP addresses, subnets, and other network resources.

Subscribe to VirtualizationHowto via Email 🔔

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Brandon Lee

Brandon Lee is the Senior Writer, Engineer and owner at Virtualizationhowto.com and has over two decades of experience in Information Technology. Having worked for numerous Fortune 500 companies as well as in various industries, Brandon has extensive experience in various IT segments and is a strong advocate for open source technologies. Brandon holds many industry certifications, loves the outdoors and spending time with family.

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.