As someone who spends a lot of their time around computers, I find that most file storage options these days are either in the cloud or physical transfers. I take issue with both of these for different reasons (cloud for privacy, physical for convenience). In order to resolve this issue, I’ve decided to make my own remote file storage–combining the convenience of the cloud with the security (assuming I configure everything properly) of physical transfers, while also adding the potential for a great deal of customization. With that, lets hop on in!
In decreasing order, my priorities for this project are:
Remote Access File Storage
Obviously, this project is meant to replace my keychain full of USB Drives and my portable hard drive daily carry. As a result, I have to be able to securely access my files from anywhere in the world with an internet connection.
Whatever the final project build is, I would like it to be expandable so I can continue to add more features as I find new uses for it.
Ad Blocking + VPN
I’ve been interested in using a PiHole for a while now to block most ads on my network. Although I have uBlock origin on my laptop, I’d like to have a blanket solution to cover all devices and save me the trouble of configuring every new device that comes into the house. As a result, I’m going to explore the feasibility of implementing Pihole as a part of this project. I’m also going to look into adding a VPN as part of the Pihole as an option for adblocking + privacy on open networks when I’m out and about.
For many of the same reasons that I’m adverse to Google Drive, I’d like to get away from Gmail. A solution that allows me to host my email would be fantastic, and save me the trouble of adding yet more hardware to an ever-growing pile of ongoing projects requiring maintenance.
Kodi’s usefulness speaks for itself, and is another project I’ve been looking to implement as an open source method of organizing my media files. Obviously, this is more of a luxury than a necessity, but if I happen to find an option capable of running Kodi (especially one that allows other household devices to pull my media from a centralized source) then that would be fantastic.
Obviously, I could go out and buy individual machines for each of these functions, or even one machine to handle them all. However, I’m a poor college student and I like eating food other than Ramen occasionally, so I’m going to work only with what I have. My inventory is as follows:
- Mystery Desktop
An ~10 year old desktop that was lying around. I have no idea what the components are, so I’ll have to open it up and take a look. If this doesn’t run I’m gonna be severely crunched.
- Dell Inspiron 11 3000 Notebook
This could be useful for something, but it’ll have to be plugged in constantly and likely has an unfortunate juxtaposition of higher power draw than the Raspberry Pi’s and lower performance than the mystery desktop.
- Raspberry Pi Zero W
Possibly useful for the Pihole, but certainly not powerful enough to handle everything on its own.
- Raspberry Pi 2
On leave from any projects at the current time, meaning it’s free for whatever I need it for.
- Raspberry Pi 3B+
This is technically available, but I’d like to keep it reserved for the personal assistant I’m trying to install on it (Mycroft, if anybody is interested in that sort of thing).
- Various random connectors galore (anything I could think of that I might need is probably in there, except maybe a pair of powerline adapters).
Options for Implementation
Option 1) Full physical segregation
Given that I have four available devices and four items on my wish list, I could theoretically implement one item per device and leave it at that. However, not only does that seem like a waste of hardware, but it’s also significantly more difficult for me to work with in terms of long-term maintenance. I’d really prefer to avoid this option if at all possible.
Option 2) No physical segregation
Assuming the mystery box has not-terrible specs, I could probably implement all the features I’m looking just on it. The only issue with that approach is that if I’m tinkering with the box and something goes wrong, all of my services go down. This is especially an issue for the Pihole because if it goes down, my internet also goes down until I get it back up. Ideally I’d have a second Pihole as a redundancy, but that goes beyond the scope of this project.
Option 3) Some physical segregation
As noted above, it is critical that the Pihole doesn’t go down. Everything else, while annoying, is significantly more manageable (and if anything else goes down, I’ll still have internet to look up how to fix it). As a result, until I get a backup Pihole running it’s probably a good idea to segregate it onto different hardware. In the interest of preserving as much hardware as possible, I think it makes sense to keep all other (read: non-critical) components on the same machine.
In the interests of maximizing uptime and minimizing hardware usage, I think option 3 fits my situation best. My plan of action is below.
(Rough) Initial Plan of Action
- Install Pihole on Raspberry Pi Zero W
Because Pihole has such low system requirements, I’m going to delegate it to the Pi Zero as a set it and forget it mechanism for adblocking that is independent of any other tinkering I might do.
- Set up Debian on mystery desktop
Assuming the desktop is functional, I’ll install Debian on it to hopefully breathe some life into it. If Debian proves too taxing, I’ll look into more minimal operating systems.
- Get SSH up and running
Self explanatory, makes it significantly easier to work with the server.
- Figure out remote file transfer on local network
I’m not exactly sure what this will entail at the current time (I’d like to find an option that doesn’t require SSH so my girlfriend can use it too), but I’ll cross that bridge when I get to it.
- Install Email client of choice (Mailcow, most likely)
After a little more research to determine the exact method I’m using, I’ll install the necessary prerequisites for my email server and migrate my emails over from Gmail.
- Install Kodi
Configuration can happen later, I just need proof of concept on this one.
- Figure out port forwarding
Again, I’m not exactly sure how to handle this as of yet, but I’d like to figure out a secure way to access this server from anywhere in the world. We’ll see how manageable that is when we get to it.
And there you have it! Up next will be my installation report with Pihole on the Raspberry Pi. Stay tuned for more updates!