IP地址管理:docker方式部署phpIPAMv1.7.3

最近做一个项目,需要实现"以方格图的形式,展示指定范围内的IPv4地址或IPv4地址段使用情况,支持IPv4规划使用情况的列表展示,支持导出统计报表文件。支持设置IPv6规划数据的展示方式为树形或表格"。在网上找了一下,发现phpIPAM能满足需求。

一、概述

phpIPAM(PHP IP Address Management)是一款开源的、基于 Web 的 IP 地址管理系统,专为高效管理 IPv4 和 IPv6 地址空间而设计。它提供直观的图形界面,帮助网络管理员对 IP 地址、子网、VLAN、设备、网络扫描、权限控制等进行全面管理。

核心功能概览

|---------------|------------------------------|
| 功能类别 | 主要能力 |
| IP 地址管理 | IPv4/IPv6 地址分配、状态跟踪、搜索 |
| 子网管理 | CIDR 划分、继承、可视化展示 |
| VLAN / VRF 管理 | 支持 802.1Q VLAN 和 VRF(虚拟路由转发) |
| 自动发现 | 网络扫描、Ping、SNMP、DHCP 日志分析 |
| 用户权限 | 多用户、角色控制、部门隔离 |
| API 接口 | RESTful API,支持自动化集成 |
| 高可用与审计 | 变更日志、邮件通知、LDAP/AD 集成 |

二、安装部署

2.1下载

docker pull mysql:8.4.5

docker pull phpipam/phpipam-cron:v1.7.3

docker pull phpipam/phpipam-www:v1.7.3

2.2编辑一个docker-compose.yml文件

复制代码
services:
  phpipam-web:
    image: phpipam/phpipam-www:v1.7.3
    ports:
      - "8081:80"
    environment:
      - TZ=Asia/Shanghai
      - IPAM_DATABASE_HOST=192.168.1.204
      - IPAM_DATABASE_USER=root
      - IPAM_DATABASE_PASS=root@12345
      - IPAM_DATABASE_NAME=ipam_db
      - OFFLINE_MODE=true
      - IPAM_FOOTER_MESSAGE=北京科技有限公司技术支持
    restart: unless-stopped
    volumes:
      - phpipam-logo:/phpipam/css/images/logo
      - phpipam-ca:/usr/local/share/ca-certificates:ro

  phpipam-cron:
    image: phpipam/phpipam-cron:v1.7.3
    environment:
        - TZ=Asia/Shanghai
        - IPAM_DATABASE_HOST=192.168.1.204
        - IPAM_DATABASE_USER=root
        - IPAM_DATABASE_PASS=root@12345
        - IPAM_DATABASE_NAME=ipam_db
        - SCAN_INTERVAL=1h
    restart: unless-stopped
    volumes:
      - phpipam-ca:/usr/local/share/ca-certificates:ro

volumes:
  phpipam-logo:
  phpipam-ca:

2.3执行

docker-compose up -d

2.4.通过界面进行安装

​​​​​​http://127.0.0.1:8081/

2.5.系统效果

三、参数说明

|----------------------------|-------------------------|--------------------|
| ENV | Default | WWW/CRON Container |
| TZ | "UTC" | ✅ ✅ |
| IPAM_DISABLE_INSTALLER | "false" | ✅ ❌ |
| IPAM_DATABASE_HOST | "127.0.0.1" | ✅ ✅ |
| IPAM_DATABASE_USER | "phpipam" | ✅ ✅ |
| IPAM_DATABASE_PASS | "phpipamadmin" | ✅ ✅ |
| IPAM_DATABASE_NAME | "phpipam" | ✅ ✅ |
| IPAM_DATABASE_PORT | 3306 | ✅ ✅ |
| IPAM_DATABASE_WEBHOST | "localhost" | ✅ ✅ |
| IPAM_BASE | "/" | ✅ ❌ |
| IPAM_TRUST_X_FORWARDED | "false" | ✅ ❌ |
| PROXY_ENABLED | false | ✅ ✅ |
| PROXY_SERVER | "myproxy.something.com" | ✅ ✅ |
| PROXY_PORT | 8080 | ✅ ✅ |
| PROXY_USE_AUTH | false | ✅ ✅ |
| PROXY_USER | "USERNAME" | ✅ ✅ |
| PROXY_PASS | "PASSWORD" | ✅ ✅ |
| IPAM_DEBUG | false | ✅ ✅ |
| OFFLINE_MODE | false | ✅ ❌ |
| COOKIE_SAMESITE | "Lax" | ✅ ❌ |
| IPAM_FOOTER_MESSAGE | "" | ✅ ❌ |
| IPAM_GMAPS_API_KEY | "" | ✅ ❌ |
| SCAN_INTERVAL | "1h" | ❌ ✅ |

  1. TZ - 时区设置

默认值: "UTC"

可覆盖: ✅

描述: 设置容器运行的时区(如 "Asia/Shanghai", "Europe/London")

  1. IPAM_DISABLE_INSTALLER

默认值: "false"

可覆盖: ✅

描述: 是否禁用 Web 安装向导页面。

安全建议:安装完成后应设为 "true",防止他人重新进入安装流程。

  1. IPAM_DATABASE_HOST

默认值: "127.0.0.1"

可覆盖: ✅

描述: MySQL 数据库主机地址。

  1. IPAM_DATABASE_USER

默认值: "phpipam"

可覆盖: ✅

描述: 连接 MySQL 的用户名。

✅ 可自定义,但需确保该用户已在 MySQL 中创建并授权。

  1. IPAM_DATABASE_PASS

默认值: "phpipamadmin"

可覆盖: ✅

描述: 对应用户的密码。

✅ 建议修改为强密码。

  1. IPAM_DATABASE_NAME

默认值: "phpipam"

可覆盖: ✅

描述: 要连接的数据库名称。

✅ 必须提前在 MySQL 中创建此数据库:

CREATE DATABASE phpipam CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

|-------------------|------------------|-------------------|
| 特性 | utf8mb3 | utf8mb4 |
| ✅ 支持最大字节数 | 3 字节 | 4 字节 |
| ✅ 支持 Unicode 范围 | 基本多文种平面(BMP) | 全 Unicode(包括补充字符) |
| ✅ 包含 emoji? | ❌ 不支持 | ✅ 支持 |
| ✅ 包含特殊符号? | ❌ 部分数学符号、表情符号不支持 | ✅ 支持 |
| ✅ MySQL 默认(v8.0+) | ❌ 已弃用 | ✅ 是默认字符集 |
| ✅ 推荐使用 | ❌ 不推荐 | ✅ 强烈推荐 |

  1. IPAM_DATABASE_PORT

默认值: 3306

可覆盖: ✅

描述: MySQL 端口。

✅ 一般无需修改,除非 MySQL 使用非标准端口。

  1. IPAM_DATABASE_WEBHOST

默认值: "localhost"

可覆盖: ✅

描述: 允许从哪个主机连接 MySQL。MySQL 用户权限中的 Host 字段会用到。

  1. IPAM_BASE

默认值: "/"

可覆盖: ✅

描述: 如果通过反向代理访问(如 Nginx),且路径不是根 /,比如想通过 http://example.com/ipam/ 访问,则设置:

  1. IPAM_TRUST_X_FORWARDED

默认值: "false"

可覆盖: ✅

描述: 是否信任反向代理传来的 X-Forwarded-* 头(如客户端真实 IP)。

✅ 如果使用 Nginx、Apache、Traefik 等反向代理,建议开启:

  1. PROXY_ENABLED

默认值: false

可覆盖: ✅

描述: 是否启用 HTTP/HTTPS 出站代理(用于 phpIPAM 自身访问外网)。

✅ 仅当服务器无法直连外网时才启用。

  1. PROXY_SERVER, PROXY_PORT, PROXY_USE_AUTH, PROXY_USER, PROXY_PASS

用途: 配合 PROXY_ENABLED=true 使用,定义出站代理服务器信息。

  1. IPAM_DEBUG

默认值: false

可覆盖: ✅

描述: 是否开启应用调试模式,输出 SQL 错误、日志等。

⚠️ 生产环境务必设为 false,避免敏感信息泄露。

  1. OFFLINE_MODE

默认值: false

可覆盖: ✅

描述: 是否禁用所有对外网络请求(如检查更新、CDN 资源加载等)。

✅ 在内网或无互联网环境中建议开启:

OFFLINE_MODE=true

  1. COOKIE_SAMESITE

默认值: "Lax"

可覆盖: ✅

描述: Cookie 的 SameSite 属性,增强安全性。

"Lax": 默认,较安全

"Strict": 更严格,跨站完全不发送 cookie

"None": 必须配合 HTTPS 使用

✅ 推荐保持 "Lax",除非有特殊单点登录需求。

  1. IPAM_FOOTER_MESSAGE

默认值: ""

可覆盖: ✅

描述: 在每个页面底部显示自定义文本,如版权信息、联系人等。

  1. IPAM_GMAPS_API_KEY

默认值: ""

可覆盖: ✅

注意: 该功能已在 v1.5.0 移除,被 OpenStreetMap 替代,因此这个变量已无效。

✅ 无需设置。

  1. SCAN_INTERVAL

默认值: "1h"

可覆盖: ✅

描述: 自动扫描网络设备的间隔时间(用于发现在线主机)。

支持值:

5m, 10m, 15m, 30m

1h, 2h, 4h, 6h, 12h

相关推荐
小闫BI设源码3 小时前
Docker Swarm主机编排
运维·docker·容器·容器编排·docker compose·依赖管理·多服务启动
Reicher3 小时前
Docker的介绍和使用
运维·docker·容器
zrande3 小时前
基于HTTP构建局域网内YUM网络源:详细操作指南(太细)
运维·构建yum网络源
cetcht88883 小时前
从 “有人值守” 到 “少人运维”:智能巡检机器人重塑配电室管理模式
大数据·运维·人工智能·机器人
Mr.45674 小时前
Linux&Windows环境下Nacos3.1.0详细安装配置指南:从零到生产就绪
linux·运维·服务器
峰顶听歌的鲸鱼4 小时前
30.Linux DHCP 服务器
linux·运维·服务器·笔记·学习方法
退役小学生呀5 小时前
二十一、DevOps:从零建设基于K8s的DevOps平台(二)
运维·docker·云原生·容器·kubernetes·devops
微风中的麦穗5 小时前
【MD编辑器Typora】Typora最新 V1.12.1版:轻量级 Markdown 编辑器详细图文下载安装使用指南 【办公学习神器之MD文本编辑器】
运维·typora·开发工具·md编辑器·markdown 编辑器·markdown文件·办公学习工具
violet-lz5 小时前
Linux文件系统调用:文件调用函数与exec系统函数详解与应用
linux·运维·服务器