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.3ports:- "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-stoppedvolumes:- phpipam-logo:/phpipam/css/images/logo- phpipam-ca:/usr/local/share/ca-certificates:rophpipam-cron:image: phpipam/phpipam-cron:v1.7.3environment:- 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=1hrestart: unless-stoppedvolumes:- phpipam-ca:/usr/local/share/ca-certificates:rovolumes: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")
2. IPAM_DISABLE_INSTALLER
默认值: "false"
可覆盖: ✅
描述: 是否禁用 Web 安装向导页面。
安全建议:安装完成后应设为 "true",防止他人重新进入安装流程。
3. IPAM_DATABASE_HOST
默认值: "127.0.0.1"
可覆盖: ✅
描述: MySQL 数据库主机地址。
4. IPAM_DATABASE_USER
默认值: "phpipam"
可覆盖: ✅
描述: 连接 MySQL 的用户名。
✅ 可自定义,但需确保该用户已在 MySQL 中创建并授权。
5. IPAM_DATABASE_PASS
默认值: "phpipamadmin"
可覆盖: ✅
描述: 对应用户的密码。
✅ 建议修改为强密码。
6. 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+) | ❌ 已弃用 | ✅ 是默认字符集 |
✅ 推荐使用 | ❌ 不推荐 | ✅ 强烈推荐 |
7. IPAM_DATABASE_PORT
默认值: 3306
可覆盖: ✅
描述: MySQL 端口。
✅ 一般无需修改,除非 MySQL 使用非标准端口。
8. IPAM_DATABASE_WEBHOST
默认值: "localhost"
可覆盖: ✅
描述: 允许从哪个主机连接 MySQL。MySQL 用户权限中的 Host 字段会用到。
9. IPAM_BASE
默认值: "/"
可覆盖: ✅
描述: 如果通过反向代理访问(如 Nginx),且路径不是根 /,比如想通过 http://example.com/ipam/ 访问,则设置:
10. IPAM_TRUST_X_FORWARDED
默认值: "false"
可覆盖: ✅
描述: 是否信任反向代理传来的 X-Forwarded-* 头(如客户端真实 IP)。
✅ 如果使用 Nginx、Apache、Traefik 等反向代理,建议开启:
11. PROXY_ENABLED
默认值: false
可覆盖: ✅
描述: 是否启用 HTTP/HTTPS 出站代理(用于 phpIPAM 自身访问外网)。
✅ 仅当服务器无法直连外网时才启用。
12. PROXY_SERVER, PROXY_PORT, PROXY_USE_AUTH, PROXY_USER, PROXY_PASS
用途: 配合 PROXY_ENABLED=true 使用,定义出站代理服务器信息。
13. IPAM_DEBUG
默认值: false
可覆盖: ✅
描述: 是否开启应用调试模式,输出 SQL 错误、日志等。
⚠️ 生产环境务必设为 false,避免敏感信息泄露。
14. OFFLINE_MODE
默认值: false
可覆盖: ✅
描述: 是否禁用所有对外网络请求(如检查更新、CDN 资源加载等)。
✅ 在内网或无互联网环境中建议开启:
OFFLINE_MODE=true
15. COOKIE_SAMESITE
默认值: "Lax"
可覆盖: ✅
描述: Cookie 的 SameSite 属性,增强安全性。
"Lax": 默认,较安全
"Strict": 更严格,跨站完全不发送 cookie
"None": 必须配合 HTTPS 使用
✅ 推荐保持 "Lax",除非有特殊单点登录需求。
16. IPAM_FOOTER_MESSAGE
默认值: ""
可覆盖: ✅
描述: 在每个页面底部显示自定义文本,如版权信息、联系人等。
17. IPAM_GMAPS_API_KEY
默认值: ""
可覆盖: ✅
注意: 该功能已在 v1.5.0 移除,被 OpenStreetMap 替代,因此这个变量已无效。
✅ 无需设置。
18. SCAN_INTERVAL
默认值: "1h"
可覆盖: ✅
描述: 自动扫描网络设备的间隔时间(用于发现在线主机)。
支持值:
5m, 10m, 15m, 30m
1h, 2h, 4h, 6h, 12h