I have a Samba mount at home (behind NAT, accessible via wireguard VPN), which works very well when accessing my home files when traveling (I travel a lot for work).
The only detail missing from this solution is sharing individual files with friends. I could give them access to my VPN, but that gives them access to everything, not just one thing I want to share. Also not all my friends are that tech savvy to manage connecting to a VPN.
What would be really great is to have a link-generator that punches a hole in the NAT to give them access to specific files. Are there any self-hosted solutions for that?
Onion share might be an option.
There are a few implementations of wormhole that might work.
If you’re ok with exposing a server to the internet, I’ve had good luck with sharry. https://eikek.github.io/sharry/
I’ve also had good luck running a Nextcloud instance to share with friends and family. But that is probably overkill here.
Just run a web server and expose the specific files you want to share through that?
Yea just draw the rest of the owl duh! 🙄

python3 -m http.server
If you have Docker hand you can use my project Directory Lister to do just this quick and easily (Docker docs).
Another vote for Syncthing. Might be a little too complicated for some though
You can consider using a Pikapods service for this. It’s dead simple to strand up a server when you need one.
https://www.pikapods.com/apps#storage
They have Gokapi and/or PrivateBin for just about a buck per month. You can turn the service on and off whenever you like. Good company to work with, IME, too.
Any particular reason why you can’t do something like host a Send instance instead? Better to treat “filesystem behind the network” and “files to share” as two different things: one is imanent, the other is punctual and sporadic.
I use Warpinator in combination with tailscale
Does this require the recipient to install and sign up for Tailscale?
Yes. Both parties have to share the device on which they want to run warpinator out to the tailnet of the other person. If you already use tailscale for other personal stuff I’d recommend you make an additional tailscale account, you can use to connect to other peoples tailnets, as on linux you can simply switch between them with ‘tailscale switch <id>’
Copyparty is easy, but if you can both set up syncthing, that makes it a breeze. I have a sibling that lives across the Pacific and last time they visited I set up syncthing on their laptop and when either of us wants to share something, we just drop it in that folder and wait a minute or two.
Dang. I never thought of using the discovery servers for that purpose. Creative! Just hope that one side doesn’t accidentally delete everything in there…
An ordinary sftp server. No reason for this to be web based.
https://xkcd.com/949/ has a few good hints.
I think this summarises all the other answers here
Are both parties online at the same time?
Maybe something like this is a good solution: https://github.com/magic-wormhole/magic-wormhole
It will figure out the fastest p2p connection and send even very large files without hassle.
https://file.pizza/ just because the pizza toppings URLs are fun and nasty
not self-hosted
Could be tho. Link to github (“fork me”) at the bottom.
file.pizza can be self hosted, https://github.com/kern/filepizza
I use Pingvin. You upload a file to it and it generates a link. Has expiration on the link.
You can allow anonymous uploads or not, give friends logins etc.
I have it locked down to just me with a login and I use it to let others download the files.
I tried it but Copyparty worked better, it has a massive community suddenly and tons of cool features that mostly stay out of the way unless you enable them
Last I checked it was abandoned and no one is maintaining a fork either.
Good to know, thanks.
Try nextcloud. It can generate links to files like this.
100% this. I have one running in a lxc, and I expose it to the world through a CloudFlare tunnel so I needn’t worry about dyndns or people probing my public IP.
Mind if u ask how much that cloudflare front end costs you a month for how many hits?
I’m on their free tier. If you don’t have a domain you need to get one, but CloudFlare does offer domain registration basically at-cost.
Because I’m on free, I can’t break down my analytics like a paid account can. i can say though that for the past 30 days my account has generated 886k requests and 47.56GB of bandwidth. I can’t tell you how much of that is nextcloud and how much is other stuff, like audiobookshelf, but hopefully this helps answer you.











