How do you like to transfer large files between friends across the internet?
On occasion I find myself needing to send a file at least a few gigabytes in size to a friend across our slow ISPs but haven't found a satisfying solution. I usually end up creating a private torrent with the announce address of my own IP. Even though it's slow - it basically never reaches my max upload speed for some reason, it is at least resilient if there are ever any network glitches.
Does anyone else face this same challenge?
EDIT: Thank you for the awesome suggestions! I have some homework to do on these
Er, wait, are you using Syncthing for its intended purpose of syncing files across devices on your local network? And then exposing that infrastructure to the internet? Or are you isolating Syncthing instances?
It's very much a WAN solution too. I use it to push my files to a Pi Zero W that's 200 miles from my house. I use it as an off site store of my files. The Pi is connected as an untrusted device in Syncthing so that all files sit encrypted at rest.
I've been using it to sync devices over the internet for years. It's also how people use it to sync from say their desktop to their phones, remote server, etc.
If you watch your network firewall Syncthing does reach out to servers on the internet to help it find other devices so e.g. if you enter the other device's ID (example ABCDEFG-ABCDEFG-ABCDEFG-ABCDEFG-ABCDEFG-ABCDEFG-ABCDEFG-ABCDEFG) it can reach out over the internet to find that specific ID to pair with. I think Syncthing uses a sort of DHT resolver to find other devices, I know on my firewall I had to whitelist Syncthing's servers to make it work.
I was going to try to link you some references but their forums seem to have connection issues at the moment, you may want to search around later if you're interested how Syncthing works over the internet.
Super easy. Spin up an OpenVPN server, forwarding the right ports to your server. Now spin up an Apache server with the folder your file’s in as server root. Send the client config for your VPN to your friend, along with the local address of your HTTP server. Now they can install the OpenVPN client on their PC and download the file from your HTTP server. Once you’re done, tear down all your servers, and don’t forget to unforward the ports. Couldn’t be easier.
But for slower connections bittorrent is the best option by far because it doesn't care about interruptions, and verifies the data as it goes. Just gotta make sure you're port forwarding the client.
I literally just set up a container for Erugo for this exact thing. It worked perfectly and was super easy to do. It's just a self-hosted version of wetransfer. Could be helpful...
I'd go for syncthing over nextcloud for your specific usecase. Nextcloud isn't good for unreliable connections and they're sticking with the annoying decision of not supporting server to server synchronization.
My use case is a bit different than yours but still worth mentioning, I think; I have Sharry running in Docker and it makes sharing and receiving files super easy. All downloads and uploads are resumable so they work well even in unstable networks.
I host pingvin for people to send stuff to me. To send, usually I'll just move the file into a folder that exposed to Nginx with indexing and send that link. Otherwise I'll also just use my pingvin instance.