And UnrealIRCD still rocks. For a quick-and-dirty setup I've deployed ng-ircd but Unreal has always been my go-to for anything serious. If nothing else it can be useful as a backup or internal platform during the rare events that Slack or Discord are having an incident. The common complaint is a lack of channel text scrollback-log but it can be front-ended with TheLounge [1] or Convos [2]. The web front-ends can be scaled up in front of IRCD. I personally prefer to handle that with gnu screen or tmux and WeeChat [3] as that method can scale to tens of thousands of concurrent members on a single node vs. running reddis and some web framework.
For identities companies can restrict access using OpenLDAP or AD [4] Non-Free module
My favorite aspect of UnrealIRCD is how modular the 4.x+ versions became. One can enable only that which is needed making for a small memory footprint and smaller attack surface. The current version packaged on Alpine Linux is unrealircd-6.0.6-r1.