I got this working! Here's the update in case it's useful for anyone else...
So in setting up NPTv6 in the web UI of OPNSense, I forgot to add the network notation at the end - that was it (duh, DUMMY!) I'm rolling my eyes at myself. I had originally put in the prefixes alone xxx:xxx:xxx:: and once I added xxx:xxx:xxx::/64 to both - bam. It started working. And that makes complete sense - it needs to know the network size to do the translation. It's funny there is no UI error in adding them without the /64 or /whatever. Sometimes it's the simplest of things...
Anyways - added appropriate firewall rules and it's a win. I know the server itself will prefer IPv4 for originating outbound because the server IP6 addresses are ULA, but that's fine. My web services I needed to answer on IP6 via the NPTv6 are now answering on the public translated IP6 addresses and it's all good.
So in setting up NPTv6 in the web UI of OPNSense, I forgot to add the network notation at the end - that was it (duh, DUMMY!) I'm rolling my eyes at myself. I had originally put in the prefixes alone xxx:xxx:xxx:: and once I added xxx:xxx:xxx::/64 to both - bam. It started working. And that makes complete sense - it needs to know the network size to do the translation. It's funny there is no UI error in adding them without the /64 or /whatever. Sometimes it's the simplest of things...
Anyways - added appropriate firewall rules and it's a win. I know the server itself will prefer IPv4 for originating outbound because the server IP6 addresses are ULA, but that's fine. My web services I needed to answer on IP6 via the NPTv6 are now answering on the public translated IP6 addresses and it's all good.
"