So, you have several options here, depending on if you're "just" looking for VOIP or if you're also looking for Video Chat. I've listed a couple, but there are likely to be MANY more options.
For video chat, I've used Jitsi, which, when checked today (2021-03-02) has a self hosting guide on their Github repository. https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart
- [X] Self-hosted with port forwarding
- [X] FOSS (Apache licensed)
- [X] Cross-platform (uses a web browser and WebRTC)
- [X] GUI elements (uses a web browser and WebRTC)
- [X] Multiple people in one call
Matrix.org uses Jitsi as their embedded Video-Call software. In fact, the commonly suggested Ansible Playbook for deploying Matrix's reference home server also includes Jitsi as an optional install component. Matrix also has text chat, is decentralized and self-hostable. It was recently used to facilitate the online FOSDEM event, and is the chat platform for the Mozilla and KDE communities.
If you only want VOIP, I've used Mumble and it's server component Murmur before. While I've not installed Murmur recently, I know it can be installed as part of the Windows client, so let's check your list of requirements:
- [X] Self-hosted with port forwarding
- [X] FOSS (Appears to be BSD licensed? Either way the boilerplate is very small.)
- [X] Cross-platform (Windows, Mac, Linux from the project, 3rd party Android and iOS clients)
- [X] GUI elements (totally GUI - no web interface)
- [X] Multiple people in one call