This should be easy, right ?
That kinda how it already works, assuming your ISP knows what they’re doing and gives you at least a /64 range. IPv6 addresses are 128 bits long. The first 64 bits are the network address and are set by your ISP (or by both you and your ISP if they give you range larger than /64), and the last 64 bits can be whatever you want. Usually it’s randomly generated and changes periodically, as long as IPv6 Privacy Extensions are enabled (enabled by default on client OSes, but usually disabled by default on server-oriented OSes).
Note that IPv6 is different to IPv4 in that it does not use NAT. Each device on your network gets its own public IPv6 address. That doesn’t mean they’re exposed to the internet though; your router will still have a firewall to block incoming connections.
If you’re already getting an IPv6 prefix allocated, then you can randomise the second half of the address, most devices do this automatically with EUI-64.
Otherwise you pretty much just have to use some sort of IPv6 tunnel.
Use a free Hurricane Electric ipv6 tunnel. They’ve been the go-to “my ISP doesn’t handle ipv6” solution for years.
HE IPv6 tunnels and Cloudflare don’t get along well though, so you’ll hit issues with a bunch of sites. You’ll have a better experience with a $10/year VPS that has a routed /64 IPv6 range.