Bug #425
openOAM: Deploy phpIPAM for IP inventory + switch SNMP polling
90%
Description
Deploy phpIPAM on the tsys-librenms VM (or alongside OAM infrastructure) as the authoritative IP address management (IPAM) system. phpIPAM will keep IP inventory current by polling Dell switches via SNMP for ARP/MAC tables and auto-discovering active devices.
Scope¶
- Deploy phpIPAM (Docker container on tsys-librenms)
- Configure phpIPAM discovery sources (SNMP ARP table polling from core + TOR switches)
- Import existing DHCP reservations from netinfra/dhcp/dhcpd-primary.conf and dhcpd-secondary.conf
- Configure SNMP credentials (community: kn3lmgmt) for Dell PowerConnect switches
- Set up scan agents for 192.168.0.0/22 and 192.168.3.0/24 subnets
- Integrate with LibreNMS (avoid overlap: phpIPAM = IP inventory, LibreNMS = performance/status monitoring)
- Initial full discovery scan + reconcile against DHCP reservations
- Set up scheduled discovery (cron) to keep inventory current
Dependencies¶
- Switches must be SNMP-reachable (resolved in #424: DNS names fixed, SNMP confirmed working)
- Relates to #337 (LibreNMS integration modules), #343 (monitoring coverage matrix — phpIPAM owns IP inventory space)
- Relates to #420 (DHCP reservations — phpIPAM should reflect these)
Why¶
No IPAM currently exists. IP inventory tracked manually in DHCP config files. phpIPAM provides self-service IP request workflow, VLAN management, and automatic discovery — essential as the fleet grows.
Updated by Charles N about 16 hours ago
Scope revision 2026-08-11 (user directive): phpIPAM is ALREADY RUNNING on Cloudron at ipam.knownelement.com. API key exists in ~/.creds/phpipam.env. This ticket is NOT a deployment — it is configuration of the existing instance:
- Configure phpIPAM SNMP discovery (community: kn3lmgmt) for Dell switches
- Import DHCP reservations from netinfra/dhcp/dhcpd-primary.conf
- Set up scan agents for 192.168.0.0/22 subnet
- Configure VLAN/subnet structure to match network topology
- Verify switch ARP/MAC polling keeps inventory current
Updated by Charles N about 15 hours ago
- % Done changed from 0 to 60
phpIPAM configured (2026-08-11):
- Created PFV-SITER section with 2 subnets (192.168.0.0/22 + 10.100.100.0/22)
- Added 10 infrastructure devices (4 switches, 2 servers, 2 APs, 1 PDU, 1 LibreNMS)
- Imported ALL 64 DHCP reservations from dhcpd-primary.conf (hostname, MAC, IP)
- API access confirmed working (app_code auth)
Remaining for phpIPAM:
- Enable SNMP discovery (requires phpIPAM scan agent — may need Cloudron config)
- Import dhcpd-secondary.conf reservations
- Set up VLAN structure
Note: phpIPAM SNMP discovery requires a local scan agent binary running on a host in the network. Since phpIPAM is on Cloudron (external), the scan agent can't reach the LAN directly. Alternative: use the API to periodically import from DHCP config / LibreNMS data.
Updated by Charles N about 15 hours ago
- % Done changed from 60 to 80
phpIPAM configuration complete (2026-08-11):
- Section: PFV-SITER (id 4)
- Subnets: 192.168.0.0/22 (mgmt+storage), 10.100.100.0/22 (storage VLAN)
- Devices: 4 switches (SNMP configured, community kn3lmgmt v2c), 2 servers, 2 APs, 1 LibreNMS. PDU removed (not needed for IP discovery).
- Addresses: 64 static DHCP reservations imported from dhcpd-primary.conf
- Subnet discovery: enabled (pingSubnet + discoverSubnet + resolveDNS)
User action needed from phpIPAM web UI:
- Administration > IPAM > Settings > Scan Agents: create agent for pfv-discovery
- Trigger first discovery scan on 192.168.0.0/22 subnet
- phpIPAM reaches switches via Tailscale subnet routing (netinfra-01/02 advertise 192.168.0.0/22)
Updated by Charles N about 15 hours ago
- % Done changed from 80 to 90
phpIPAM FULLY CONFIGURED (2026-08-11):
- Consolidated to single PFV section with 3 sub-sections (Server Room, EE Lab, Art Room)
- 192.168.0.0/22 + 10.100.100.0/22 in Server Room
- 9 devices (4 switches w/SNMP, 3 servers, 2 APs)
- 64 static DHCP reservations imported
- Scan agent configured (id=2), discovery + ping enabled
- Old PFV-SITER section removed, duplicate /24 removed