Is there an app I can self-host that will let users upload stuff to my server? I need something where I can send a link to someone, and they can upload files & folders to my server (it doesn’t matter much to me where, as long as I can transfer them out to wherever I need later).
For example, I’m working to archive my parents’ family photos which right now live on a bunch of external HDDs. I need a way for my (non-technical) father to be able to upload a folder with potentially 10k plus files to my server. Because of his poor internet reliability, and the potentially large size, I need something that has resumability (so that if it fails, it can pick up where it left off and not re-start from scratch)
Security-wise, it would be nice to be able to only have uploads work when I send a link. Other than that, I’m not worried about malicious uploads or anything.
Does anyone have any recommendations for this? (Or, if nothing exists, would folks find this useful? I might end up making it if I can’t find it)
There is NextCloud. It has the possibility to create an upload link where people can upload stuff. We use it daily to receive stuff from our customers.
If you need the resuming part, you would be better off giving them a NextCloud account and share a folder. Their NextCloud app will sync it in the background and resume automatically.
Sounds like you could use an old fashioned FTP server
Would Syncthing work for you?
It’s not really the workflow I was imagining for this, but it might actually not be a bad idea. It might be a bit weird to use, but if I setup a “drop folder” on his machine that he could plop folders/files into then maybe it could work. Thanks!
Do you want the entirety of a directory system uploaded? If that’s the case you could use syncthing to just share the source directory. Then your dad wouldn’t have to move anything. Add in something like Tailscale or ZeroTier and you could control all the syncthing settings from the webui.
Yeah, I’m doing a test-run rn with syncthing and finding it pretty slow. Not sure why but it’s downloading files at like 100Kbps even though I know the upload speed of the network is much higher. I don’t have any bandwidth limits setup in syncthing so I don’t think that’s why…
That’s a bummer. Might be worth running an iperf test between your machine and your dad’s just to get a baseline speed. Could be something in between your two networks is routing slowly.
Glad to help 👍
Take a look at NextCloud - very easy to host and has great user management and sharing.
There are also a good amount of apps that are one click integration if you need to expand on functionality.
Thanks! I already use NextCloud and quite like it! Hover, I find their file upload feature to be lacking for this use-case. Sadly, it crashes/freezes the browser when I try to upload a folder with a lot of files (which is the main thing I’ll need to do with this)
Maybe install the nextcloud client on his PC and have him copy over the files there. The Nextcloud client has sync and resume functionality and you don’t have to watch it like a hawk. It just does it’s thing in the background.
Huh yeah that’s not a bad idea. I actually sort of dislike the nextcloud client normally (as I’d prefer it to not actually download the remote files, but act like a virtual filesystem). But in this case, it might actually work…
It acts as a virtual file system on Windows.
Oh, didn’t know that. Sadly I’m only on Mac & Linux
I believe it is able to do so on Windows because it uses the same system that OneDrive does, and is baked in to the OS. Not sure what the excuses are on MacOS and Linux.
But if you’re using Dolphin or Nautilus on Linux, does setting up a WebDAV network location not meet your needs?
That would work fine for linux, but the folks who need to upload stuff to me server can’t do that. They’re running Macos which doesn’t really support webdav well (and SMB is a mess too), plus they’re on an external network and I don’t want to have to get them on my VPN
If you’re doing the uploads yourself, the fastest solution for large files (e.g. compress into a tar/7z) will be rsync.
It requires minimal setup (ssh or vpn connection) and uses chunk transfer which is typically faster and can be resumed in event of connection failures
I love rsync, and also have been using croc a lot recently for similar stuff. It’s not really feasible for non-technical users who don’t even want to think about using a terminal though.
browser-based ‘clients’ with large directories and large numbers of files in a single multi-file upload are going to choke. you need binary bits on the parents’ end, such as a dedicated backup or sync utility.
if you could populate your server with their existing files using a physical drive, that would be better, and perhaps faster and easier, too–then a browser-based upload solution could probably handle the much smaller ‘updates’ of new stuff. have them consolidate all the existing files on one external (plus also on a second for a local backup). hell, you could do that bit via remote desktop and all they’d need to do is connect the drives and let you in. then somehow get one of those drives to you (ship, deliver, you pick up. whatever is feasible).
I use pingvin to share files for non technical ppl, but i don’t think it’s made for your case.
Maybe syncthing would work.
Filebrowser, it’s a basic web interface you can drag files into.
But if he needs to upload a lot of files like 10k plus, then that’s not going to work well. Instead Syncthing would be the best option. It will automatically handle resuming uploads, and you can set a bandwidth limit so it doesn’t cause bufferbloat from upload saturation.
When I’ve had need of collecting files from someone, I’ve normally thrown up a FileBrowser instance. Pretty sure it’s not resume-able though.
Down this way there be dragons.
Try out sharry. Sharry is a self-hosted file sharing web application.
It works pretty well for my use cases. I also like the alias feature, what is pretty much what you are searching for. The only thing I miss, is the possibility to download a share as a zip folder. But there is an open issue for it, so maybe it will be added in future (again).
Maybe Transfer.sh does what you need?
https://github.com/dutchcoders/transfer.sh/#dockerTransfer.sh seems cool enough, but I’d rather avoid having to coach non-technical folks on how to use the command line
I’m pretty sure it also has a web interface where you can drag and drop files
Edit: after a second look I can’t find anything like that. I swear I saw it somewhere…
There’s also Jirafeau, but I can’t speak for any continuation of uploads
I would just use a backup tool to get everything on the computer.