Old PC that can be on all the time.
If you dont have one and want dedicated hardware, I would recommend a used server, or something you can whitebox (like using as asrock rack mobo that takes a desktop ryzen but supports ecc memory)
Put proxmox on as the host OS, two ssd’s in raid 1 is good for a boot drive / VM storage drive. Raid 10 if you want real high performance, but probably unneeded.
Look for a case that has a SAS backplane, and then connect the backplane to a HBA card. Pass this card through to freenas for storage shares and stuff.
I recommend not virtualizing your router. So, if you want togoet away from Soho gear, either flash a Soho router with openWRT, or build a separate box for pfsense or opnsense. If you go that route, you will need a separate switch / access point. Unifi gear has a good balance of features and affordability, and can all be managed from a single ui (let’s say you have 3 switches and 2 access points… You dont need to go to 5 web UI’s, its all in one spot - and you can self host the web ui in proxmox)
I run freeipa internally, which handles all internal https certs (as well as nice things like handling non sudo auth so I can just ssh to machines from an already authed machine without a PW prompt, and doing ldaps for internal things that support it)
For external web, I have a single box running nginx as a reverse proxy thats web exposed. That nginx box has letsencrypt certs for the public web stuff. The nginx rp has the internal CA on it and will validate the internal https certs (no mullet SSL here!)
I also do different domains for internal vs external, but thats not a requirement for a setup like this