There's typically three options to run with here.
A) Create a Virtual Private Network (VPN) connection -- Tools like LogMeIn's Hamachi are good for small-scale & private deals as the free version is limited to 5 computers on one virtual network. Once Hamachi is installed & set up between you & your friend, just load up the game & open it up to LAN.
Hamachi will handle the connection between your systems as if they're on the same network. The downside here is that the game world is only accessible while the hosting player is in-game, so your friend can't make changes in your world without you & vice versa.
B) Set up your own personal server -- This is a little more technically demanding, but you can download the basic ("vanilla") server software from https://minecraft.net/...oad/server for your own personal use. You will need to modify your router settings (namely the port-forwarding stuff) to make sure your friend can connect to your computer to the server. You will also want to make sure your connection & the computer that's running the server is strong enough to handle the load. Going to http://canihostaminecraftserver.com/ & punching your connection speeds as well as your RAM (REMINDER: multiply by 1024 to convert GB's into MB's) will help figure out how many people you can adequately support.
You'll also likely want to use a DNS service like https://www.noip.com/ so you have a domain name (like MyPrivateServer.GameServe.net ) instead of providing an IP address to make it easier to connect to. I will note that No IP's free services need to be renewed every 30 days, but that's the "cost" of getting a free service.
Please double-check your ISP's Terms of Service (TOS) & Acceptable Usage Policy (AUP) for anything regarding hosting private servers, since some ISP's may forbid this OR require an extra fee to allow it… As you don't want them cutting your connection for breaking their rules.
With this option, you'll need to keep the server software running at all times, but it will allow players (including yourself) to come & go whenever they please. So your friend can jump on when you're not around to do some stuff.
C) Purchase a Minecraft Realms (or a private server) subscription -- While this carries a subscription fee (~$8 / mo with Realms), this carries the least number of headaches as you're leaving the server hosting stuff to somebody else. All you have to do is to sign into the server (or realm) & you're good to go.
While there are other 3rd party Minecraft server services available, Minecraft Realms is the built-in option within Minecraft that has the simplest options & pricing. 3rd Party services can potentially be cheaper, but may have more restrictions & configurations to deal with… So you'll have to shop around with this.
Hope this helps!