v15.1

PacketFence 15.1 Released

May 20, 2026

PacketFence 15.1 introduces Kafka cluster support, EAP-PEAP via pfconnector to on-premises Active Directory, a bootable Debian 12 ISO installer, live Elasticsearch log viewer in the admin UI, switch observability, network device discovery, expanded admin roles, and ProxySQL master/slave failover.

New Features

Support Intelbras Switch and AP equipment — adds wireless and switch templates (#8836)

Additional admin roles — bypass roles and per-node bypass VLANs (#8717)

Read-only roles — per-role acls_enabled toggle (#8970)

SNMP port enable/disable from the admin UI (#7606)

SSO triggered on role change — admin UI toggle, applies on autoreg (#8881)

EAP-PEAP authentication via pfconnector to on-premises Active Directory — NTLM Auth API remote (#8700)

NetFlow UDP proxy — pfudpproxy forwards NetFlow/sFlow to a fingerbank-collector (#8909)

Switch observability — new switch_observability and switch_observability_acls tables (#8952)

Kafka cluster support — multi-broker setup script with iptables and keepalived (#8844)

sFlow, NetFlow and IPFIX support declarations on switch modules (#9017)

Standalone discovery of switches on the network — SNMP scan extracted to standalone module (#8979)

Network device discovery — new discover-network-device plugin (#8891)

Admin UI and API endpoints for sending password reset emails (#8877)

Captive portal local password authentication — unauthenticated password recovery flow (#8872)

Fortinet dACL chewer (#8879)

Bootable ISO installer for PacketFence — USB ISO builder with system-requirements check (#8818)

USB bootable ISO: self-contained PacketFence installer for Debian 12 — Makefile-driven offline installer (#9027)

Cloud NAC — git-crypt and git-sync added to pfdebian image for cloud config syncing (#8808)

Elasticsearch log integration — live logs viewer in admin UI (#8936)

Configurable SMTP sender name via alerting.smtp_name (#8871)

Enhancements

  • Upgrade to Caddy 2.11 (with bundled CoreDNS update) (#8961)
  • Tweak API restart timing to wait for the API to be ready (#9053)
  • Rename “Azure Active Directory”/“Azure” to “Microsoft Entra ID”/“Entra ID” in documentation (#9048)
  • Update Go to 1.25.5 (#8856)
  • Migrated Perl report/dynamic_report endpoint to Go — adds endpoint scaffolding and dev docs (#8843)
  • pfdhcp performance optimizations — fixes race conditions, goroutine leaks, missing error checks (#8803)
  • ProxySQL master/slave — multi-backend with read/write hostgroups for failover (#8931)
  • Faster loading of the switch page — role list virtualization and iterative pagination (#9009)
  • Optimize bulk_update for roles by reusing form and config store (#9001)
  • Fingerbank settings: single bulk_update PATCH replaces per-section loop (#9034)
  • Default parent role configurable via advanced.default_role_parent_id (#9011)
  • Add switch_id to locationlog and locationlog_history (#8904)
  • Reduce memory usage on role creation; respawn worker if memory > 1GB (#8947)
  • Reduce time in cache between Fingerbank lookups when API is unavailable (#8829)
  • Better UniFi controller detection using cookie-based reconnect (#8908)
  • Install Inverse GPG key during upgrade script (#8825)
  • Development support for Debian 12 — auto-install Node.js, prerequisite checks, idempotent setup script (#8805)
  • Cloud connector UI — install commands and updated hostname/install script (#9030)
  • Selective test execution in GitLab CI via the TEST_ONLY variable (#8857)
  • Virtualswitch-based Venom acceptance test suites — new venom executors, CI jobs, Ansible scenarios (#8907)
  • Generate switch summary as JSON for new PacketFence site CI flow (#8928)
  • Documentation overhaul — PF-by-Akamai references, app.css for HTML, Instrument Sans for PDF (#8944)
  • Pin clean-css-cli to skip npx confirmation when building documentation styles (#9015)
  • Include Triggers parameters in admin UI (#8885)
  • Use sharedutils.IsEnabled for consistency in Go services (#8892)
  • Test whether a User or Machine AD account is disabled — escape LDAP username, support bitwise filter operators (#8971)
  • Fingerbank data moved into the main PacketFence repo (#7994)
  • Update copyright headers for the new year (#8886)
  • Avoid unnecessary calls to the fingerbank api (#9046)

Bug Fixes

  • Fix parent_id semantics across role create, update, and admin UI — distinguish payload-omitted vs explicit-null (#9029)
  • Fix duplicate IP addresses returned from the pfdhcp pool (#9043)
  • Fix CoA timeouts when deauth is tunneled via pfconnector — omit LocalAddr on the connector path so the kernel picks the correct source IP (#9049)
  • EntraID source: fix device group lookup that stopped working since 15.x (#9044, #8812)
  • Reject empty or unparseable CA certificate on save to prevent RADIUS EAP from silently breaking (#9042)
  • Fix SSO portaltoken validation — use HttpdPortal URL and add X-Forwarded-For-PacketFence header (#8962, #8951)
  • Security event purge: batch by 100 nodes and fix SQL syntax (#8740, #7293)
  • Install tcpdump for Go unit tests on EL8 (#8981, #8978)
  • Remove extra ports for management interface in iptables (#8946, #8945)
  • Fix _unitFileExists() for Docker via systemctl show; fix log string interpolation (#8939)
  • Use legacy GPG key for Samba 4.16 deployment in Vagrant (#8926, #8925)
  • Fix NTLM auth API service stop in Venom — use systemctl with graceful monitor shutdown (#8912)
  • Fix ProxySQL crash — calculate endBucket Go-side to avoid unsupported SQL (#8893, #8887)
  • Fix log levels in Go services — configstore, pfacct, pfconnector (#8884)
  • Replace %mgmtip% tag with the management interface IP in the Kafka pfconfig resource (#8882)
  • VLAN filter: return true when there is no condition (#8869, #8842)
  • Use the same method everywhere to find the next certificate serial number, in a transaction (#8868, #8855)
  • Queue ansible configuration generation job to avoid delay (#8866)
  • Move pfconnector installation to its own preseed file (#8865, #8702)
  • More advanced filter to catch the DHCP packet (#8858)
  • Fix pfflow job hanging when Kafka is unresponsive at startup (#8849)
  • Fix portal preview in cloud — env-driven config, drop pf-apache-wrapper (#8838)
  • Only manage systemd units starting with packetfence-xyz.services (#8834)
  • Remove duplicate scroll handler on material page search (#8833, #8832)
  • Retry Kafka connection until Kafka is up and running (#8824)
  • Allow fingerbank-collector port through iptables on RADIUS interfaces (#8820)
  • Fix ISO build — update to latest Debian 12, move PF repo setup to a script (#8819, #8817)
  • Fix table view when reloading in the middle of a page (#8807)
  • Ensure /usr/local/pf/conf/system_init_key is created in package preinst (#8571)
  • Fixes for OpenAPI spec — missing $ref, ConfigInterfaceVlan (#8840)

Security Updates

  • Bump github.com/coredns/coredns from 1.14.1 to 1.14.3 (#8942, #9028)
  • Bump github.com/jackc/pgx/v5 from 5.8.0 to 5.9.2 (#9006, #9018)
  • Bump github.com/smallstep/certificates from 0.26.1 to 0.30.0 (#8848, #8954)
  • Bump google.golang.org/grpc from 1.79.1 to 1.79.3 (#8953)
  • Bump github.com/buger/jsonparser from 1.1.1 to 1.1.2 (#8956)
  • Bump github.com/go-jose/go-jose/v4 from 4.1.3 to 4.1.4 (#8990)
  • Bump github.com/go-jose/go-jose/v3 from 3.0.4 to 3.0.5 (#8989)
  • Bump go.opentelemetry.io/otel/sdk from 1.40.0 to 1.43.0 (#8993)
  • Bump go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp from 1.40.0 to 1.43.0 (#8992)
  • Bump go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp from 1.40.0 to 1.43.0 (#8994)
  • Bump go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp from 0.16.0 to 0.19.0 (#8991)
  • Bump filippo.io/edwards25519 from 1.1.0 to 1.1.1 (#8927)

PacketFence 15.1 expands on the 15.x line with cluster-grade messaging via Kafka, EAP-PEAP authentication tunneled through pfconnector to on-premises Active Directory, a self-contained bootable Debian 12 ISO installer, and a live Elasticsearch log viewer in the admin UI. Operators also gain switch observability tables, a standalone network device discovery plugin, additional admin role types (bypass and read-only), and ProxySQL master/slave failover — alongside a broad set of performance, stability, and security improvements.

Upgrade Notes

Upgrading from previous versions is strongly advised. Please review the upgrade guide before proceeding.

Release Info

Version
15.1
Released
May 20, 2026
Type
Minor

Need Help Upgrading?

Our team can help you plan and execute your upgrade.

View Services