You don't need a public IP address to use p2p. Take a look at NAT traversal (eg in libp2p) which supports connection over TCP behind hike routers.
As for setup, once you have an autonomous network this performs the rule of a server, but using p2p nodes rather than a centralised server.
You can also authenticate with such a network without storing credentials on the network.
There is no reason you can't do away with servers. It is hard, but solvable.