Email is one of the most versatile tools that has ever been invented, but one thing it is terrible at is transferring large files. You just can’t do it. It’s not designed for it. Various tech companies like Google have come up with their own solutions – but that involves having a Google account and trusting your private data to an American company (and their services are never really ‘free’, are they?).
To solve this, tools like WeTransfer have sprung up – and to be fair, it’s a great tool and easy to use. However, it’s not hosted in the EU, either. So, while there are EU based tools you can use to transfer large files to someone else, there are also tools you can use to self-host your files and only give access to specific people. You never have to put it on the open web. And with tools like this, you won’t have to have users and clients mess with SFTP or SSH logins and server addresses. You can just share a link to the file or give them a web login to share a file. Easy-peasy.
For this blog post, I found three self-hosted file-sharing solutions, and I’ll run through them below.
One special note – you could just as easily use Nextcloud or Owncloud to do this (and I have). However, both those tools are, shall we say, ’Swiss Army knives’ – they’re a bit bloated and overpowered for just sharing a few files privately. The tools I have found do one thing, and that’s share files (and crucially control access).
ProjectSend is my favourite WeTransfer clone so far. It’s a self-hosted application that you can use on any shared hosting account, VPS, or dedicated server (as long as it’s Linux). It’s free, open-source, and actively maintained. It works pretty well.
I installed it on my own dedicated server using Softaculous and had it running in five minutes. I was uploading test files quickly, and I was able to give access to third parties – publicly and privately. It’s a slick little app – you can even give clients/family/friends accounts, and they can upload and share files as well. There is a lot of control – and you can control every aspect of how the app is used.
Overall, I’m pretty happy with this little tool and will use it for my small business.
System requirements: ProjectSend is made in *PHP* and uses a *MySQL* database to store the information. Please see that your server has at least PHP 7.1 and MySQL 5 or better to run the software. ProjectSend runs on apache2 or Nginx. XSendFile module (apache) and X-Accel (Nginx) are supported. Make sure to have the following PHP modules installed: pdo, mbstring, xml, gettext, fileinfo, gd2.
FileRun is a little more sophisticated than ProjectSend. It has a lot more features. You can run it on your server but also run clients on desktop and mobile that will keep files in sync across devices (so it’s more like a Dropbox replacement). You can easily give users access to upload their own files, and you can share them externally over the open web (and expire the files and limits access as well).
There’s also a handy file request feature – file requests allow you to collect and receive files from anyone, right into your FileRun user account, with just a link (they don’t have to log in). It also integrates will several big tools like Google Docs, LibreOffice, and a ton more.
My favourite part about FileRun is that it has a really nice interface – it’s a pleasure to use and has been really thought through. I was also able to install this easily with Softaculous and was sharing files in minutes. It’s free to use in commercial or private instances, but they also have an enterprise version with support for a fee. It’s not open source.
System requirements: Any (Apache/IIS/Nginx/etc.), PHP Minimum version: 7.2 (Recommended: 7.3 or 7.4), ionCube loader v10.2+ extension, PDO MySQL extension, openssl extension, gd extension, mbstring extension, exif extension, xml extension, zlib extension, MySQL or MariaDB Minimum version: 5.7.
This one is much more basic. It’s a simple tool to upload files to your server, then it gives you a link to share it, or you can email it to who it needs to go to.
This is how they describe it:
It’s completely free and open source. It requires Docker to install and run, so I was not able to test my own server, but the demo on their website is functional, and it looks to do the job.
System requirements: Linux server running Docker, NodeJS or NPM.