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.
GNU social JP is a social network, courtesy of GNU social JP管理人. It runs on GNU social, version 2.0.2-dev, available under the GNU Affero General Public License.
All GNU social JP content and data are available under the Creative Commons Attribution 3.0 license.