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

相关推荐
SelectDB13 小时前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
曲幽20 小时前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
XIAOHEZIcode2 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220703 天前
如何搭建本地yum源(上)
运维
武子康3 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
大树886 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠6 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质6 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工6 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
Alsn866 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker