Things to consider. Your friend’s machine will need to have a real IPv6/IPv4 address (or else faff around with NAT), so yay for IPv6 !
Your friend’s machine will need to have a firewall hole set up so you can talk to it. Maybe vice versa.
Or you do the whole thing via an intermediary server, as mentioned earlier.
That kinda depends how literally you take peer to peer.
For example, I have a friend in Texas who we send files to each other all the time over XMPP using a proxy server. The proxy server is on my LAN.
So while its not exactly peer to peer, its effectively close enough as he sends directly to my local server and in turn that gets sent on to me over the LAN. Its a bit sketchy with larger file sizes though, or at least it WAS until I got FTTP where its suddenly MUCH more stable.
I'm not necessarily recommending doing it exactly that way, just highlighting that if you have a proxy server on one side, only that side needs to open ports and for all intents and purposes its peer to peer, as the man in the middle is still yourself.