Thu, Dec 18 2014
Raspberry Pi

Outside access to an external hard drive by FTP

I always liked the idea of things like Google Drive. A place where I can store all my documents and photos and invoices and to-do lists that is always accessible from wherever I might be. But there is a very real danger with online cloud storage: you have no control over the machines that are storing your personal info.

Look at something like the now defunct Megaupload. Granted, many people used it as storage for files they may not have technically owned anyways, but it wasn’t solely a piracy haven. Near the end Megaupload was advertising that a bunch of Fortune 500 companies had premium Megaupload accounts

What happened to all those documents and files after the raid, and subsequent takedown, of Megaupload? Last I heard, the majority were still in limbo. Some companies who hosted Megaupload servers are still holding on to the servers with their data intact at the request of the United States Government, in order to be used as evidence against Kim Dotcom. I have heard some other companies simply wiped the servers in order to sell them to new clients. Megaupload account holders do not have access to their files anymore.

Sure, one could argue that Google is legit and this would/could not happen to such a large company. But what does Google (or any other cloud hosting service) really do to protect our data and our privacy? Do they keep backups somewhere? Do they snoop our content? Are they vulnerable to hackers who are looking for nude celebrity pictures? What if there is a natural disaster at one of the server facilities?

This is where an important technology rule comes into play: always keep multiple backups! That USB on your keychain can easily be lost, the hard drive on your laptop may get corrupted, the cloud hosting service you trust might shut down and your home may get robbed. Keeping multiple backups in different locations ensures you will still have access to your valuable data in case anything should happen.

I still heavily rely on Google Drive for keeping my documents ready and up to date. But occasionally I like to back up those older, no longer needed documents to a 2TB hard drive I keep at home. So, what if I need easy access to an old word document or a picture? Not much harder than plugging in the hard drive to my laptop and grabbing what I need. 

But like I said earlier, I like the convenience of having it accessible on the go. With that in mind, I set out to repurpose my Raspberry Pi. (Did I forget to mention I replaced it with an OUYA console? A Tegra 3 processor with Android beats the hell out of a Raspberry Pi as an HD media centre.) I envisioned a Google Drive copycat, where I could go to a URL, login, and be able to view and edit my documents. All while having them stored safely in my own home.

To achieve this I, surprisingly, was able to keep the latest Openelec image on the Raspberry Pi. I installed a fresh image, to make sure there were no lingering settings, preferences or files and set up my wifi connection during the set up.

What is great about Openelec is that it will auto-mount any external drives connected to it on boot by default, no need to worry about that. Next step was to assign the Raspberry Pi a static IP from the Openelec settings and then forward the appropriate ports on my router to the now static IP. Allowing your router to connect to the static IP is integral to connecting to the Raspberry Pi from anywhere in the world where you have internet access.

Openelec also has SFTP configured by default and for some use cases this could be all a person wants. But not me! I wanted Google Drive like access remember? I did some searching and found VSFTPD, which I installed to Openelec (how-to via so that it could open up direct FTP access on port 21.

There were some important bits of info in the comments, so if you are looking to implement this yourself, be sure to read through them! One in particular was necessary to get the whole system running: you will want to CHOWN the /storage/opt/vsftp folder and its contents. Then open vsftpd.conf and set “anonymous_enable” from yes to no. This is also important, unless you want your HDD open to anyone who knows the IP address to connect to. With that being done though, you will need to use the Openelec default username/password combination (usually root/openelec respectively).

Next I installed MonstaFTP on my server. My real server where I host my various websites for myself and clients as well as side projects like this, not the new one I am making with the Raspberry Pi. MonstaFTP is basically an FTP program wrapped up in website form. You can have a copy on your server and use it to connect to any FTP you know the details to. I modified my copy of it to be single purpose, only connecting to my HDD through my Raspberry Pi. So I hacked in the Openelec user/pass into the code and instead of a landing page requesting FTP details, I changed it to a landing page that requests simply a username and password. I made a few other modifications as well, pertaining to how files are viewed and edited. I also added ability for a few extra filetypes that do not come out of the box with MonstaFTP.

Now, I can login to my 2TB HDD from anywhere and browse, upload, download, view and edit all the files stored on there. So easy, I rarely even physically plug in to the HDD, regardless of the fact I am sitting right next to it!